当前位置:   article > 正文

Hadoop系列(一)Docker部署Hadoop集群_hadoop集群和docker容器的关系

hadoop集群和docker容器的关系

搭建一个Hadoop集群环境时需要多台服务器,对于我们个人,这通常是个门槛,需要使用虚拟机,安装操作系统,然后运行起来多个虚机。

安装操作系统是个不太轻松的任务,并且运行多个虚机对个人电脑性能也有一定要求,这些门槛影响了很多小伙伴的实践积极性

使用Docker的话就简单了,不用安装操作系统,直接下载一个镜像,如centos,这样操作系统就有了,基于这个系统镜像运行多个容器,就相当于起了多个虚机,而且系统性能的消耗要远小于虚拟机。

假设我们有一个 centos7 镜像,启动多个容器,每个容器都有一个IP,都能通过SSH连接操作,这样就可以在每个容器中安装 JAVA Hadoop,从而搭建起集群环境了。

使用Docker搭建Hadoop集群的过程包括:

  • 1、安装Docker
  • 2、获取centos镜像
  • 3、安装SSH
  • 4、构建Hadoop镜像
  • 5、为容器配置IP及SSH无密码登陆
  • 6、配置Hadoop
  • 7、Hadoop集群启动测试

一、安装Docker

第1步比较简单,参考Docker系列之前的文章Docker简介及安装

二、获取centos镜像

$ docker pull centos
  • 1

查看镜像列表的命令:

$ docker images
  • 1

三、安装SSH

以centos7镜像为基础,构建一个带有SSH功能的centos,使用Dockerfile创建

$ vi Dockerfile
  • 1

内容:

FROM centos
MAINTAINER dys

RUN yum install -y openssh-server sudo
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN yum  install -y openssh-clients

RUN echo "root:111111" | chpasswd
RUN echo "root   ALL=(ALL)       ALL" >> /etc/sudoers
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

这段内容的大意是:以 centos 镜像为基础,安装SSH的相关包,设置了root用户的密码为 111111,并启动SSH服务

执行构建镜像的命令,新镜像命名为 centos7-ssh

$ docker build -t="centos7-ssh" .
  • 1

执行完成后,可以在镜像列表中看到centos7-ssh镜像

$ docker images
  • 1

四、构建Hadoop镜像

以前面构建的centos7-ssh镜像为基础,安装Java、Hadoop构建Hadoop镜像

$ vi Dockerfile
  • 1

内容:

FROM centos7-ssh
ADD jdk-8u101-linux-x64.tar.gz /usr/local/
RUN mv /usr/local/jdk1.8.0_101 /usr/local/jdk1.8
ENV JAVA_HOME /usr/local/jdk1.8
ENV PATH $JAVA_HOME/bin:$PATH

ADD hadoop-2.7.3.tar.gz /usr/local
RUN mv /usr/local/hadoop-2.7.3 /usr/local/hadoop
ENV HADOOP_HOME /usr/local/hadoop
ENV PATH $HADOOP_HOME/bin:$PATH

RUN yum install -y which sudo
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

这里是基于 centos7-ssh 这个镜像,把 JAVA 和 Hadoop 的环境都配置好了

前提:在Dockerfile所在目录下准备好 jdk-8u101-linux-x64.tar.gz 与 hadoop-2.7.3.tar.gz

执行构建命令,新镜像命名为 hadoop

$ docker build -t="hadoop" .
  • 1

运行3个hadoop容器,分别命名为 hadoop0,hadoop1,hadoop2,hadoop0 作为master

$ docker run --name hadoop0 --hostname hadoop0 -d -P -p 50070:50070 -p 8088:8088 hadoop
$ docker run --name hadoop1 --hostname hadoop1 -d -P hadoop
$ docker run --name hadoop2 --hostname hadoop2 -d -P hadoop
  • 1
  • 2
  • 3
  • 4

容器hadoop0启动时,映射了端口号,50070和8088,是用来在浏览器中访问hadoop WEB界面的。

查看容器是否都正常启动:

$ docker ps
  • 1

五、为容器配置IP及SSH无密码登陆

参考这篇文章 Docker系列(四)Docker 网络模式及IP配置

5.1、为容器配置IP

设置固定IP,需要用到 pipework,用于给容器设置IP

#先下载
$ git clone https://github.com/jpetazzo/pipework.git
$ cp pipework/pipework /usr/local/bin/

#安装bridge-utils
$ yum -y install bridge-utils

#创建网络
$ brctl addbr br1
$ ip link set dev br1 up
$ ip addr add 192.168<
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/211339
推荐阅读
相关标签
  

闽ICP备14008679号