Spark基础概况
最近本人对各种分布式计算平台研究的比较火热,上周的时间简单了了解了Storm的用法,今天马不停蹄的开始了新的学习。同样是非常流行的分布式平台,Spark,跟Hadoop属于同类型的。Spark和Storm一样,作为最近才刚刚开源出来的一个项目,学习的资料相当少,大家都还在学习阶段,所以,我目前的学习的情况也只是限于比较粗糙的学习。
Spark是一个开源的通用并行分布式计算框架,由加州大学伯克利分校的AMP实验室开发,支持内存计算,(Spark也是以此出名的),多迭代批量处理,即席查询,流处理,和图计算等多种范式。Spark内存计算框架适合各种迭代算法和交互式数据分析,能够提升大数据处理的实时性和准确性。
学习Spark的第一步当然是安装Spark,在安装Spark的之前,必须从github上获取一个Spark的源码版本。Spark提供了基本源码包,和已经编译好的压缩包,如果笔友想要更深入的学习Spark,推荐自己下载源码进行编译。Spark将HDFS作为数据存储的介质,所以说,Spark为了和HDFS有交互,在编译源代码的时候,2者的代码版本需要一致。接下来就是部署Spark,部署Spark由很多方式:
(1).借助EC2上运行Spark,可能需要Amazon的账号
(2).用Chef部署Spark
(3).在Mesos上部署Spark
(4).用Yarn上部署Spark
(5).通过SSH部署Spark
在这些平台上的部署过程大同小异,具体细节就不说了,实话说,我也没有配置过。
这里隆重介绍一个“Spark shell”的东西,他是一个特别适合快速开发Spark原型程序的工具,同样可以帮助我们熟悉Scala语言。Spark shell的用法很简单,比如可以用来加载一个文件,将指定的文件中的每行作为输入的内容,每行的内容将会作为一个RDD(
Resilient Distributed Datasets分布式数据集)的一个数据单元加载Spark,(RDD在后面会频繁出现)。加载入Spark后,就可以进行一些Scala语句的处理了。下面是示例的加载文件的Scala代码:
scala> import spark.SparkFiles;
scala> val file = sc.addFile("spam.data");
scala> val inFile = sc.textFile(SparkFiles.get("spam.data"));
Spark shell虽然说比较好用,但是在代码持久化方面有所局限,而且还不支持java语言,所以需要一些别的方法来构建Spark作业。有下面的一些工具方法可以构建一个Spark应用:
(1).sbt(simple build tool),一个流行的Scala构建工具
(2).用Maven构建Spark作业
(3).用其他工具构建Spark作业
要想好好的利用Spark,光光构建一个spark应用还不够,还要能够提交你的作业,实时的与Spark进行系统交互。这需要我们起创建一个SparkContext实例,SparkContext的作用就是能够和Spark交互,并提交作业。用了SparkContext,就可以java语言的格式或是还是用Scala的方式。java和Scala共享了一些API,比如addJar(path),用于提交作业用的。提交的jar为将要运行的作业所依赖的包,这个和Hadoop是一样的。后面还有许多Spark比较稍稍深入的内容,下次再更新。