制作spark镜像

构建镜像

  添加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 
即可。
原文地址:https://www.cnblogs.com/xiashiwendao/p/7787765.html