您的位置:首页 > 运维架构 > 网站架构

Hadoop2.6(NN/RM)高可用集群安装与部署

2016-10-21 16:03 561 查看
Hadoop2对HDFS的改进很大,支持HDFS(NameNode) 和ResourceManager高可用性,避免集群中单点故障造成整个集群不可用。那么,从本文开始将部署一套高可用Hadoop集群及家族中相关开源系统,具体根据下面规划来,本文只部署高可用Hadoop集群,后续很快更新其他软件部署及使用。

一、部署前准备

操作系统:CentOS7_x64

安装目录:/opt

1. 节点分配
HostNameIPHadoopHBaseZookeeperHive
HMaster0192.168.18.215NameNodeHMaster/Hive
HMaster1192.168.18.216NameNodeHMaster/Hive-client

HSlave0192.168.18.217DataNodeHRegionServerQuorumPeerMain/
HSlave1192.168.18.218DataNodeHRegionServerQuorumPeerMain/
HSlave2192.168.18.219DataNodeHRegionServerQuorumPeerMain/
2. 版本及功能

软件名

版本号功能
Hadoophadoop-2.6.0.tar.gz为海量数据提供分布式存储(HDFS)和分布式计算(YARN)。
HBasehbase-1.0.1.1-src.tar.gz基于Hadoop的分布式、面向列的NoSQL数据库,适用于非结构化数据存储的数据库。
Zookeeperzookeeper-3.4.6.tar.gz一个分布式应用程序协调服务,为应用提供一致性服务,是Hadoop和Hbase的重要组件。
Hiveapache-hive-1.2.0-bin.tar.gz基于Hadoop的一个数据仓库工具,将结构化的数据文件映射成一张表,并提供简单的SQL查询功能,将SQL语句转换为MapReduce任务运行处理。
Phoenix

phoenix-4.4.0-HBase-1.0-bin.tar.gzHbase的SQL驱动,Phoenix让Hbase支持以JDBC方式访问,并将SQL查询转换成Hbase的扫描和相应的操作。
JDKjdk-7u79-linux-x64.gzJAVA运行环境
Hadoop生态系统下载地址:http://www.apache.org/dist/

JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
3. 逻辑结构图





NameNode(NN) HA实现方式:

一种是将NN维护的元数据保存一份到NFS上,当NN故障,可以通过另一台NNe读取NFS目录中的元数据备份进行恢复工作,需要手动进行操作,并不是真正意义上的HA方案。

另一种是准备一台备用NN节点,通过定期下载NN的元数据和日志文件来备份,当NN故障时,可以通过这台进行恢复,由于主备节点元数据和日志并不是实时同步,所以会丢失一些数据。

前两种方案都不是很理想,社区提供一种更好的方案,基于QJM(Qurom Journal Manager)的共享日志方案。QJM的基本原理是NN(Active)把日志写本地和2N+1(奇数)台JournalNode上,当数据操作返回成功时才写入日志,这个日志叫做editlog,而元数据存在fsimage文件中,NN(Standby)定期从JournalNode上读取editlog到本地。在这手动切换的基础上有开发了基于Zookeeper的ZKFC(ZookeeperFailover
Controller)自动切换机制,Active和Standby节点各有ZKFC进程监控NN监控状况,定期发送心跳,当Active节点故障时Standby会自动切换为ActiveNode,我们这次就用的此方案,如下图所示。





ResourceManager(RM) HA实现方式:

RM将状态信息存储在Zookeeper中,当Active故障,Standby切换为Active后,从ZK读取相应的作业信息,重新构建作业的内存信息,然后开始接受NodeManager心跳,并接受客户端提交作业的请求等。

二、搭建高可用Hadoop集群

1.基础环境配置

1.1 安装JDK(每台配置)

1.2 修改主机名,并添加hosts文件(每台配置)

1.3 配置SSH无密码登陆(在HMaster1做同样的操作)

现在就可以不用密码登陆某一台了。

2. Zookeeper集群安装与配置(三台HSlave配置)

2.1 安装与配置

参数说明:

tickTime:ZK服务器之间或客户端与服务器之间间隔多长时间发送一个心跳,单位毫秒

initLimit:ZK服务器集群中连接Leader的Follower服务器初始化连接时最长忍受多长心跳时间间隔(5*20000=10s)

syncLimit:标识Leader与Follower同步消息,如果超过时间(5*2000=10s),未完成同步,将剔除这个节点,所有连接此Follower服务器的客户端将连接到另一个Foolower服务器上

dataDir:ZK保存数据的目录,默认情况下,ZK也会将日志文件保存在此目录

dataLogDir:指定日志文件目录

clientPort:客户端连接ZK服务器端口

server.0:第一个0代表第几号ZK服务器,HSlave0是这个服务器的主机名或IP,2888是这个ZK服务器与集群中Leader服务器交换信息的端口,3888是Leader服务器出现故障时,用这个端口通信重新选举,在选出一个新的Leader

2.2 创建目录和id文件(三台HSlave对应操作)

# mkdir /home/zookeeper/data

# mkdir /home/zookeeper/logs

# vi /home/zookeeper/data/myid

0

#必须创建这个id,否则启动会报错。分别ZK集群节点创建myid号,myid一定对应好zoo.cfg中配置的server后面0、1和2这个ZK号

2.3 分别启动三个ZK节点(三台HSlave操作)

# /opt/zookeeper-3.4.6/bin/zkServer.sh start

注意:每次都需要分别启动ZK节点,不能通过hadoop管理启动

2.4 检查是否启动成功

分别查看ZK每个节点状态可以看到有两个follower节点,一个leader节点:

# /opt/zookeeper-3.4.6/bin/zkServer.sh status

在集群任意一节点都会启动一个进程:

# jps

1990 QuorumPeerMain

博客地址:http://lizhenliang.blog.51cto.com

3. Hadoop安装与配置(每台都同样配置)

3.1 安装与配置

# tar zxvf hadoop-2.6.0.tar.gz

# mv hadoop-2.6.0 /opt

# cd /opt/hadoop-2.6.0/etc/hadoop

# 配置变量,方便使用hadoop命令

3.1 对NameNode(HMaster0)节点进行格式化

# hadoop namenode -format

注意:格式化第二次有可能会造成DataNode无法启动,原因是NameSpaceID不一致造成,解决方法是找出不一致的VERSION修改NameSpaceID,也可以尝试删除hdfs/data目录。

3.2 启动HMaster0(active)节点NameNode

# hadoop-daemon.sh start namenode

3.3
HMaster1节点上同步(HMaster0)元数据

# hdfs namenode -bootstrapStandby

3.4 在HMaster0格式化ZKFC

# hdfs zkfc -formatZK

3.5 在HMaster0节点启动HDFS集群

# start-dfs.sh

3.6 在Master0节点启动YARN集群

# start-yarn.sh

3.7 在Master1节点启动RM

# yarn-daemon.sh start resourcemanager

3.8 以后也可以通过start-all.sh与stop-all.sh启停Hadoop集群

3.9 验证Hadoop集群(HDFS和YARN)是否启动成功

# jps #在HMaster0节点可以看到

32040 DFSZKFailoverController #ZKFC用于监控NameNode active和standby节点状态,并故障切换

30187 ResourceManager #YARN资源管理进程

31934 NameNode #HDFS元数据进程

13607 Jps #运行jps命令时自身进程

# jps #在HSlave0节点可以看到

13229 DataNode

31215 NodeManager

1990 QuorumPeerMain

13314 JournalNode

31390 Jps

# 通过访问Hadoop提供的WEB,查看是否正常











从上图可以看出,NameNode分为active和standby,ResouceManager也分为active和standby,也就是说,NN和RM均成功实现HA,当你测试停止active节点上NN或者RM时,都会正常切换到standby节点,这时再访问WEB,状态已经改变。目前NN只支持两台做HA,RM HA支持多台。

4. HDFS 操作命令

# hadoop dfsadmin -report #查看DataNode节点信息,可以使用这个命令脚本监控DFS状况

# hadoop fs -ls hdfs://hcluster:9000/ #指定HDFS地址访问

# hadoop fs -ls / #列出HDFS文件系统目录下文件和目录

# hadoop fs -lsr / #递归列出目录

# hadoop fs -mkdir /test #创建test目录

# hadoop fs -put /root/test.txt /test/test.txt #上传文件到test目录

# hadoop fs -cat /test/test.txt #查看文件内容

# hadoop fs -du /test/test.txt #查看文件大小

# hadoop fs -rm /test/test.txt #删除文件

# hadoop fs -rmr /test #递归删除目录或文件

提醒:Hadoop配置较为复杂,往往会因为自己的一点点配置错误,造成服务无法启动,不要心急,这时你应该静下心来仔细看看安装目录中logs目录下以.log结尾的日志,可帮助你解决问题。祝你好运!

HBase1.0分布式NoSQL数据库部署及使用请点:http://lizhenliang.blog.51cto.com/7876557/1665130

本文出自 “李振良的技术博客” 博客,出处http://lizhenliang.blog.51cto.com/7876557/1661354
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: