Spark集羣配置 和 Spark HA 集羣配置 以及 Spark on yarn 模式

1. 安裝前說明

提供已編譯後的cdh版本的spark
鏈接: https://pan.baidu.com/s/1zhgBfp6bzKupnJU1EOzlxQ 
提取碼: n4fm 
博主的虛擬機的三個節點爲 hadoop01,hadoop02,hadoop03
安裝spark的目錄爲 /export/install/
上傳解壓包的路徑爲 /export/soft/spark-2.2.0-bin-2.6.0-cdh5.14.0.tgz

2. 配置spark

1. 上傳解壓

cd /export/soft
tar -zxvf spark-2.2.0-bin-2.6.0-cdh5.14.0.tgz -C ../install

2. 配置環境變量

// 1. 在 /etc/profile.d 目錄下創建一個spark.sh 文件用來配置環境變量
cd /etc/profile.d
vim spark.sh
//2. 在 spark.sh 文件中添加如下內容(路徑改爲自己的)
//也可以直接在/etc/profile文件中添加(不建議):
export SPARK_HOME=/export/install/spark-2.2.0-bin-2.6.0-cdh5.14.0
export PATH=$PATH:$SPARK_HOME/bin
// 保存退出然後分配到其它節點
scp  spark.sh hadoop02:$PWD
scp spark.sh hadoop03:$PWD
//刷新環境變量(每個節點都要執行)
source /etc/profile

注意: 配置完之後 hadoop/sbin 的目錄和 spark/sbin 可能會有命令衝突

衝突的命令:
start-all.sh 
stop-all.sh
解決方案(建議用第二種):
1.把其中一個框架的 sbin 從環境變量中去掉;
2.改名 hadoop/sbin/start-all.sh 改爲: start-all-hadoop.sh

3.修改spark 的 配置

1. 修改 spark-env.sh 文件
//進入spark 配置目錄
cd $SPARK_HOME/conf
//拷貝 spark-env.sh.template 文件
cp spark-env.sh.template spark-env.sh
//打開 spark-env.sh 文件
vim spark-env.sh
2. 在spark-env.sh文件中添加如下內容
#配置java環境變量
export JAVA_HOME=${JAVA_HOME}
#指定spark Master的IP 
export SPARK_MASTER_HOST=hadoop01
#指定spark Master的端口
export SPARK_MASTER_PORT=7077
3. 修改slaves 文件
//拷貝  spark-env.sh.template 文件
cp slaves.template slaves
//刪除 localhost
localhost
4. 在slaves 文件中添加要工作的節點(IP地址)
hadoop01
hadoop02
hadoop03
5. 分發到其它節點(hadoop01執行)
cd /export/install
scp -r  spark-2.2.0-bin-2.6.0-cdh5.14.0 hadoop02:$PWD
scp -r  spark-2.2.0-bin-2.6.0-cdh5.14.0 hadoop03:$PWD
啓動 和 關閉 spark 集羣
cd $SPARK_HOME/sbin
//啓動
./start-all.sh
//關閉
./stop-all.sh
查看web界面
//瀏覽器訪問如下路徑:
http://hadoop01:8080
//或者
http://192.168.100.100:8080

4. 測試

1. 創建words 文件(博主實在opt目錄下創建的)
//創建
cd /opt
vim  words.txt
//上傳到hadoop集羣
hadoop fs -put /aaa/exercise01/
//添加以下內容
hello me you her 
hello you her
hello her 
hello 
2. 集羣模式啓動spark-shell
$SPARK_HOME/bin/spark-shell --master spark://hadoop01:7077

3. 運行程序

運行的結果會生成到 /opt/output目錄
sc.textFile("hdfs://hadoop01:8020/aaa/exercise01/words.txt").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).saveAsTextFile("hdfs://hadoop01:8020/aaa/exercise01/output")
查看結果 1
hadoop fs -ll /aaa/exercise01/output

在這裏插入圖片描述

查看運行結果 2
hadoop fs -cat /aaa/exercise01/output/part-00000
hadoop fs -cat /aaa/exercise01/output/part-00001

在這裏插入圖片描述

3.配置Spark HA (必須有一個zookeeper集羣)

沒有zk集羣可以參考如下

zookeeper 的安裝及 啓動和關閉腳本

1.停止spark 集羣

$SPARK_HOME/sbin/stop-all.sh

2.修改改配置

1.修改spark-env.sh文件
//進入 spark 配置文件目錄
cd $SPARK_HOME/conf
//打開 spark-env.sh文件
vim spark-env.sh
//註釋掉 Master配置
# export SPARK_MASTER_HOST=hadoop01
//添加SPARK_DAEMON_JAVA_OPTS,內容如下:
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER  -Dspark.deploy.zookeeper.url=hadoop01:2181,hadoop02:2181,hadoop03:2181  -Dspark.deploy.zookeeper.dir=/spark"
//保存退出
:wq
2.參數說明
spark.deploy.recoveryMode:恢復模式
spark.deploy.zookeeper.url:ZooKeeper的Server地址
spark.deploy.zookeeper.dir:保存集羣元數據信息的文件、目錄。包括Worker、Driver、Application信息。
3.分發到其它節點
scp spark-env.sh hadoop02:$PWD
scp spark-env.sh hadoop03:$PWD

3. 測試

1. 啓動zk集羣博主直接用的腳本(自己修改)

zkstart-all.sh
沒有的話可以使用 zkServer.sh start 命令啓動
沒有腳本可以配置參考鏈接:
https://blog.csdn.net/hongchenshijie/category_9453806.html
2. 啓動spark 集羣
// 啓動spark (節點一運行)
$SPARK_HOME/sbin/start-all.sh
//在節點二單獨只啓動個master
$SPARK_HOME/sbin/start-master.sh
3.注意
  1. 在普通模式下啓動spark集羣

只需要在主節點上執行start-all.sh 就可以了

  1. 在高可用模式下啓動spark集羣

先需要在任意一臺主節點上執行start-all.sh
然後在另外一臺主節點上單獨執行start-master.sh

4.查看hadoop01和hadoop02

進入web,界面查看狀態可以觀察到有一臺狀態爲StandBy

http://hadoop01:8080/
http://hadoop02:8080/

在這裏插入圖片描述
在這裏插入圖片描述

5.先使用jps查看 master 進程 id

在這裏插入圖片描述

6. 使用kill -9 殺死master進程
kill -9 4781
7. 然後重新啓動節點一的master
$SPARK_HOME/sbin/start-master.sh
8. 刷新後再次查看web界面

可以看到節點一的狀態編程 standBy 了,節點二的狀態變成了alive,這就說明配置成功了
在這裏插入圖片描述
在這裏插入圖片描述

9. 測試向集羣提交任務
//1.集羣模式啓動spark-shell
$SPARK_HOME/bin/spark-shell --master spark://hadoop01:7077,hadoop02:7077
//2. 提交任務

sc.textFile("hdfs://hadoop01:8020/aaa/exercise01/words.txt").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).saveAsTextFile("hdfs://hadoop01:8020/aaa/exercise01/output2")
10.參看結果
hadoop fs -ls /aaa/exercise01/output2/
hadoop fs -cat /aaa/exercise01/output/part-00000
hadoop fs -cat /aaa/exercise01/output/part-00001

在這裏插入圖片描述
在這裏插入圖片描述

4. on yarn模式

官方文檔
http://spark.apache.org/docs/latest/running-on-yarn.html

1.安裝啓動Hadoop(需要使用HDFS和YARN,已經ok)

2.安裝單機版Spark(已經ok)

注意:不需要集羣,因爲把Spark程序提交給YARN運行本質上是把字節碼給YARN集羣上的JVM運行,但是得有一個東西幫我去把任務提交上個YARN,所以需要一個單機版的Spark,裏面的有spark-shell命令,spark-submit命令

3.修改配置

在spark-env.sh ,添加HADOOP_CONF_DIR配置,指明瞭hadoop的配置文件的位置

//打開配置文件
cd $SPARK_HOME/conf
vim spark-env.sh
//添加如下配置
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
//分發到其它節點(可以不分發)
scp spark-env.sh hadoop02:$PWD
scp spark-env.sh hadoop03:$PWD

修改完成之後如下
在這裏插入圖片描述

4. 提交任務到yarn

先進入 http://hadoop01:8088 yarn頁面
提交一下命令

$SPARK_HOME/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 2 \
--queue default \
$SPARK_HOME/examples/jars/spark-examples_2.11-2.2.0.jar \
10

刷新後看到任務就說明配置成功了
在這裏插入圖片描述

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