Docker安装Hadoop集群
一、单机hadoop
首先进入我们已有容器:(docker exec -it NAMES(名字) COMMAND ‘/bin/bash’)
mkdir /usr/hadoop
Cd /usr/hadoop
解压上传来的hadoop,或wget获取http://mirrors.sonic.net/apache/hadoop/common/hadoop-2.8.3/hadoop-2.8.3.tar.gz
命令:tar xvzf 压缩包(小编一般解压完直接删除压缩包)
准备工作已完成,开始搭建hadoop
编辑 .bashrc
Vi ~/.bashrc
加入如下内容:
1.# Set Hadoop-related environment variables
export HADOOP_HOME=/usr/local/hadoop
2.# Add Hadoop bin/ directory to PATH
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
刷新一下:
Source ~/.bashrc
- 此处有坑:
找不到which的话执行:yum install which
创建三个文件:
先进cd /usr/local/hadoop/hadoop-2.7.2
mkdir tmp作为Hadoop的临时目录
mkdir datanode作为NameNode的存放目录
mkdir namenode作为DataNode的存放目录
- 配置文件:cd /usr/local/hadoop/hadoop-2.7.2/etc/hadoop
三个文件:
1.core-site.xml配置:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/hadoop-2.7.2/tmp</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
<final>true</final>
</configuration>
2.hdfs-site.xml配置:(一些配置为了集群而准备)
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/hadoop-2.7.2/namenode</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/hadoop-2.7.2/datanode</value>
<final>true</final>
</property>
</configuration>
3.mapred-site.xml配置:(有个mapred-site.xml.template文件,更改为mapred-site.xml)
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>
- 下面就指定JAVA_HOME环境变量:
使用命令vi hadoop-env.sh,添加如下配置:
# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_141
接着格式化 namenode
执行命令:hadoop namenode -format
此刻hadoop配置就完成了。
二、 安装SSH
:
使用yum: yum install passwd openssl openssh-server -y
因为我们是docker操作,他并不会自动启动,所以我们去给他加到。Bashrc中
执行命令添加如下内容:Vi ~/.bashrc
#autorun
/usr/sbin/sshd
执行命令生成秘钥公钥:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_dsa
cd ~/.ssh/
cat id_dsa.pub >> authorized_keys
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys
- 补:
无密登录问题:bash: ssh: command not found
解决办法:yum -y install openssh-clients
到此位置我们保存容器为新的镜像即可:
docker commit -m “hadoop install” 61c9cf8da12f linux:hadoop
此时我们已经装好了一个单机版的hadoop镜像
检测ssh:
命令1./usr/sbin/sshd
命令2.ssh
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t5BoKntl-1597990905913)(https://s1.51cto.com/images/blog/201903/04/4eb2a0101cfc0e1e52c22123dbb70d72.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]
三、 docker hadoop集群
:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NOZ9rwJN-1597990905915)(https://s1.51cto.com/images/blog/201903/04/38c02fc050859938301951966683efd6.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]
切记: hostname、hosts配置在容器内修改了,只能在本次容器生命周期内有效。如果容器退出了,重新启动,这两个配置将被还原。且这两个配置无法通过commit命令写入镜像。
-
三个容器启动后分别配置hosts
vi /etc/hosts 注意修改ip地址:172.17.0.2 master
172.17.0.3 slave1
172.17.0.4 slave2启动sshd /usr/sbin/sshd
配置slaves:vi /usr/local/hadoop/hadoop-2.7.2/etc/hadoop/slaves
将:master
slave1
slave2
添加进去之后:
分别启动Hadoop:(进入/usr/local/hadoop/hadoop-2.7.2/sbin)
start-all.sh
分别查看--》节点上执行jps命令
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iX5C6Yx1-1597990905917)(https://s1.51cto.com/images/blog/201903/04/4d2b9d6171e785e86e3c02dd5a916e0e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]
master如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PCUDuZII-1597990905918)(https://s1.51cto.com/images/blog/201903/04/c97a720dafc6508be1ba1da7374485a6.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]
slave1如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aYjkM6ik-1597990905919)(https://s1.51cto.com/images/blog/201903/04/043d9768841a6a844be11d1f71b151f2.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]
slave2如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8FWTemyU-1597990905922)(https://s1.51cto.com/images/blog/201903/04/0b02c091bf77d55df8fbbcd1c230e811.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]
还可以通过Web页面看到查看DataNode和NameNode的状态:http://IP:50070/ :
大功告成,docker—hadoop集群搭建完毕。