一、虚拟机准备
1、准备3台虚拟机,分别为hadoop102,hadoop103,hadoop104,并分别修改静态ip和主机名
2、安装Hadoop和Java(卸载自带Java)
方法:通过安装好的hadoop101虚拟机将Hadoop和Java部署到其他虚拟机上
(1)创建脚本
远程拷贝命令:
scp(secure copy):scp -r source destination(只拷贝内容)
例:scp -r hadoop101:/opt/module/hadoop-2.7.2 hadoop102:/opt/module
注:源和目标都要标明主机,通过远程登陆的方式拷贝,需要输入密码
rsync:rsync -av source destination(归档拷贝)
例:rsync -av hadoop101:/opt/module/hadoop-2.7.2 /optmodule
注:源和目标只能有一个是远程目录,a:归档拷贝,就是完完全全的拷贝,从内容到属性信息(文件创建时间等),比scp要快, 只拷贝差异部分
用脚本的方式给其他的虚拟机部署Hadoop和Java,参数是文件目录,功能是发送到其他主机上相同位置
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录的绝对路径,避免获取“.”和软连接的情况
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=102; host<105; host++)); do
echo ------------------- hadoop$host --------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
创建脚本:vim xsync
赋予可执行权限:chmod +x xsync
执行命令:sudo cp xsync /bin(该命令让xsync直接以命令的形式调用,无需写路径)
执行命令:sudo rsync -av /bin/xsync hadoop101:/bin(该命令将脚本复制到hadoop101相应目录下)
之后就可以通过hadoop101用xsync命令给其他虚拟机发送文件
(2)部署环境
切换到hadoop101虚拟机,将Hadoop和Java分别分发到各个虚拟机上,执行xsync的时候需要确认并输入目标机器的密码
命令:xsync hadoop-2.7.2
xsync jdk1.8.0_144
发送环境变量,需要root权限:sudo xsync /etc/profile
在其他目标虚拟机上分别执行命令:source /etc/profile
查看环境是否配置成功:
二、集群配置
1、集群部署规划
hadoop102 | hadoop103 | hadoop104 | |
HDFS | NameNode DataNode | SecondaryNameNode DataNode | DataNode |
YARN | NodeManager | NodeManager | ResourceManager NodeManager |
对于HDFS来说NN是主机,DN和2NN是从机
对于YARN来说RN是主机,NM是从机
(条件有限,整合成三台机器,完整集群最小单位是6台)
2、集群配置
(1)修改配置文件
用Notepad++里的NppFTP插件,可远程连接虚拟机,直接改文件内容
需要修改的文件:hadoop-env.sh mapred-env.sh yarn-env.sh
core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml
第一行以.sh为后缀名的文件只需填写JAVA_HOME路径(之前已经填写过)
core-site.xml
hdfs-site.xml
mapred-site.xml文件无需更改
yarn-site.xml
以上配置是对NN,2NN,RM进行了配置,没有配置从机,手动启动集群,从机不需要配置
(2)分发配置文件
虚拟机切换到hadoop102,工作目录切换到/opt/module/hadoop-2.7.2,发送配置文件夹etc
命令:xsync etc
三、集群启动
格式化HDFS:(在配置了NameNode的机器上格式化)
命令:hdfs namenode -format
注:因为之前执行伪分布运行模式的时候格式化了HDFS,进行了操作,所以这次在格式化后要删除/opt/module/hadoop-2.7.2/data/tmp/dfs下的data数据
2、启动集群
(1)启动HDFS
hadoop102:
启动NameNode:hadoop-daemon.sh start namenode
启动DataNode:hadoop-daemon.sh start datanode
hadoop103:
启动DataNode:hadoop-daemon.sh start datanode
hadoop104:
启动DataNode:hadoop-daemon.sh start datanode
启动SecondaryNameNode:hadoop-daemon.sh start secondarynamenode
命令jps查看启动结果
浏览器查看:(此时出现问题hadoop102:50070不开,输入192.168.93.102:50070就可以,虚拟机的hosts和hostname都没问题)