前一篇博客總結了如何在Windows 7上利用Vmware Workstation搭建Ubuntu kylin 14.04的hadoop集羣。Hadoop集羣搭建成功,距離Spark集羣就只有一步之遙了。因爲Spark框架本身就可以建立在Hadoop的hdfs基礎之上。
搭建Spark集羣,首先要安裝Scala,因爲Spark本身就是使用Scala語言開發的。不同的Spark 包,使用的Scala語言版本可能有所差異。而同一個Spark版本,可能因爲打包時基於的hadoop版本不同,而又有不同的版本,例如在Spark的Apache官網上,當選擇Spark 1.6.3版本時,打包的Hadoop版本有2.3,2.4和2.6三個:
選擇最新的Spark2.2版本,使用的Hadoop版本有2.7及以後和2.6兩種:
所以前面搭建hadoop集羣時,選擇的hadoop版本是2.7.4,而不是其它更新的版本,就是爲了與這個Spark的package中的hadoop版本相兼容。
同樣,不同Spark版本使用的Scala語言版本有有所差異,可以在Spark package下載後從其jars目錄中包含的scala的相關包的版本看出來,也可以根據Spark官網的指示,如上圖所說,從Spark 2.0開始,Spark is built with Scala 2.11 by default:
所以,選擇安裝的Scala版本爲2.11.11。
首先,在SparkMaster完成Scala語言的安裝。下載Scala-2.11.11.tgz,解壓後部署到/usr/lib/scala目錄,並修改~/.bashrc配置文件,添加SCALA_HOME變量,並把${SCALA_HOME}/bin加入到PATH中。安裝完成之後,命令終端輸入scala -version,應正確顯示scala的版本:
接下來安裝Spark,下載Spark-2.2.0-bin-hadoop2.7.tgz,解壓後部署安裝到/usr/local/scala目錄,並修改~/.bashrc配置文件,增加SPARK_HOME環境變量,並把
${SPARK_HOME}/bin加入到PATH中。然後配置Spark,進入 ${SPARK_HOME}/conf 目錄:
修改spark-env.sh.template,加入JAVA_HOME,SPARK_HOME,SPARK_MASTER_IP,SPARK_WORKER_MEMORY和HADOOP_CONF_DIR五個環境變量,另存爲spark-env.sh:
然後修改slaves.template,加入SparkMaster,SparkWorker1和SparkWorker2,配置集羣總共有三個worker節點,另存爲slaves:
SparkMaster配置完成後,可以用scp命令把Scala和Spark的安裝部署文件直接傳輸到SparkWorker1和SparkWorker2:
scp -r /usr/lib/scala root@SparkWorker1:/usr/lib/scala
scp -r /usr/local/spark root@SparkWorker2:/usr/local/spark
傳輸完成後,登錄SparkWorker1檢查,Scala和Spark文件夾都已成功複製過去:
同樣修改SparkWorker1的配置文件~/.bashrc,增加環境變量及修改PATH,然後命令行輸入scala -version,驗證Scala 版本,輸入Scala,進入scala REPL,輸入5*5,檢查Scala及Spark複製安裝正確:
同樣可以用scp命令從SparkMaster複製Scala和Spark的安裝部署到SparkWorker2,並修改配置文件,驗證Scala及Spark安裝配置正確。
接下來就可以啓動Spark集羣了。首先要啓動Hadoop集羣。到${HADOOP_HOME}/sbin目錄下,,/start-all.sh即可啓動Hadoop集羣。
hadoop集羣啓動完成後,在SparkMaster上,jps可以查看到啓動的進程,有NameNode和DataNode:
而在SparkWorker1和SparkWorker2上,則只有DataNode的進程:
Hadoop集羣成功啓動後,轉到${SPARK_HOME}/sbin目錄,執行./start-all.sh,啓動Spark集羣。啓動成功後,在SparkMaster上,會多了一個Worker進程:
同樣,在SparkWorker1和SparkWorker2上,也出現了Spark的Worker進程,表明Spark集羣啓動成功:
也可以到Spark集羣的Web界面去查看相應的Spark集羣信息,網址爲http://SparkMaster:8080:
可以看到,Spark集羣成功啓動,共有三個Worker。
還可以在SparkMaster上啓動Spark Shell,轉到${SPARK_HOME}/bin,執行spark-shell:
這時可以從Spark Shell的Web UI中獲取更多Spark Job和Spark Environment的信息,訪問地址爲:http://SparkMaster:4040: