Hadoop 实验1:搭建Hadoop 集
⽬录
⼀、启动Docker 容器
1.加载镜像
实验使⽤的Docker镜像保存在/cg/images/hadoop_
⽂件中,执⾏如下命令加载该镜像:
2.启动实验容器
执⾏如下四个命令,启动四个名称分别为master、slave1、slave2、slave3的docker容器⽤于实验:
执⾏结果如下:
在终端使⽤如下命令进⼊容器中:
将命令中的$NAME 替换为对应的容器名称即可,⽐如进⼊master容器可以使⽤命令:
特别注意:
docker load < /cg/images/hadoop_
1
docker run --name master --privileged --hostname master --ip 172.18.0.2 --add-host=slave1:172.18.0.3 --add-host=slave2:172.18.0.4 --add-host=slave3:172
3
docker run --name slave1 --privileged --hostname slave1 --ip 172.18.0.3 --add-host=master:172.18.0.2 --add-host=slave2:172.18.0.4 --add-host=slave3:174
5
docker run --name slave2 --privileged --hostname slave2 --ip 172.18.0.4 --add-host=master:172.18.0.2 --add-host=slave1:172.18.0.3 --add-host=slave3:176 7docker run --name slave3 --privileged --hostname slave3 --ip 172.18.0.5 --add-host=master:172.18.0.2 --add-host=slave1:172.18.0.3 --add-host=slave2:17docker exec -it --privileged $NAME /bin/bash
docker exec -it --privileged master /bin/bash
如果再次进⼊桌⾯实验环境后,发现容器未启动(使⽤下⾯命令查看)
docker ps
按顺序使⽤下⾯命令启动容器。
1docker start master
2docker start slave1
3docker start slave2hadoop分布式集搭建
4docker start slave3
注意:不要使⽤ docker start master slave1 slave2 slave3并发启动多容器,使⽤该命令启动容器时,容器的启动先后顺序是不确定的,这可能会导致容器分配到的IP和创建容器时指定的IP不⼀致,导致集⽆法启动。
然后检查IP和hosts是否对应,如果不对,使⽤下⾯命令关闭容器后,再次按顺序启动容器。
docker stop master slave1 slave2 salve3
⼆、配置Hadoop环境
1.配置JAVA环境
Hadoop是基于Java语⾔开发的,因此需要安装Java环境。
在这⾥我们仅介绍master的配制⽅法,slave1、slave2和slave3都需要按照下⾯的步骤配置Java环境!
⾸先在容器master中使⽤如下命令从资源⽂件夹/cgsrc中将JDK安装包复制到/usr/local/java⽬录下:
1mkdir /usr/local/java
2cp /cgsrc/ /usr/local/java/
我们接下来切换到/usr/local/java⽬录下,将安装包解压,并删除⽤过的tar⽂件。
1cd /usr/local/java/
2tar -zxvf
3rm -f
此时/usr/local/java⽬录下仅有⼀个jdk1.8.0_171⽬录,这就是Java主⽬录。
接下来需要配置JAVA_HOME环境变量,为了⽅便起见,这⾥直接在~/.bachrc这个⽂件中进⾏设置,采⽤这种配置⽅式时,只对当前登录的单个⽤户⽣效,当该⽤户登录以及每次打开新的Shell时,它的环境变量⽂件.bashrc会被读取。输⼊下⾯命令打开当前登录⽤户的环境变量配置⽂件.bashrc:
vim ~/.bashrc
在⽂件最后⾯添加如下三⾏(注意等号前后不能有空格),然后保存退出vim:
1export JAVA_HOME=/usr/local/java/jdk1.8.0_171
2export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
3export PATH=$PATH:${JAVA_HOME}/bin
接下来让环境变量⽣效,执⾏如下代码:
执⾏上述命令后,可以检验⼀下是否设置正确:
输出如下即表明配置Java环境成功:
请务必以同样的步骤对每个节点进⾏配置!
2.配置分布式模式
当Hadoop采⽤分布式模式部署和运⾏时,存储采⽤分布式⽂件系统HDFS。⽽且,HDFS的名称节点和数据节点位于不同的机器上。这时,数据就可以分布到多个节点上,不同数据节点上的数据计算可以并
⾏执⾏,这使得MapReduce分布式计算能⼒才能真正发挥作⽤。
本节使⽤3个虚拟节点搭建集环境,可以看做是三台物理机器:Master节点和三个Slave节点。节点的IP地址可以在对应的命令⾏中使⽤ifconfig
命令查看:
Hadoop集的安装配置⼤致包括以下步骤:
(1)选定⼀台机器作为Master
(2)在Master节点上安装Hadoop,并完成配置。
(3)将Master节点上的Hadoop⽬录复制到其他Slave节点上
(4)在Master节点上开启Hadoop
3.配置hosts ⽂件
本次演⽰中,3个节点的ip地址如下:
(1)master 172.18.0.2
source ~/.bashrc
1
echo $JAVA_HOME #检验变量值2java -version #查看java 版本
1
java version "1.8.0_171"2Java(TM) SE Runtime Environment (build 1.8.0_171-b11)3Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
(2)slave1 172.18.0.3
(3)slave2 172.18.0.4
(4)slave3 172.18.0.5
由于我们在docker的启动命令⾥已经加⼊了host配置,所以检查发现/etc/hosts⽂件⾥映射关系齐全则可以略过此步骤。执⾏如下命令打开并修改master节点中的/etc/hosts⽂件:
vim /etc/hosts
确保在hosts⽂件中有如下IP和主机名映射关系:
1172.18.0.2 master
2172.18.0.3 slave1
3172.18.0.4 slave2
4172.18.0.5 slave3
上⾯完成了master节点的配置,接下来在三个slave节点中使⽤同样步骤配置hosts⽂件。
在各个节点上执⾏如下指令,测试节点之间是否已经联通:
1ping master -c 3
2ping slave1 -c 3
3ping slave2 -c 3
4ping slave3 -c 3
如果都能连通,则配置成功。
4.配置SSH⽆密码登录
需要让master节点可以SSH⽆密码登录到各个slave节点上。
⾸先,⽣成master节点的公钥,如果之前已经⽣成过公钥,必须删除原来的公钥,重新⽣成⼀次。具体命令如下:
1cd ~/.ssh #如果没有该⽬录,先执⾏⼀次 ssh localhost,密码默认为83953588abc
2rm -f ./id_rsa* #删除之前⽣成的公钥
3ssh-keygen -t rsa #执⾏该命令后,遇到提⽰信息,均按Enter即可
为了让master节点能⽆密码SSH登录到本机,需要在master节点上执⾏如下命令:
完成后可以执⾏ssh master 来验证⼀下,可能会遇到提⽰信息,只要输⼊ yes 即可,测试成功后执⾏exit
命令返回原来的终端。 接下来在master节点上将公钥传输到两个slave节点:
执⾏scp复制⽂件时会要求输⼊相应的slave的密码,默认为 83953588abc。
传输完成后在三个slave节点上将SSH公钥加⼊授权:
这样就可以在master节点上⽆密码SSH登录到各个slave节点了。
注意:由于启动Hadoop集时,master节点需要通过ssh登录⾃⾝节点(ssh localhost ),为了去掉ssh的
交互式认证提⽰,需要在master 节点上执⾏以下命令:cat ./id_rsa.pub >> ./authorized_keys
1
scp ~/.ssh/id_rsa.pub root@slave1:/root 2scp ~/.ssh/id_rsa.pub root@slave2:/root 3scp ~/.ssh/id_rsa.pub root@slave3:/root
1
mkdir -p ~/.ssh #如果slave 节点上已存在该⽬录,则先删除该⽬录再执⾏该命令2cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 3rm -f ~/id_rsa.pub
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论