Docker搭建Spark集群,你学会了吗?|当前通讯
来源:千羽的编程时光    2023-06-12 10:08:05
docker搭建spark集群

有个小技巧:先配置好一个,在(宿主机上)复制scp -r拷贝Spark到其他Slaves。


(资料图片)

1.安装配置基础Spark

【在test-cluster-hap-master-01虚拟主机上】

将已下载好的Spark压缩包(spark-3.1.1-bin-hadoop-3.2.2-lbx-jszt.tgz)通过工具【XFtp】拷贝到虚拟主机的opt目录下:

2.通过脚本挂起镜像
cd   /opt/script/setup/spark
test-cluster-spk-master-01
#!/bin/bash #编写作者:千羽的编程时光cname="test-cluster-spk-master-01"#port1="8080"#port2="7077"log="/opt/data/"${cname}images="10.249.0.137:80/base/jdk-1.8:20210202"mkdir -p ${log}mkdir ${log}/logsmkdir ${log}/workmkdir ${log}/datamkdir ${log}/jars# docker run -d --net=overlay-net --ip ${ip} -p ${port1}:${port1} -p ${port2}:${port2} --name ${cname} --hostname ${cname} --privileged=true --restart=always docker run -d --net=host --name ${cname} --hostname ${cname} --privileged=true --restart=always \-v ${log}/logs:/usr/local/spark-3.1.1/logs \-v ${log}/work:/usr/local/spark-3.1.1/work \-v ${log}/jars:/usr/local/spark-3.1.1/jars \-v ${log}/data:/opt/data \${images} \/usr/sbin/init
test-cluster-spk-master-02
#!/bin/bash cname="test-cluster-spk-master-02"#port1="8080"#port2="7077"log="/opt/data/"${cname}images="10.249.0.137:80/base/jdk-1.8:20210202"mkdir -p ${log}mkdir ${log}/logsmkdir ${log}/workmkdir ${log}/datamkdir ${log}/jars#docker run -d --net=overlay-net --ip ${ip} -p ${port1}:${port1} -p ${port2}:${port2} --name ${cname} --hostname ${cname} --privileged=true --restart=always docker run -d --net=host --name ${cname} --hostname ${cname} --privileged=true --restart=always \-v ${log}/logs:/usr/local/spark-3.1.1/logs \-v ${log}/work:/usr/local/spark-3.1.1/work \-v ${log}/jars:/usr/local/spark-3.1.1/jars \-v ${log}/data:/opt/data \${images} \/usr/sbin/init
test-cluster-spk-slave-01
#!/bin/bash cname="test-cluster-spk-slave-01"#port1="8080"#port2="7077"log="/opt/data/"${cname}images="10.249.0.137:80/base/jdk-1.8:20210202"mkdir -p ${log}mkdir ${log}/logsmkdir ${log}/workmkdir ${log}/datamkdir ${log}/jars#docker run -d --net=overlay-net --ip ${ip} -p ${port1}:${port1} -p ${port2}:${port2} --name ${cname} --hostname ${cname} --privileged=true --restart=always docker run -d --net=host --name ${cname} --hostname ${cname} --privileged=true --restart=always \-v ${log}/logs:/usr/local/spark-3.1.1/logs \-v ${log}/work:/usr/local/spark-3.1.1/work \-v ${log}/jars:/usr/local/spark-3.1.1/jars \-v ${log}/data:/opt/data \${images} \/usr/sbin/init
[root@zookeeper-03-test spark]# ll总用量 4-rw-r--r--. 1 root root 1166 7月  28 17:44 install.sh[root@zookeeper-03-test spark]# chmod +x install.sh [root@zookeeper-03-test spark]# ll总用量 4-rwxr-xr-x. 1 root root 1166 7月  28 17:44 install.sh[root@zookeeper-03-test spark]#
3.上传spark安装包

在容器映射目录下:/opt/data/test-cluster-spk-slave-01/data

[root@hadoop-01 data]# pwd/opt/data

用Xftp上传包

这里需要上传两个,使用的是spark-3.1.1-bin-without-hadoop.tgz

但是需要将spark-3.1.1-bin-hadoop-3.2.2-lbx-jszt下的jars包移到/usr/local/spark-3.1.1/jars下

4.解压安装包
mkdir -p /usr/local/spark-3.1.1cd /opt/datatar -zxvf spark-3.1.1-bin-without-hadoop.tgz -C /usr/local/spark-3.1.1

编辑全局变量

vim /etc/profile

增加以下全局变量

export SPARK_HOME=/usr/local/spark-3.1.1   export PATH=$PATH:$SPARK_HOME/bin

即时生效

source /etc/profile
5.配置spark-env.sh
cd /usr/local/spark-3.1.1/confcp spark-env.sh.template spark-env.shvim spark-env.sh
export SPARK_MASTER_IP=test-cluster-spk-master-01export SPARK_WORKER_CORES=1export SPARK_WORKER_MEMORY=800m#export SPARK_DRIVER_MEMORY=4gexport SPARK_EXECUTOR_INSTANCES=2export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoopexport SPARK_LOCAL_DIRS=/home/hadoop/tmp/spark/tmp#定时清理worker文件 一天一次export SPARK_WORKER_OPTS="  -Dspark.worker.cleanup.enabled=true  -Dspark.worker.cleanup.interval=86400 -Dspark.worker.cleanup.appDataTtl=86400"export JAVA_HOME=/usr/local/jdk1.8export HADOOP_HOME=/usr/local/hadoopexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport SCALA_HOME=/usr/local/scalaexport PATH=${SCALA_HOME}/bin:$PATHexport SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=zookeeper-01-test:2181,zookeeper-02-test:2181,zookeeper-03-test:2181 -Dspark.deploy.zookeeper.dir=/usr/local/spark"

(4)配置workers

cp workers.template workersvim workers# 添加test-cluster-spk-slave-001
6.配置log4j.properties
cp log4j.properties.template log4j.propertiesvim log4j.propertieslog4j.rootCategory=WARN, console
7.复制到其他slave

(宿主机上)复制scp -r拷贝Spark到其他Slaves节点:

scp -r /usr/local/spark/spark-2.1.0-bin-hadoop2.7 root@slave-001-spark-dev:/usr/local/spark/scp -r /usr/local/spark/spark-2.1.0-bin-hadoop2.7 root@slave-002-spark-dev:/usr/local/spark/scp -r /usr/local/spark/spark-2.1.0-bin-hadoop2.7 root@slave-003-spark-dev:/usr/local/spark/

如执行命令出现出现问题时,请现在相应的Slave节点执行mkdir -p /usr/local/spark

复制到master-02时,使用start-mater.sh启动master-02

8.启动spark先启动两个master,然后启动slave节点
[root@test-cluster-spk-master-01 sbin]# ./start-master.sh starting org.apache.spark.deploy.master.Master, logging to /usr/local/spark-3.1.1/logs/spark-root-org.apache.spark.deploy.master.Master-1-test-cluster-spk-master-01.out[root@test-cluster-spk-master-01 sbin]# jps548 Jps492 Master[root@test-cluster-spk-master-01 sbin]# pwd/usr/local/spark-3.1.1/sbin[root@test-cluster-spk-master-01 sbin]#
主节点2启动完成
[root@test-cluster-spk-master-02 sbin]# ./start-master.sh starting org.apache.spark.deploy.master.Master, logging to /usr/local/spark-3.1.1/logs/spark-root-org.apache.spark.deploy.master.Master-1-test-cluster-spk-master-02.out[root@test-cluster-spk-master-02 sbin]# pwd/usr/local/spark-3.1.1/sbin[root@test-cluster-spk-master-02 sbin]# jps274 Jps218 Master[root@test-cluster-spk-master-02 sbin]#
从节点启动完成
/usr/local/spark-3.1.1/sbin/start-slave.sh test-cluster-hap-slave-001 test-cluster-hap-master-02:7077,test-cluster-hap-master-02:7077
主节点1启动完成9.验证

原本是访问http://10.8.46.35:8080 就可,但是我这里在配置镜像的时候,多了8080,导致这里访问不了。看日志可以知道,已经走向8081

所以http://10.8.46.35:8081/即可

主节点1

停掉主节点

主节点2

从节点成为ALIVE

从节点1

从节点1


10.遇到的坑包不兼容

这里遇到了许多问题,第一个是包不兼容,导致搭建两次失败

然后换了官方的包spark-3.1.1-bin-without-hadoop,启动还是有问题。

最后通过替换jars才成功。(使用spark-3.1.1-bin-hadoop-3.2.2-lbx-jszt下的jars)

ctrl + p + q 从容器退出到宿主机

done~

关键词:

相关阅读

Docker搭建Spark集群,你学会了吗?|当前通讯

docker搭建spark集群有个小技巧:先配置好一个,在(宿主机上)复制scp

2023-06-12

环球热资讯!直击近400家上市公司股东大...

岳洋合制图持股行权是中证中小投资者服务中心(下称“投服中心”)的主

2023-06-12

当前通讯!【机构调研记录】益民基金调...

个股亮点:公司专业从事医用内窥镜器械和光学产品的研产销,高清荧光腹

2023-06-12

古诗风李峤带拼音和音乐_古诗风李峤带拼...

1、风jiěluòsānqiūyè,解落三秋叶,néngkāièryuèhuā 能开二月花 guò

2023-06-12

离婚案件开庭审理需要什么材料

一、离婚案件开庭审理需要什么材料离婚案件开庭审理需要的材料如下:1

2023-06-12

453公交车路线图_453_天天新消息

1、如果按谐音的话可以理解为是我噻。2、按意思可以理解为,对于某一件

2023-06-12

中国网球协会发来贺信! 时快讯

11日,在王欣瑜和谢淑薇夺得法国网球公开赛女双冠军之后,中国网球协会

2023-06-12

美记:乌度卡想为火箭灌输防守心态 但...

近日,露天看台记者EricPincus撰文谈到了火箭新帅乌度卡。记者称,消息

2023-06-12

Java变量的命名规范

在Java中,变量的命名应遵循以下规范:1 使用驼峰命名法:变量名的第一

2023-06-12

全球今头条!陈力红楼梦歌曲14首mp3(陈...

导读1、这首《分骨肉》是唱探春远嫁的,87版红楼梦中由王立平谱曲,陈

2023-06-12

房产证可能会被“淘汰”?70年后的房子...

引言许多人为了得到“房产证”,辛辛苦苦地工作了10年或更久。毕竟,没

2023-06-11

环球新资讯:b2增驾a1需要什么条件多长...

大家好,小乐来为大家解答以上的问题。b2增驾a1需要什么条件多长时间,b

2023-06-11

广州发现两例!

广东省疾病预防控制中心消息,6月10日,广州市监测发现2例猴痘病例。病

2023-06-11

【世界热闻】韩国水产业界:福岛核污染...

随着日本福岛核污染水排海日期的临近,韩国第二大城市、位于东南沿海地

2023-06-11

孩子王拟收购乐友65%股权 进一步拓展北...

上证报中国证券网讯6月9日晚间,孩子王儿童用品股份有限公司(以下简称

2023-06-11

郑和下西洋路线图课件(郑和下西洋路线...

来为大家解答以上的问题。郑和下西洋路线图课件,郑和下西洋路线图这个

2023-06-11

红酒和杏仁能同食吗? 全球报道

能同食,红酒和杏仁是能同食的,我们在进行喝红酒的时候,大部分都是葡

2023-06-11

每日精选:阿尔卡拉斯:只有百分之一的...

”阿尔卡拉斯赛后说,“前两盘比赛打得非常非常激烈,强度很高,我开始

2023-06-11

国产最大盾构主轴承“破壁者”面世

国产最大盾构主轴承“破壁者”面世---人民网北京6月10日电(记者杨虞波

2023-06-11

家乡的风景作文400字(家乡的风景作文)...

1、3我的家一年四季都很美丽很美丽。2、春天,小草从地里慢慢地把小脑

2023-06-11