StandAlone集羣模式的介紹與部署
集羣角色介紹
Spark是基於內存計算的大數據並行計算框架,實際中運行計算任務肯定是使用集羣模式,那麼就需要了解spark自帶的standalone集羣模式的架構以及它的運行機制
stand alone集羣模式使用了分佈式計算中的master - slave模型
master是集羣中含有master進程的節點
slave是集羣中worker節點含有Executor進程
Spark架構圖如下:
Apache對spark架構的官方描述:http://spark.apache.org/docs/latest/cluster-overview.html
集羣規劃
節點1:master
節點2:slave/worker
節點3:slave/worker
修改配置並分發
- 修改spark配置文件
進入spark解壓路徑的conf目錄:cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf/
拷貝spark-env.sh.template並修改名稱爲spark-env.sh:cp spark-env.sh.template spark-env.sh
- 修改並添加配置
#配置java環境變量
export JAVA_HOME=${JAVA_HOME}
#指定spark Master的IP
export SPARK_MASTER_HOST=node01
#指定spark Master的端口
export SPARK_MASTER_PORT=7077
- 修改slave配置文件
拷貝並重命名slaves文件:cp ./slaves ./slaves
編輯slaves文件:vim slaves
node02
node03
- 通過scp命令將配置文件分發到其他機器上
scp -r /export/servers/spark node02:/export/servers
scp -r /export/servers/spark node03:/export/servers
啓動和停止
- 集羣啓動和停止
在主節點上啓動spark集羣:
/export/servers/spark/sbin/start-all.sh
在主節點上停止spark集羣:
/export/servers/spark/sbin/stop-all.sh
- 單獨啓動和停止:
在master安裝節點上啓動和停止master:
start-master.sh
|stop-master.sh
- 在master所在節點上啓動和停止worker:
start-slaves.sh
|stop-slaves.sh
啓動後訪問web界面查看:
http://node01:8080
測試
需求:使用集羣模式運行spark程序讀取hdfs上的文件並執行wordcount、
實現
集羣模式啓動spark-shell:
/export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/bin/spark-shell --master spark://node01:7077
運行程序:
sc.textFile("hdfs://node01:8020/wordcount/input/words.txt")
.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)
.saveAsTextFile("hdfs://node01:8020/wordcount/output2")
瀏覽器訪問(SparkContext Web UI)
http://node01:4040/jobs/
注意
- 集羣模式下程序是在集羣上運行的,不要直接讀取本地文件,應該讀取hdfs上的文件,因爲程序運行在集羣上,具體在哪個節點上我們運行並不知道,其他節點可能並沒有那個數據文件
- spark集羣模式的啓動
spark/start-all.sh
和啓動Hadoop集羣的啓動命令hadoop/sbin/start-all.sh
一致,爲避免和Hadoop的命令衝突,不建議配置spark的環境變量。