真实服务器hadoop集群所有需要配置ssh互信
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub '-p 27005 [email protected]'


需要先构建一个hadoop的基础镜像,使用dockerfile文件方式进行构建。
先构建一个具备ssh功能的镜像,方便后期使用。(但是这样对于容器的安全性会有影响)
注意:这个镜像中的root用户的密码是root
#http://mirrors.aliyun.com/apache/hadoop/core/hadoop-2.7.0/hadoop-2.7.0.tar.gz

FROM daocloud.io/centos:6
EXPOSE 22
ENV JAVA_HOME /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/
ADD epel-6.repo /etc/yum.repos.d/epel.repo
RUN yum install supervisor java-1.8.0-openjdk openssh-server openssh-clients rsync -y
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
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 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
RUN cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
RUN echo "root:root" | chpasswd
COPY supervisord.conf /etc/supervisord.conf
ADD hadoop-2.7.0.tar.gz /usr/local/
CMD ["/usr/bin/supervisord"]

supervisord.conf关键配置
[supervisord]
nodaemon=true   前台模式
[program:sshd]
command=/usr/sbin/sshd –D


准备搭建一个具有三个节点的集群,一主两从
主节点:hadoop0 ip:192.168.2.10
从节点1:hadoop1 ip:192.168.2.11
从节点2:hadoop2 ip:192.168.2.12

vi /etc/hosts
172.17.0.119    hadoop0
172.17.0.120    hadoop1
172.17.0.121    hadoop2

修改hadoop配置
进入到 etc/hadoop目录
指定slaves
vi etc/hadoop/slaves
hadoop1
hadoop2

修改目录下的配置文件core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml
(1)hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64/

(2)core-site.xml
<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop0:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/usr/local/hadoop/tmp</value>
        </property>
         <property>
                 <name>fs.trash.interval</name>
                 <value>1440</value>
        </property>
</configuration>

(3)hdfs-site.xml
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
</configuration>

(4)yarn-site.xml
<configuration>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>
                <name>yarn.log-aggregation-enable</name>
                <value>true</value>
        </property>
</configuration>

(5)修改文件名:cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

(6)指定resourcemanager的地址,修改文件yarn-site.xml
<property>
    <description>The hostname of the RM.</description>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop0</value>
  </property>

(7)格式化
进入到/usr/local/hadoop目录下
1、执行格式化命令

bin/hdfs namenode –format   会清空hdfs所有数据,第一次配置运行
注意:在执行的时候会报错,是因为缺少which命令,安装即可

执行下面命令安装
yum install -y which

格式化操作不能重复执行。如果一定要重复格式化,带参数-force即可。
(8)启动伪分布hadoop
命令:sbin/start-all.sh
第一次启动的过程中需要输入yes确认一下。

使用jps,检查进程是否正常启动?能看到下面几个进程表示伪分布启动成功
hadoop0
4643 Jps
4073 NameNode
4216 SecondaryNameNode
4381 ResourceManager

hadoop1
456 NodeManager
589 Jps
388 DataNode

(9)停止伪分布hadoop
命令:sbin/stop-all.sh

docker run -d --name hadoop0 --hostname hadoop0 -p 50070:50070 -p 8088:8088 hadoop:v3 /usr/bin/supervisord
docker run -d --name hadoop1 --hostname hadoop1 hadoop:v3 /usr/bin/supervisord
docker run -d --name hadoop2 --hostname hadoop2 hadoop:v3 /usr/bin/supervisord

results matching ""

    No results matching ""