基于docker和ubuntu的spark集群搭建
先在网上下载含有spark的镜像,我的镜像名为 mycos
因为博主能力有限,所以该方法只针对有图形化界面的ubuntu用户
##打开命令行创建三个tab
点击弹出菜单的new tab
做这一步的原因有两个:
1.我需要通过镜像创建三个容器 一个master,两个slave
2.防止创建的容器IP相同
###创建容器
1.输入 sudo docker images 查看镜像名称
2.在第一个tab里创建容器cloud1,作为master
由四种颜色圈出来的有不同的意义
蓝色部分,是创造的容器的名称,这里我写的cloud2,但推荐第一个写cloud1,作为master.
红色部分,是加入IP到名称的映射。推荐在这里将172.17.0.3等价为cloud2
银色部分,同上。推荐在这里将172.17.0.4等价为cloud3
青色部分,同上。但这里推荐要将172.17.0.2等价为cloud1 .也就是说最后一个部分,必须将本容器名进行映射
2.在第二,三个tab里创建容器cloud2,cloud3,作为slave
方法同上,但是要特别注意:
当创建一个容器后,不要关闭。否则,创建的容器,ip会重复
可以进入容器后使用ifconfig命令查看
cloud1 必须为172.17.0.2
cloud2 必须为172.17.0.3
cloud3 必须为172.17.0.4
在这里插入代码片sudo docker run \
--name cloud2 \
-h cloud1 --add-host cloud1:172.17.0.2 \
-h cloud3 --add-host cloud3:172.17.0.4 \
-h cloud2 --add-host cloud2:172.17.0.3 \
-it mycos
###创建密钥
进入cloud1容器
sudo docker start cloud1
sudo docker attach cloud1
然后生成密钥
ssh-keygen -t rsa
一直按空格就可以
然后进入ssh目录
cd ~/.ssh
将密钥加入authorized_keys
cat ./id_rsa.pub >> ./authorized_keys
对cloud2,cloud3做同样的操作
退出cloud1
ctrl+d
然后
将cloud1的公共密钥复制到cloud2,cloud3的相同目录~/.ssh中
该步骤,先将cloud1的密钥放入宿主机的当前目录
sudo docker cp cloud1:/root/.ssh/id_rsa.pub ./
再从当前目录转移到cloud2,cloud3
sudo docker cp ./id_rsa.pub cloud2:/root/.ssh
sudo docker cp ./id_rsa.pub cloud3:/root/.ssh
在cloud2和cloud3里,将密钥加入authorized_keys
cat ./id_rsa.pub >> ./authorized_keys
###修改spark文件
先进入配置文件目录,根据下载的docker可能有所不同
cd ~/spark/dist/conf
cp slaves.template slaves
cp spark-env.sh.template spark-env.sh
执行这两个命令后,vim slaves
插入两个slaves的名字
然后vim spark-env.sh
加入master的名字
然后
cd …
cd sbin
bash start-all.sh
###检验成功,可以命令行输入jps
如果cloud1出现master
cloud2和cloud3出现worker,就说明成功了