详细操作步骤
**
文章内容属于原创,若要转载,请标明出处。
**
实验
目的
要求
完成Hadoop的高可用完全分布模式的安装
Hadoop的相关服务进程能够正常启动
HDFS能够正常使用
MapReduce 示例程序能够正常运行
实
验
环
境 五台独立虚拟机
主机之间有有效的网络连接每台主机内存2G以上,磁盘50G
所有主机上已安装CentOS 7操作系统
所有主机已完成网络属性配置所有主机已安装JDK
已完成Zookeeper集群的安装和部署
软件版本:
★Hardoop2.7.3版本,软件包名:Hadoop-2.7.3.tar.gz
实
验
环
境
集群规划:
Hadoop的高可用完全分布模式中有HDFS的主节点和数据节点、MapReduce的主节点和任务节点、数据同步通信节点、主节点切换控制节点总共6类服务节点, 其中 HDFS的主节点、MapReduce的主节点、主节点切换控制节点共用相同主机cgt-01和cgt-02,HDFS的数据节点、MapReduce的任务节点共用相同主机cgt-03、
cgt-04、cgt-05, 数据同步通信节点可以使用集群中的任意主机, 但因为其存放的是元数据备份,所以一般不与主节点使用相同主机。
高可用完全分布模式中需要满足主节点有备用的基本要求,所以需要两台或以上的主机作为主节点, 而完全分布模式中需要满足数据有备份和数据处理能够分布并行的基本要求,所以需要两台或以上的主机作为HDFS的数据节点和MapReduce的任务节点,同时数据同步通信节点工作原理同Zookeeper类似,需要三台或以上的奇数台主机,具体规划如下。
主机名 IP地址 服务名称
cgt-01 192.168.10.111 Hadoop主节点
Hadoop主节点切换服务
Yarn主节点
cgt-02 192.168.10.112 Hadoop主节点
Hadoop主节点切换服务
Yarn主节点
cgt-03 192.168.10.113 Hadoop数据服务
Hadoop同步通信服务
Yarn节点管理服务
cgt-04 192.168.10.114 Hadoop数据服务
Hadoop同步通信服务
Yarn节点管理服务
cgt-05 192.168.10.115 Hadoop数据服务
Hadoop同步通信服务
Yarn节点管理服务
实验内容与完成情况 一、Hadoop基本安装配置
★此项所有操作步骤使用集群用户admin进行。
★只需在一台主机操作,在下一步骤进行同步安装配置。
注:软件包“Hadoop-2.7.3.tar.gz”已经上传至用户家目录“setups”下。进行解压和环境变量设置。
1、$mkdir ~/hadoop 创建用于存放Hadoop相关文件的目录
2、进入该目录,将软件包解压$tar -xvf ~/setups/hadoop-2.7.3.tar.gz
3、$vi ~/.bash_profile 配置hadoop相关的环境变量
4、$source ~/.bash_profile 使新配置的环境变量立即生效
5、打印环境变量,检查配置的环境变量是否设置成功,是否正确。
$echo $HADOOP_HOME
$echo $PATH
6、验证Hadoop的安装配置是否成功。$hadoop version
二、Hadoop高可用完全分布模式配置
注:所有操作在集群admin用户下进行。
1、进入Hadoop文件目录,创建Hadoop临时文件目录“tmp”,HDFS的元数据文件目录“name”,HDFS的数据文件目录“data”,Journal的逻辑状态数据目录“journal”。
$mkdir tmp name data journal
2、进入Hadoop的配置文件所在目录,对配置文件进行修改
$cd ~/hadoop/hadoop-2.7.3/etc/hadoop
$vi hadoop-env.sh
3、对配置文件core-site.xml修改
$vi core-site.xml(所有配置文件文本见文章末尾)
4、对配置文件hdfs-site.xml修改
$vi hdfs-site.xml(所有配置文件文本见文章末尾)
5、由模板文件拷贝生成配置文件“mapred-site.xml”
$cp mapred-site.xml.template mapred-site.xml
对配置文件mapred-site.xml修改(所有配置文件文本见文章末尾)
6、
$vi mapred-site.xml
7、对配置文件yarn-env.sh修改
$vi yarn-env.sh
8、对配置文件yarn-site.xml修改
$vi yarn-site.xml
9、对配置文件slaves进行修改
$vi slaves
三、同步安装和配置
★此项所有操作步骤使用集群用户admin进行。
1、将“Hadoop”目录和“.bash_profile”文件发给集群中所有主机,发送目标用户为
集群专用用户admin,发送目标路径为“/home/admin”,即集群用户admin的家目录。
2、对集群中每台主机进行如下操作:
$source ~/.bash_profile #使新配置的环境变量生效
$echo $HADOOP_HOME #查看新添加和修改的环境变量是否设置成功,是否正确
$echo $PATH
$hadoop version #验证Hadoop的安装配置是否成功
四、Hadoop高可用完全分布模式格式和启动
★本节格式化内容不可多次执行
★此项所有操作步骤在集群的admin用户下进行
1、在所有同步通信节点的主机(cgt-03;cgt-04;cgt-05)执行,启动同步通信服务,然后
使用命令“jps”查看Java进程信息,若有名为“JournalNode”的进程,则表示通信节点启动成功。
注:本操作只在第一次安装时执行。
2、在主节点(cgt-01)使用$hadoop namenode -format,对HDFS进行格式化,
若未报错则表示成功。
注:本操作只在第一次安装时执行,格式化操作避免二次进行。
3、格式化完成后将“hadoop”目录下的“name”目录发送给集群中备用主节点的主机
(cgt-02),目标用户admin,目标路径“/home/admin/hadoop”
4、在集群中所有主机使用z k S e r v e r . s h s t a t u s , 查 看 该 节 点 当 前 的 状 态 , 若 集 群 中 只 有 一 个 l e a d e r 节 点 , 其 余 为 “ f o l l o w e r ” 节 点 , 则 工 作 状 态 正 常 。 若 不 正 常 则 使 用 zkServer.sh status,查看该节点当前的状态,若集群中只有
一个leader节点,其余为“follower”节点,则工作状态正常。若不正常则使用 z k S e r v e r . s h s t a t u s , 查 看 该 节 点 当 前 的 状 态 , 若 集 群 中 只 有 一 个 l e a d e r 节 点 , 其 余 为 “ f o l l o w e r ” 节 点 , 则 工 作 状 态 正 常 。 若 不 正 常 则 使 用 zkServer.sh start启动zookeeper服务。
5、在主节点使用命令“jps”查看Java进程信息,若有名为“NameNode”,
“ResourceManager”,“DFSZKFailoverController”三个进程,则表示Hadoop集群的主节点启动成功。
6、 使用命令“ssh 目标主机名或IP地址”远程登录到所有备用主节点主机,使用命
令“jps” 查看Java进程信息,若有名为“NameNode”、“ResourceManager”、“DFSZKFailoverController”的三个进程,则表示Hadoop集群的备用主节点启动成功。
7、 使用命令“ssh目标主机名或IP地址”远程登录所有数据节点主机,使用命令“jps”
查看Java进程信息,若有“DataNode”、“NodeManager”、“JournalNode”的三个进程,则表示Hadoop集群的数据节点启动成功。
五、Hadoop高可用完全分布模式验证
★该项的所有操作步骤使用专门用于集群的用户admin进行。
1、$hadoop fs -mkdir -p /user/admin 在Hadoop中创建当前登录用户自己的目录
$hadoop fs -ls -R / #查看HDFS中的所有文件和目录的结构
2、进入Hadoop的示例程序包hadoop-mapreduce-examples-2.7.3.jar所在目录
$cd ~/hadoop/hadoop-2.7 3/share/hadoop/mapreduce
3、运行使用蒙地卡罗法计算PI的示例程序
$hadoop jar hadoop-mapreduce-examples 2.7.3.jar pi 2 1000
core-site.xml
fs.defaultFS
hdfs://hadoop-ha
hadoop.tmp.dir
/home/admin/hadoop/tmp
ha.zookeeper.quorum
cgt-01:2181,cgt-02:2181,cgt-03:2181,cgt-04:2181,cgt-05:2181
hdfs-site.xml
dfs.nameservices
hadoop-ha
dfs.ha.namenodes.hadoop-ha
name-1,name-2
dfs.namenode.rpc-address.hadoop-ha.name-1
cgt-01:9000
dfs.namenode.http-address.hadoop-ha.name-1
cgt-01:50070
dfs.namenode.rpc-address.hadoop-ha.name-2
cgt-02:9000
dfs.namenode.http-address.hadoop-ha.name-2
cgt-02:50070
dfs.namenode.shared.edits.dir
qjournal://cgt-03:8485;cgt-04:8485;cgt-05:8485/hadoop-ha
dfs.journalnode.edits.dir
/home/admin/hadoop/journal
dfs.ha.automatic-failover.enabled
true
dfs.client.failover.proxy.provider.hadoop-ha
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfence
shell(/bin/true)
dfs.ha.fencing.ssh.private-key-files
/home/admin/.ssh/id_rsa
dfs.ha.fencing.ssh.connect-timeout
30000
dfs.namenode.name.dir
/home/admin/hadoop/name
dfs.datanode.data.dir
/home/admin/hadoop/data
dfs.replication
3
mapred-site.xml
mapreduce.framework.name
yarn
yarn-site.xml
yarn.resourcemanager.ha.enabled
true
yarn.resourcemanager.cluster-id
yarn-ha
yarn.resourcemanager.ha.rm-ids
resource-1,resource-2
yarn.resourcemanager.hostname.resource-1
cgt-01
yarn.resourcemanager.hostname.resource-2
cgt-02
yarn.resourcemanager.zk-address
cgt-01:2181,cgt-02:2181,cgt-03:2181,cgt-04:2181,cgt-05:2181
yarn.nodemanager.aux-services
mapreduce_shuffle