- 機器部署
準備兩臺以上的Linux服務器,我這裏準備了5臺服務器,集羣思路大致如下:其中Zookeper是可選項,
- 下載spark安裝包
- 配置spark
進入到Spark安裝目錄
cd /home/ws/bigdata/spark-2.3.3-bin-hadoop2.7/
進入conf目錄並重命名並修改spark-env.sh.template文件
cd conf/
mv spark-env.sh.template spark-env.sh
vi spark-env.sh
在該配置文件中添加如下配置
export JAVA_HOME=/usr/java/jdk1.8.0_111
# 注意,這裏如果寫的是主機名,一定要有主機名的IP地址的映射
export SPARK_MASTER_IP=node1
export SPARK_MASTER_PORT=7077
保存退出
重命名並修改slaves.template文件
mv slaves.template slaves
vi slaves
在該文件中添加子節點所在的位置(Worker節點)
node2
node3
node4
node5
保存退出
將配置好的Spark拷貝到其他節點上(其他節點照做)
scp -r spark-2.1.0-bin-hadoop2.6/ ws2@node2:/home/ws2/data
Spark集羣配置完畢,目前是1個Master,3個Work,在node1啓動Spark集羣
未安裝Hadoop建議只啓動master進程
/home/ws/bigdata/spark-2.3.3-bin-hadoop2.7/sbin/start-master.sh
在work結點啓動
/home/ws2/bigdata/spark-2.3.3-bin-hadoop2.7/sbin/start-slave.sh node1:7077
啓動後執行jps命令,主節點上有Master進程,其他子節點上有Work進行,登錄Spark管理界面查看集羣狀態(主節點):http://node1:8080/
注:此時只打開了一個work結點
到此爲止,Spark集羣安裝完畢,但是有一個很大的問題,那就是Master節點存在單點故障,要解決此問題,就要藉助zookeeper,並且啓動至少兩個Master節點來實現高可靠,配置方式比較簡單:
- 運行第一個程序
在spark安裝目錄下有一個example,內置了一個可以運行的程序,利用蒙特·卡羅算法求PI,執行下列語句,其中100是算法的參數
bin/spark-submit --master spark://node1:7077 --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-2.3.3.jar 100
運行結果
2019-05-26 10:19:36 INFO DAGScheduler:54 - Job 0 finished: reduce at SparkPi.scala:38, took 7.568060 s
Pi is roughly 3.1417631141763116