Spark 3.0.3集群安裝文檔
一、架構說明
Apache Spark 是專為大規模數據處理而設計的快速通用的計算引擎,Spark 是一種與 Hadoop 相似的開源集群計算環境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負載方面表現得更加優越,換句話說,Spark 啟用了內存分布數據集,除了能夠提供交互式查詢外,它還可以優化迭代工作負載。
Spark 是在 Scala 語言中實現的,它將 Scala 用作其應用程序框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,Spark 啟用了內存分布數據集,除了能夠提供交互式查詢外,它還可以優化迭代工作負載,其中的 Scala 可以像操作本地集合對象一樣輕松地操作分布式數據集。
192.168.10.62 node1
192.168.10.63 node2
192.168.10.64 node3
二、准備工作
2.1、Centos 7.9 安裝 192.168.10.62、63、64
- 安裝操作系統
- 配置網絡
yum search ifconfig
yum -y install net-tools
2.2、Jdk-8u301安裝
https://www.cnblogs.com/liugh/p/6623530.html
- Download jdk-8u301-linux-x64.tar.gz
- tar -zxvf jdk-8u301-linux-x64.tar.gz -C /usr/local/
- 配置環境變量
vi /etc/profile
- 測試
source /etc/profile
Java -version
- 同步安裝其他幾個服務器
2.3、Scala 下載、安裝
ScalaSDK只需要在Windows安裝即可
官方地址:https://www.scala-lang.org/download/scala2.html
2.4、spark下載
官方地址: http://spark.apache.org/downloads.html
spark-3.0.3-bin-hadoop2.7.tgz
注意:Note that, Spark 2.x is pre-built with Scala 2.11 except version 2.4.2, which is pre-built with Scala 2.12. Spark 3.0+ is pre-built with Scala 2.12.
2.5、zookeeper3.7
https://zookeeper.apache.org/doc/current/zookeeperStarted.html
http://zookeeper.apache.org/releases.html
三、Spark安裝
3.1、上傳文件
spark-3.0.3-bin-hadoop2.7.tgz
3.2、解壓文件
tar -zxvf spark-3.0.3-bin-hadoop2.7.tgz -C /export/server/
mv spark-3.0.3-bin-hadoop2.7 spark
3.3、修改權限
chown -R root /export/server/
chgrp -R root /export/server/
3.4、測試
1、 打開spark交互窗口: ./spark-shell
3、准備文件
vi /export/server/exdata/words.txt
- 執行WordCount
四、配置spark集群
4.1、集群規划
node1:master
ndoe2:worker/slave
node3:worker/slave
4.2、配置slaves/workers
進入配置目錄
cd /export/server/spark/conf
修改配置文件名稱
mv slaves.template slaves
vi slaves
4.3、配置master
進入配置目錄
cd /export/server/spark/conf
修改配置文件名稱
mv spark-env.sh.template spark-env.sh
修改配置文件
vi spark-env.sh
4.4、分發
將配置好的將 Spark 安裝包分發給集群中其它機器,命令如下:
cd /export/server/
scp -r spark root@node2:$PWD
scp -r spark root@node3:$PWD
分別修改權限
chown -R root /export/server/
chgrp -R root /export/server/
4.5、測試
Master
Slaves
4.6、啟動spark-shell 執行任務
/export/server/spark/bin/spark-shell --master spark://node1:7077
執行任務
4.7、spark管理界面
spark任務web-ui http://node1:4040/jobs/
master集群管理ui http://node1:8080
master提交任務的通訊端口 spark://node1:7077
五、配置Zookeeper集群
說明Node1、Node2、Node3做服務集群.
首先在node1上進行安裝,隨后分發到node2、node3節點上。
5.1、下載 zookeeper
官網下載地址:
http://mirror.bit.edu.cn/apache/zookeeper/
http://zookeeper.apache.org/doc/current/zookeeperStarted.htm
版本 :apache-zookeeper-3.7.0-bin.tar.gz
5.2、安裝JDK
由於zookeeper集群的運行需要Java運行環境,所以需要首先安裝 JDK
5.3、解壓 zookeeper
在 /export/server 目錄下新建 software 目錄,然后將 zookeeper 壓縮文件上傳到該目錄中,然后通過如下命令解壓。
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz -C /export/server
修改文件名
mv apache-zookeeper-3.7.0-bin zookeeper
5.4、修改配置文件 zoo.cfg
1、將zookeeper壓縮文件解壓后,我們進入到 conf 目錄:
2、cd /export/server/zookeeper/conf
3、cp zoo_sample.cfg zoo.cfg
4、修改 zoo.cfg 文件
5.5、創建 myid 文件
在 上一步 dataDir 指定的目錄下,創建 myid 文件
cd /opt/zookeeper/data
vi myid
5.6、分發
把zookeeper的安裝目錄同步到其他兩個機器上
scp -r zookeeper root@node2:$PWD
scp -r zookeeper root@node3:$PWD
分別在node2和node3上創建按myid文件
5.7、測試
啟動命令:
zkServer.sh start
停止命令:
zkServer.sh stop
重啟命令:
zkServer.sh restart
查看集群節點狀態:
zkServer.sh status
Node1:
Node2:
Node3:
六、Zookeeper+Spark實現高可用
5.1、啟動Zookeeper服務
zkServer.sh status
zkServer.sh stop
zkServer.sh start
5.2.修改配置
vi /export/server/spark/conf/spark-env.sh
注釋:
#SPARK_MASTER_HOST=node1
增加:
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node1:2181,node2:2181,node3:2181 -Dspark.deploy.zookeeper.dir=/export/spark-ha"
注意zookeeper安裝完后8080端口就被占用了,可能影響到master-ui的默認端口.
SPARK_MASTER_WEBUI_PORT=8090
5.3.分發配置
cd /export/server/spark/conf
scp -r spark-env.sh root@node2:$PWD
scp -r spark-env.sh root@node3:$PWD
5.4、測試
1、啟動zk服務
zkServer.sh status
zkServer.sh stop
zkServer.sh start
2、node1上啟動Spark集群執行
/export/server/spark/sbin/start-all.sh
3、在node2上再單獨只起個master:
/export/server/spark/sbin/start-master.sh
4、查看WebUI
七、執行任務
測試零個Master節點是否正常,node1上打開命令窗口
八、參考
7.1、spark官網
http://spark.apache.org/docs/latest/configuration.html#deploy
7.2、主機到從機的無密互通
https://www.jianshu.com/p/e180371f55a1
https://www.cnblogs.com/webnote/p/5787357.html
7.3、zookeeper 配置集群:
參考:https://www.jianshu.com/p/de90172ea680
官網:http://zookeeper.apache.org/doc/current/zookeeperStarted.html
https://www.cnblogs.com/ysocean/p/9860529.html#_label4
注意:集群過程中注意myid的配置,mid的路徑必須放在data的路徑下
7.4、 CentOS 7.9安裝配置Chrony同步系統時鍾
參考:https://blog.51cto.com/qiuyue/2344678