LOADING

Follow me

玩转大数据-Docker轻松搭建分析环境【zoues.com】
一月 11, 2017|DockerPaaS

玩转大数据-Docker轻松搭建分析环境【zoues.com】

玩转大数据-Docker轻松搭建分析环境【zoues.com】

 

Docker轻松搭建数据分析环境

 

在需要搭建平台或配置环境时,按照传统的做法,需要下载相应软件包,然后进行配置,经过大量的操作后还需要进行功能测试,查看是否工作正常。如果不正常,则意味着更多的时间代价和不可控的风险。一旦需要服务器迁移(例如从阿里云迁移到腾讯云),往往需要重新部署和调试。这些琐碎而无趣的体力活,极大地降低了工作效率。

Docker提供了一种更为聪明的方式,通过容器来打包应用,意味着迁移只需要在新的服务器上启动需要的容器就可以了。这无疑将节约大量的宝贵时间,并降低部署过程出现问题的风险。

同理,在搭建数据分析hadoop-spark-zeppelin平台时,同样可以使用docker技术来制作镜像,通过启动容器来启动应用,首先需要修改HadoopSparkZeppelin的配置文件,然后再制作dockerfile。

具体配置HadoopSparkZeppelin的步骤以及具体制作的dockerfile的步骤如下所示:

1.1 配置Hadoop

/usr/local/hadoop/hadoop-2.6.0/etc/hadoop$ cat core-site.xml   

玩转大数据-Docker轻松搭建分析环境/usr/local/hadoop/hadoop-2.6.0/etc/hadoop$ cat hdfs-site.xml 

玩转大数据-Docker轻松搭建分析环境/usr/local/hadoop/hadoop-2.6.0/etc/hadoop$ cat hadoop-env.sh  

玩转大数据-Docker轻松搭建分析环境/usr/local/hadoop/hadoop-2.6.0/etc/hadoop$ cat slaves

玩转大数据-Docker轻松搭建分析环境

1.2  配置Spark 

/usr/local/spark/spark-1.5.2-bin-hadoop2.6/conf$ cat spark-env.sh

玩转大数据-Docker轻松搭建分析环境/usr/local/spark/spark-1.5.2-bin-hadoop2.6/conf$ cat slave

玩转大数据-Docker轻松搭建分析环境/usr/local/spark/spark-1.5.2-bin-hadoop2.6/conf$ cat spark-defaults.conf

玩转大数据-Docker轻松搭建分析环境

 1.3  配置Zeppelin

/usr/local/zeppelin-0.6.0-bin-all/conf$ cat zeppelin-env.sh

玩转大数据-Docker轻松搭建分析环境/usr/local/zeppelin-0.6.0-bin-all/conf$ cat zeppelin-site.xml

玩转大数据-Docker轻松搭建分析环境

1.4  制作Dockerfile

docker hub仓库拉取ubuntu的基础镜像:docker pull ubuntu

1) 使用该基础镜像并添加作者信息:

FROM ubuntu
MAINTAINER from XXX

2) 安装必要的工具并建立必要的文件夹:

RUN apt-get update && apt-get –y install sudo
RUN sudo apt-get -y install openssh-server
RUN sudo apt-get -y install rsync
RUN sudo apt-get install -y supervisor
RUN mkdir /var/run/sshd

3) 修改sshd_config以及ssh_config 文件:

RUN sed -i ‘s/PermitRootLogin prohibit-password/ PermitRootLogin yes/’ /etc/ssh/sshd_config  
RUN sed -i ‘s/PermitEmptyPasswords no/PermitEmptyPasswords yes/’ /etc/ssh/sshd_config      
RUN sed -i ‘s/#   StrictHostKeyChecking ask/StrictHostKeyChecking no/’ /etc/ssh/ssh_config

4) 配置免密码登录:  

RUN ssh-keygen -t rsa -f ~/.ssh/id_rsa
RUN cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
RUN chmod 0600 ~/.ssh/authorized_keys
RUN chmod 0700 ~/.ssh

5) 配置环境变量:

ENV JAVA_HOME /usr/local/java/jdk1.8.0_45
ENV SPARK_HOME ${SPARK_HOME}/bin:/usr/local/spark/spark-1.5.2-bin-hadoop2.6
ENV HADOOP_HOME /usr/local/hadoop/hadoop-2.6.0
ENV HADOOP_OPTS “$HADOOP_OPTS Djava.library.path=/usr/local/hadoop/hadoop-2.6.0/lib/native”
ENV HADOOP_COMMON_LIB_NATIVE_DIR $HADOOP_HOME/lib/native
ENV CLASSPATH $CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME
ENV PATH ${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH:${SPARK_HOME}/bin
RUN echo ‘export JAVA_HOME=/usr/local/java/jdk1.8.0_45’>>/etc/profile
RUN echo ‘export  SPARK_HOME=${SPARK_HOME}/bin:/usr/local/spark/spark-1.5.2-bin-hadoop2.6′>>/etc/profile
RUN echo ‘export HADOOP_HOME=/usr/local/hadoop/hadoop-2.6.0’>>/etc/profile
RUN echo ‘export HADOOP_OPTS=”$HADOOP_OPTS -XX:-PrintWarnings-Djava.library.path=/usr/local/hadoop/hadoop-2.6.0/lib/native”‘>>/etc/profile
RUN echo ‘export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native’>>/etc/profile
RUN echo‘export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME’>>/etc/profile
RUN echo ‘export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH:${SPARK_HOME}/bin’>>/etc/profile

6) 将下载并配置好的HadoopJavaSpark以及Zeppelin放在适当位置:

COPY hadoop /usr/local/hadoop
COPY java /usr/local/java
COPY spark /usr/local/spark
COPY zeppelin-0.6.0-bin-all /usr/local/zeppelin-0.6.0-bin-all

7) 格式化Hadoop HDFSnamenode

WORKDIR /usr/local/hadoop/hadoop-2.6.0/hdfs/namenode
RUN sudo rm -rf *
WORKDIR /usr/local/hadoop/hadoop-2.6.0/hdfs/datanode
RUN sudo rm -rf *
WORKDIR /usr/local/hadoop/hadoop-2.6.0/tmp
RUN sudo rm -rf *
WORKDIR /usr/local/hadoop/hadoop-2.6.0
RUN bin/hdfs namenode –format

8) 将启动脚本start.sh放置在合适路径:

/*
#!/bin/bash
#start.sh
echo “127.0.0.1 singlenode” >> /etc/hosts
/usr/local/hadoop/hadoop-2.6.0/sbin/stop-all.sh
/usr/local/hadoop/hadoop-2.6.0/sbin/start-dfs.sh
/usr/local/spark/spark-1.5.2-bin-hadoop2.6/sbin/stop-all.sh
/usr/local/spark/spark-1.5.2-bin-hadoop2.6/sbin/start-all.sh
cd /usr/local/zeppelin-0.6.0-bin-all
bin/zeppelin-daemon.sh start
/bin/bash
*/
COPY start.sh /usr/local/start.sh

9) 使用supervisord来管理:

 /*
# supervisord.conf
[supervisord]
nodaemon=true
[program:sshd]
command=/usr/sbin/sshd -D
[program:start]
command=sh /usr/local/start.sh&& tail -f
startsecs=30
[program:bin]
command=/bin/bash
*/ 
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
RUN chmod 755 /etc/supervisor/conf.d/supervisord.conf

10) 对外暴露22,50070,8080,4040,8090端口:

EXPOSE 22 50070 8080 4040 8090

11) 设置container启动时执行的操作:

CMD [“/usr/bin/supervisord”]


1.5  在当前dockerfile的目录下build镜像

docker build -t hadoopsparkzeppelinimage .


1.6 运行新镜像

docker run –d –P hadoopsparkzeppelinimage

 

 

 

此时可以通过运行该容器的UbuntuIP和映射的50070端口访问HadoopHDFS,映射的8080端口访问Spark、映射的8090端口访问Zeppelin,如下图所示:

玩转大数据-Docker轻松搭建分析环境访问Hadoop页面

玩转大数据-Docker轻松搭建分析环境

访问Spark页面

玩转大数据-Docker轻松搭建分析环境

访问Zeppelin页面

至此,单节点的Hadoop-Spark-Zeppelin镜像就做好并启动了,该docker镜像可用于部署有docker环境的Ubuntu机器下。


对于运维来说,Docker提供了一种可移植的标准化部署过程,使得规模化、自动化、异构化的部署成为可能甚至是轻松简单的事情;而对于开发者来说,Docker提供了一种开发环境的管理方法,包括映像、构建、共享等功能,将来会让普通用户使用起来。通过将数据分析平台Hadoop-Spark-Zeppelin docker化,使得数据分析人员不用在陷入配置HadoopSpark以及Zeppelin环境的重复劳动,将精力投入到核心的数据分析工作中去。

 

 玩转大数据-Docker轻松搭建分析环境

no comments
Share

发表评论