基於Vmware Workstation上的hadoop集羣搭建Spark集羣

        前一篇博客總結了如何在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

        

     

     






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章