Spark集羣部署

一.部署規劃

1.

假設有3臺虛擬機,主機名分別是spark-master,spark-worker1,spark-worker2,安裝操作系統(雲服務商已安裝中標麒麟7.4),分配IP
172.16.200.23 spark-master
172.16.200.24 spark-worker1
172.16.200.25 spark-worker2

2.

假設spark、java、scala的安裝目錄均爲/opt,將對應文件壓縮包放入文件夾,然後解壓。
則:
spark家目錄: /opt/spark/spark-2.4.3-bin-hadoop2.7
java家目錄: /opt/jdk/jdk1.8.0_121
scala家目錄: /opt/scala/scala-2.12.9
(目錄不同需修改配置文件地址,java、scala解壓即可,不需要安裝,以下步驟配置spark)

二.配置spark集羣,用戶爲root

1.

在3臺機器上關閉防火牆

systemctl stop firewalld.service
systemctl disable firewalld.service

2.

修改3臺機器設置主機名hostname

(1)spark-master機器

hostnamectl set-hostname spark-master

(2)spark-worker1機器

hostnamectl set-hostname spark-worker1

(3)spark-worker2機器

hostnamectl set-hostname spark-worker2

3.

在3臺機器的/etc/hosts文件中 添入以下主機名與IP對應關係
(不修改主機名則不需要添加)

172.16.200.23 spark-master
172.16.200.24 spark-worker1
172.16.200.25 spark-worker2

4.

測試集羣內機器是否可相互ping通

ping spark-master
ping spark-worker1
ping spark-worker2

5.

3臺機器互相配置免密登錄
下面以root用戶免密登錄爲例,共3臺機器node1,node2,node3
node1
進入root家目錄下,執行

ssh-keygen -t rsa

點擊多次回車會產生 .ssh目錄。查看 .ssh 目錄,會發現它下面生成了兩個 id_rsa , id_rsa.pub文件,在節點1上將公鑰(id_rsa.pub)拷貝到其它節點,包括本機

ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3

6.

複製conf下的slaves-template 到當前,複製爲slaves。同樣spark-evn.sh.template,spark-defaults.conf.template 也複製爲spark-evn.sh,spark-defaults.conf
配置spark-env.sh,在文件中加入以下配置:

export JAVA_HOME=/opt/jdk/jdk1.8.0_121
export SCALA_HOME=/opt/scala/scala-2.12.9
export SPARK_HOME=/opt/spark/spark-2.4.3-bin-hadoop2.7
export SPARK_MASTER_IP=spark-master

(如不修改主機名爲spark-master,則將最後一行中的sprk-master修改爲對應IP)

配置spark-defaults.conf,在文件中添加

spark.driver.memory 3g
spark.driver.maxResultSize 1g
spark.executor.extraJavaOptions -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
#spark.driver.extraClassPath=/opt/packages/jars/uxdbjdbc-4.2.jar
#spark.executor.extraClassPath=/opt/packages/jars/uxdbjdbc-4.2.jar
#一般4-8g
spark.executor.memory 3g
#一般2-4個
spark.executor.cores 2
spark.executor.instances 15
spark.logConf false
spark.task.cpus 1
#一般爲總cpu核數的2~3 倍
spark.default.parallelism 70

配置slaves,在文件中加入master和worker的IP地址

spark-worker1
spark-worker2

(如果master不做worker,則需要把master對應ip註釋掉)

配置/etc/profile,在文件中添加

export JAVA_HOME=/opt/jdk/jdk1.8.0_121
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export SCALA_HOME=/opt/scala/scala-2.12.9
export SPARK_HOME=/opt/spark/spark-2.4.3-bin-hadoop2.7
export PATH=$JAVA_HOME/bin:$SCALA_HOME/bin:$SPARK_HOME/bin:$PATH

並通過

source /etc/profile

使文件生效

7.

在spark-master通過scp命令拷貝jdk,scala,spark,/etc/profile到spark-worker1,spark-worker2機器上
(scp命令:scp -rf /etc/profiles worker ip地址:/etc)

8.

在spark-master機器上運行命令:進入spark的bin目錄,start-all.sh,啓動Spark,(stopt-all.sh,關閉Spark,)可在瀏覽器通過spark-master:8080訪問,如果master也作爲worker,則網頁上對應顯示有三臺worker.

發佈了14 篇原創文章 · 獲贊 20 · 訪問量 2326
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章