使用docker搭建hadoop集群
Hello小伙伴们,上一篇我们讲了怎么使用虚拟机搭建hadoop集群。由于这种方式搭建起来,虚拟机较大,如果是从0开始搭建的话,那是十分缓慢。下面就给大家伙讲讲怎么使用docker搭建hadoop集群。docker简介百度百科上这么解释:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows ...
Hello小伙伴们,上一篇我们讲了怎么使用虚拟机搭建hadoop集群。 由于这种方式搭建起来,虚拟机较大,如果是从0开始搭建的话, 那是十分缓慢。下面就给大家伙讲讲怎么使用docker搭建hadoop集群。
docker简介
百度百科上这么解释:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
也就是说docker是一种容器,我们可以往容器中放我们需要的东西,然后直接发布到服务器上。
再简单来说,我们可以将一个个hadoop节点当作容器运行在我们的机器上实现集群的效果。
docker的安装
这里就举一种简单的在centos7上安装。如果你是windows或者mac可以百度一下,安装也是不难的。
1.使用yum安装docker
yum install -y docker
2.启动docker服务器
service docker start
3.拉取镜像
我们要成功启动一个docker容器,首先要选择我们需要的镜像。docker仓库中有很多镜像给我们选择,我们这里需要的是,包含jdk还有hadoop的基础镜像。
当然,你也可以拉取一个centos镜像然后手动安装jdk和hadoop。这里我们简单粗暴,直接拉取含有jdk和hadoop的基础镜像。
docker pull registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop
4.启动容器
分别启动hadoop0、hadoop1、hadoop2
docker run -it --name hadoop0 -h hadoop0 -p 50070:50070 -p 8088:8088 -p 9000:9000 registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop /bin/bash
docker run -it --name hadoop1 -h hadoop1 registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop /bin/bash
docker run -it --name hadoop2 -h hadoop2 registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop /bin/bash
-i:以交互模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪输入终端,通常与-i同时使用
–name:为容器指定一个名称
-h:指定主机名
-p:指定本机和容器的映射端口。这里是为了启动之后查看hdfs和yarn的监控页面以及hdfs的rpc端口
如果要退出可以使用ctrl+d退出容器。使用
docker exec -it 【容器名】/bin/bash
再次进入容器
查看当前正在运行的容器
docker ps
如果容器已经停止,可以使用
docker start 容器名
启动容器,然后再执行进入容器的命令。
5.分别启动容器的sshd服务
上一篇文章也介绍到,namenode需要通过ssh登录到其他机器启动datanode。resourcemanager也同理要到其他机器上启动nodemanager
#启动ssh服务
/etc/init.d/ssh start
#生成密钥
ssh-keygen -t rsa
#修改hosts文件
vim /etc/hosts
172.17.0.2 hadoop0
172.17.0.3 hadoop1
172.17.0.4 hadoop2
生成的密钥会存放在个人用户目录的.ssh文件夹下。文件名为id_rsa.pub
在每一台机器都启动完sshd服务,和生成密钥后。复制密钥到其他机器,实现免密登录
在hadoop0上执行以下命令
ssh-copy-id hadoop0
ssh-copy-id hadoop1
ssh-copy-id hadoop2
验证免密登录
ssh hadoop0
ssh hadoop1
ssh hadoop2
6.配置hadoop运行环境
以下与之前搭建hadoop集群配置方式一致
1⃣️修改hadoop-env.sh:修改java的环境
修改第25行的java环境
export JAVA_HOME=/opt/tools/jdk1.8.0_77
2⃣️配置core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop0:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadata/tmp</value>
</property>
</configuration>
fs.defaultFS:表示集群namenode的地址
hadoop.tmp.dir:表示临时文件路径
3⃣️配置hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/data</value>
</property>
</configuration>
dfs.replication:表示hdfs的数据块备份数量,默认是3
dfs.datanode.data.dir :表示datanode的数据路径
dfs.namenode.name.dir:表示namenode的数据路径
4⃣️配置mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
指定mapreduce运行在yarn框架上
5⃣️配置yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop0</value>
</property>
</configuration>
yarn.nodemanager.aux-services:NodeManager上运行的附属服务,需配置成mapreduce_shuffle,才可运行MapReduce程序,否则会报错;
yarn.resourcemanager.address : 表示resourcemanager的地址
6⃣️发送配置到其他机器
scp -r /opt/tools/hadoop/ hadoop1:/opt/tools/hadoop/
scp /etc/hosts hadoop1:/etc/hosts
到这里所有配置就做好啦!!!!!!!!
7⃣️在hadoop0上格式化namenode
hadoop namenode -format
启动集群并验证
cd /opt/tools/hadoop/sbin/
./start-all.sh
关注公众号领取更多福利
更多推荐
所有评论(0)