构建镜像
添加jdk引用(可以使用yum进行安装);
安装SSH
碰到一个问题,执行systemctl的时候发生了异常:
Failed to get D-Bus connection
解决这个问题的方式就是:
docker run --privileged -ti -e "container=docker" -v /sys/fs/cgroup:/sys/fs/cgroup centos /usr/sbin/init
这种启动方式将会导致操作系统重头启动,这个时候就会要求登录;牵涉到root密码问题,增加如下RUN指令首先密码重置;
echo "root:rootpwd" | chpasswd
之所以要这样处理可以算是centos7的一个bug吧(尽管这个bug是开始之初就公布出来的,可以在github的官网上面看到):正常启动docker无法使用systemctl,因为systemd采用的是fakeSystem;所以各种操作能够在Dockerfile中实现就在dockerFile中实现,不要再docker start(run)之后,再进入到里面的命令行来敲击“systemctl”。从实际情况来看-v后面部分似乎不需要指定也是可以的。
以下是dockerifle核心内容:
FROM daocloud.io/library/centos COPY spark-2.2.0-bin-hadoop2.7.tgz /opt COPY jdk1.8.tar.gz /opt RUN yum -y install openssh-server openssh-clients RUN echo "root:root" | chpasswd RUN systemctl enable sshd
这里制作启动镜像,最好首先制作一个centos7-patch版本,安装上lsof,ssh,jdk等必备工具;然后基于此镜像之上,来制作spark镜像
启动spark
启动spark:
/opt/sparkjarfolder/sbin/start-all.sh
即可自动启动master以及worker节点
spark的work节点启动的时候报错:JAVA_HOME is not set;
在conf文件夹下面的spark-env.sh中增加一句:
export JAVA_HOME=/opt/jdk1.8.0_40
即可。