大數據利器:Spark的單機部署與測試筆記
一、硬件環境
操作系統: ubuntu-13.04-desktop-i386
JAVA: jdk1.7
SSH配置: openssh-server
二、資源準備
什么是Spark?以下為Spark官網的一句話簡介:
Apache Spark™ is a fast and general engine for large-scale data processing.
Spark包資源下載地址:點擊進入下載頁面
我安裝的版本是:0.9.1版本,源碼包為:spark-0.9.1.tgz
Spark有以下四種運行模式:
-
local:本地單進程模式,用于本地開發測試Spark代碼
-
standalone:分布式集群模式,Master-Worker架構,Master負責調度,Worker負責具體Task的執行
-
on yarn/mesos:運行在yarn/mesos等資源管理框架之上,yarn/mesos提供資源管理,spark提供計算調度,并可與其他計算框架(如MapReduce/MPI/Storm)共同運行在同一個集群之上
-
on cloud(EC2):運行在AWS的EC2之上
Spark支持local模式和cluster模式,local不需要安裝mesos;如果需要將spark運行在cluster上,需要安裝mesos。
三、安裝部署
先把Scala和git裝好,因為之后的sbt/sbt執行的是使用spark自帶的sbt編譯/打包。
sudo apt-get update
sudo apt-get install scala
我們需要做的其實就兩步,解壓縮與編譯。
$tar -zxvf spark-0.9.1.tgz -C /home/hadoop/software/spark
$cd /home/hadoop/software/spark/spark-0.9.1
$sbt/sbt assembly
這一段時間等的會比較長,耐心些。
四、檢驗測試
Spark有兩種運行模式。
4.1 Spark-shell
此模式用于interactive programming,具體使用方法如下(先進入bin文件夾)。
$ ./spark-shell
出現如下信息:
14/05/10 14:18:23 INFO HttpServer: Starting HTTP Server
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 0.9.1
/_/
Using Scala version 2.10.3 (Java HotSpot(TM) Server VM, Java 1.7.0_51)
Type in expressions to have them evaluated.
Type :help for more information.
14/05/10 14:18:34 INFO Slf4jLogger: Slf4jLogger started
14/05/10 14:18:34 INFO Remoting: Starting remoting
14/05/10 14:18:34 INFO Remoting: Remoting started;
……
Created spark context..
Spark context available as sc.
然后輸入如下信息:
scala> val days = List("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
days: List[java.lang.String] = List(Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday)
scala> val daysRDD = sc.parallelize(days)
daysRDD: spark.RDD[java.lang.String] = ParallelCollectionRDD[0] at parallelize at <console>:14
scala> daysRDD.count()
在經過一系列計算后,顯示如下信息:
res0: Long = 7
4.2 Run腳本
用于運行已經生成的jar包中的代碼,如Spark自帶的example中的SparkPi.
$./bin/run-example org.apache.spark.examples.SparkPi local[3]
local代表本地,[3]表示3個線程跑。
計算結果如下:
Pi is roughly 3.1444
五、學習建議
在配置過程中看到他人給的一些建議,于是搜集起來供以后學習參考。
-
如何寫一些spark application?
多看一些spark例子,如:http://www.spark-project.org/examples.html,https://github.com/mesos/spark/tree/master/examples
-
遇到問題怎么辦?
首先是google遇到的問題,如果還是解決不了就可以到spark google group去向作者提問題:http://groups.google.com/group/spark-users?hl=en
-
想深入理解spark怎么辦?
閱讀spark的理論paper:http://www.eecs.berkeley.edu/Pubs/TechRpts/2011/EECS-2011-82.pdf
閱讀spark源代碼:https://github.com/mesos/spark