系统环境: RHEL6.5 selinux and iptables is disabled
Hadoop 、jdk、zookeeper 程序使用 nfs 共享同步配置文件
软件版本:hadoop-2.7.3.tar.gz
Jdk-7u79-linux-x64.tar.gz
ip 主机名 角色
172.25.88.1 server1 NameNode
DFSZKFailoverController
ResourceManager
172.25.88.5 server5 NameNode
DFSZKFailoverController
ResourceManager
172.25.88.2 server2 JournalNode
QuorumPeerMain
DataNode
NodeManager
172.25.88.3 server3 JournalNode
QuorumPeerMain
DataNode
NodeManager
172.25.88.4 server4 JournalNode
QuorumPeerMain
DataNode
NodeManager
一、hadoop单节点伪分布搭建
1、hadoop安装
建立hadoop用户,id随意,所有节点id必须一致
下载后的包最好放在hadoop家目录,并且后续操作一定要切换成hadoop用户的身份进行相应操作
添加环境变量,查看进程
伪分布操作,需要ssh免密
设置ssh免密
ssh 172.25.88.1 ##测试登陆,不需要输密码就成功了
bin/hdfs namenode -format ##进行格式化
sbin/start-dfs.sh ##启动hadoop
Jps ##用jps检验各后台进程是否成功启动,看到以下四个进程,就成功了
浏览器输入:172.25.88.1:50070
2、伪分布操作
Utilities –> Browse the file system
默认是空的
创建一个文件夹
查看
bin/hdfs dfs -get output ##将output下载到本地
二、Hadoop完全分布式搭建
1、用nfs网络文件系统,就不用每个节点安装一遍了,需要rpcbind和nfs开启
Server2、server3、serve4、server5上安装nfs-utils,启动rpcbind
Server2、server3免密登陆测试
查看server1、2、3、4、5进程
2、安装zookeeper,编辑 zoo.cfg 文件
各节点配置文件相同,并且需要在/tmp/zookeeper 目录中创建 myid 文件,写入数字,此数字与配置文件中的定义保持一致,其它节点依次类推
3、在各节点启动服务
4、Hadoop 配置
编辑 core-site.xml 文件:
编辑 hdfs-site.xml 文件:
##指定 hdfs 的 nameservices 为 masters,和 core-site.xml 文件中的设置保持一
致
er
sshfence
shell(/bin/true)
5、启动 hdfs 集群(按顺序启动)
在三个 DN 上依次启动 zookeeper 集群,刚才已经启动过了,这里查看一下各节点的状态
在三个 DN 上依次启动 journalnode(第一次启动 hdfs 必须先启动 journalnode)
sbin/hadoop-daemon.sh start journalnode
格式化 HDFS 集群,Namenode 数据默认存放在/tmp,需要把数据拷贝到 h2
bin/hdfs namenode -format
scp -r /tmp/hadoop-hadoop 172.25.88.5:/tmp
格式化 zookeeper (只需在 h1 上执行即可)
启动 hdfs 集群(只需在 h1 上执行)
查看各节点状态
6、浏览器输入172.25.88.1、172.25.88.5查看其状态
7、测试故障自动切换
杀掉 h1 主机的 namenode 进程后依然可以访问,此时 h2 转为 active 状态接管 namenode
启动 h1 上的 namenode,此时为 standby 状态。
即hdfs 的高可用完成
三、yarn 的高可用
1、编辑 mapred-site.xml 文件
##指定 yarn 为 MapReduce 的框架
2、编辑 yarn-site.xml 文件
3、编辑 yarn-site.xml 文件
4、启动 yarn 服务
RM2 上需要手动启动
RM1为active状态,RM2为standby状态
5、测试 yarn 故障切换
杀掉 RM1主机的 ResourceManger进程后依然可以访问,此时 RM2转为 active 状态接管 ResourceManger
启动 RM1上的 ResourceManger,此时为 standby 状态。