通过Docker File创建Hadoop镜像

Docker File搭建Hadoop集群

节点分配 hadoop101 hadoop102 hadoop103
HDFS DataNode NameNode DataNode Datanode SecondaryNamenode
YARN NodeManager NodeManager ResourceManager NodeManager

1、安装Docker

下载

yum -y install docker-ce

启动docker服务

sudo service docker start

2、使用docker构建虚拟桥接网络

使用docker创建名为“hadoop”的虚拟网络

sudo docker network create --driver=bridge hadoop

使用下列代码查询是否创建成功,NAME项会有上面的“hadoop”字样

sudo docker network ls   

3、拉取Ubuntu镜像

查找Ubuntu容器

sudo docker search ubuntu

使用docker pull指定需拉取的镜像版本(名称)

sudo docker pull ubuntu:16.04 

可以使用docker images指令查询本地镜像

4、编写Docker FIle

在/home/ken/目录下创建文件夹

mkdir /home/ken/hadoopV1

进入此文件夹

mkdir /home/ken/hadoopV1

创建三个文件夹,分别是"config"、"moudle"、"software"
config用作存储配置好的hadoop配置文件,例如:core-site.xml
software用作存储本地的软件.gz包
moudle存储software解压出来的文件夹
创建文件"Dockerfile"

touch Dockerfile

使用编辑器将进入文件“Dockerfile”

vim Dockerfile

输入以下内容保存最基础的节点配置

FROM ubuntu:16.04
WORKDIR /root
RUN echo "deb http://mirrors.aliyun.com/ubuntu/ xenial main \
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main \
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main \
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main \
deb http://mirrors.aliyun.com/ubuntu/ xenial universe \
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe \
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe \
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe \
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main \
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main \
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe \
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe" > /etc/apt/sources.list
RUN apt-get update
RUN mkdir /opt/moudle
COPY ./moudle* /opt/moudle
COPY ./config /tmp/
RUN apt -y install openssh-server && \
apt -y install openssh-client && \
apt -y install vim && \
apt -y install net-tools
RUN ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
RUN cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
RUN service ssh start
ENV JAVA_HOME=/opt/moudle/jdk1.8.0_291
ENV HADOOP_HOME=/opt/moudle/hadoop-2.6.0
ENV PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
RUN mv /tmp/hadoop-env.sh $HADOOP_HOME/etc/hadoop/hadoop-env.sh && \
mv /tmp/hdfs-site.xml $HADOOP_HOME/etc/hadoop/hdfs-site.xml && \
mv /tmp/core-site.xml $HADOOP_HOME/etc/hadoop/core-site.xml && \
mv /tmp/mapred-site.xml $HADOOP_HOME/etc/hadoop/mapred-site.xml && \ 
mv /tmp/yarn-site.xml $HADOOP_HOME/etc/hadoop/yarn-site.xml && \
mv /tmp/slaves $HADOOP_HOME/etc/hadoop/slaves
RUN chmod -R +x $HADOOP_HOME

以上在Dockerfile文件中的操作有配置公私钥、环境变量、将本地写好的文件上传到节点中(在搭建之前要确定好各节点承担的服务并编写好配置文件)

5、启动容器

使用docker run指令启动容器

 sudo docker run -it ubuntu:16.04 /bin/bash

指定/bin/bash是为了保留进程运行,不然退出后容器会自动关闭

启动进程后切记在Master节点初始化HDFS

./hadoop namenode -format

此环境只适合于学习使用

posted @ 2024-01-17 02:24  Shachar_xc  阅读(301)  评论(0)    收藏  举报