使用阿里云服务器通过docker搭建spark集群

参考文章:https://blog.csdn.net/qq_38234785/article/details/104168467

我采用的是阿里云服务器的centos,安装docker后,拉取Ubuntu镜像,配置好所需环境后commit为一个新的镜像ubuntu:spark,之后再docker run 三个ubuntu:saprk,进行搭建。

基本步骤都是按照参考文章来的,这里主要记录一下遇到的一些问题及解决方法。

ps:由于我是根据自己搭建时遇到的问题进行记录的,故排在前面的问题,解决方案可能只解决了当前问题,但仍有不对的地方。一定要看到最后。

问题一:压缩包下载

如果直接在ubuntu镜像运行的容器中wget所需的jdk、hadoop、scala、zookeeper、spark压缩包,下载速度会很慢。

解决方法:通过电脑在官网下载所需的压缩包,由于我是通过mobaxterm登录的阿里云服务器,可以直接将下载好的压缩包传到宿主机,然后通过docker cp将压缩包拷贝到容器内的/root/soft/apache/目录下。

问题二: 阿里云端口

由于参考文章使用的是VMware虚拟机,虚拟机中自带浏览器,可以登录spark的web界面。但我使用的阿里云服务器,只能通过自己电脑的浏览器进入。

解决方法:在阿里云实例的安全组中开启以下端口:
在这里插入图片描述

在docker run时记得-p开启端口

[root@fanb ~]# docker run -it -h master --name master -P -p 50070:50070 -p 8080:8080 -p 8081:8081 ubuntu:spark
root@master:/#

[root@fanb ~]# docker run -it -h slave1 --name slave1 -p 8082:8081 -p 4040:4040 ubuntu:spark
root@slave1:/#

[root@fanb ~]# docker run -it -h slave2 --name slave2 -p 8083:8081 -p 4041:4040 ubuntu:spark
root@slave2:/#

这样就能在自己的电脑浏览器通过 阿里云公网IP:对应端口 进入web页面

问题三:参考文章中有一些小错误

1

参考文章中在配置Hadoop的core-site.xml时最后一行应为

</configuration>

2

参考文章中一些脚本未给出绝对路径
eg:start-dfs.sh
只需改成:/root/soft/apache/hadoop/hadoop-3.2.2/sbin/start-dfs.sh

问题四:hadoop报错

ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no *HDFS_NAMENODE_USER *

由于出现这个问题时忘记记录了,在此给出解决问题的参考:
https://blog.csdn.net/weixin_46122692/article/details/112390906
删除线部分报错缺什么就添加什么。

除参考解决文章事例外我还添加了以下两条:

HDFS_JOURNALNODE_USER=root
HDFS_ZKFC_USER=root

问题五:jps命令

jps命令无法找到。

root@master:/# jps
bash: jps: command not found

解决方案:使Java的环境变量配置生效

root@master:/# source /etc/profile

但commit镜像之后仍然会出现这个问题,每次docker run 进入容器之后,都需要重新source /etc/profile 。

所以需要配置永久环境变量:

运行容器之后
vim /etc/bash.bashrc

在最前面添加;
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_291
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 

保存退出后,
root@85508e96f86c:/etc# source /etc/bash.bashrc
root@85508e96f86c:/etc# exit

再将此其保存为一个新的镜像
[root@fanb ~]# docker commit -m "zookeeper hadoop spark scala install" 85508e96f86c ubuntu:spark

问题六:8080端口被tomcat占用

浏览器通过 阿里云公网IP:8080 时无法访问,原因是8080端口被我之前搭建的tomcat所占用。

解决方法:通过修改 /root/soft/apache/spark/spark-3.1.2-bin-hadoop3.2/sbin/ 目录下的start-master.sh文件
操作方法:

vim start-master.sh

在vim命令模式下输入 /8080

if [$SPARK_MASTER_WEBUI_PORT= “” ]; then
SPARK_MASTER_WEBUI_PORT=8080 fi

找到这个,将8080修改为8001
保存退出即可

那么阿里云安全组则需添加8001端口
在这里插入图片描述
docker run master容器时,对应的-p端口也需要做出改变

[root@fanb ~]# docker run -it -h master --name master -P -p 50070:50070 -p 8001:8001 -p 8081:8081 ubuntu:spark
root@master:/#
  • 8001端口
    在这里插入图片描述

  • 8081端口
    在这里插入图片描述

  • 8082端口
    在这里插入图片描述

  • 8083端口
    在这里插入图片描述

问题七 :50070端口无法访问(暂未解决)

在这里插入图片描述解决方法:参考文章中的Hadoop是2.x版本,而我用的3.x版本,端口已经改为了9870.

找到hdfs-site.xml

root@ffbdfaa99ea0:~/soft/apache/hadoop/hadoop-3.2.2/etc/hadoop# vim hdfs-site.xml

将文件中之前配置的50070的地方全改为9870.
exit之后,将其commit为一个新的镜像。

[root@fanb ~]# docker commit -m "zookeeper hadoop spark scala install" ffbdfaa99ea0 ubuntu:spark2

之后docker run 时-p端口也得改一下

[root@fanb ~]# docker run -it -h master --name master -P -p 8001:8001 -p 8081:8081 -p 9870:9870 ubuntu:spark2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值