Hadoop HA on Yarn——集群启动
这里分两部分,第一部分是NameNode HA,第二部分是ResourceManager HA
(ResourceManager HA是hadoop-2.4.1之后加上的)
NameNode HA
1.启动Zookeeper
zkServer.sh start
可以用zkServer.sh status查看状态(看看该节点是不是leader还是follower)
2.在hadoop001上执行,格式化ZooKeeper集群,目的是在ZooKeeper集群上建立HA的相应节点
hdfs zkfc -formatZK
...
15/07/17 14:50:08 INFO ha.ActiveStandbyElector: Successfully deleted /hadoop-ha/appcluster from ZK.
15/07/17 14:50:08 INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/appcluster in ZK.
验证:zkCli.sh
...
Welcome to ZooKeeper!
2015-07-17 14:51:32,531 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@975] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
2015-07-17 14:51:32,544 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@852] - Socket connection established to localhost/127.0.0.1:2181, initiating session
JLine support is enabled
2015-07-17 14:51:32,561 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1235] - Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x14e9ac4b6a60001, negotiated timeout = 30000 WATCHER:: WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0]
ls /
[rmstore, yarn-leader-election, hadoop-ha, zookeeper]
ls /hadoop-ha
[appcluster]
3.在hadoop001,hadoop002,hadoop003上启动日志程序journalnode
hadoop-daemon.sh start journalnode
starting journalnode, logging to /data/hadoop-2.6.0/logs/hadoop-root-journalnode-hadoop001.out
jps
14183 QuorumPeerMain
14680 Jps
14459 JournalNode
4.格式化NameNode(必须开启JournalNode进程)
hdfs namenode -format
如果不是首次format的话还是把NameNode和DataNode存放数据地址下的数据手动删除一下,否则会造成NameNode ID和DataNode ID不一致,
rm -rf /data/hadoop/storage/hdfs/name/* & rm -rf /data/hadoop/storage/hdfs/data/*
(如果是HDFS联盟,即有多个HDFS集群同时工作,则用hdfs namenode -format -clusterId [clusterID])
5.启动NameNode
hadoop-daemon.sh start namenode
6.把NameNode的数据从hadoop001同步到hadoop002中
注意,在hadoop002(namenode standby)下执行:
hdfs namenode -bootstrapStandby
...
=====================================================
About to bootstrap Standby ID nn2 from:
Nameservice ID: appcluster
Other Namenode ID: nn1
Other NN's HTTP address: http://hadoop001:50070
Other NN's IPC address: hadoop001/**.**.**.**:8020
Namespace ID: 1358416288
Block pool ID: BP-503387195-**.**.**.**-1437119166865
Cluster ID: CID-51e580f5-f003-463d-ae45-e109a7ec31d4
Layout version: -60
=====================================================
...
7.启动所有的DataNode
hadoop-daemons.sh start datanode
8.启动Yarn
start-yarn.sh
9.在hadoop001,hadoop002启动ZooKeeperFailoverController(这里不用在hadoop003中启动,因为hadoop003这个节点是纯粹的DataNode)
hadoop-daemon.sh start zkfc
10.验证HA的故障自动转移是否好用
因为用的公司的远程服务器,无法通过web查看NameNode的Standby或者Active状态,只能从指定namenode名称空间的存储地址下看edits文件的更新时间
namenode名称空间在上一节集群配置中设置如下
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/hadoop/storage/hdfs/name</value>
</property>
在两个namennode的该路径下分别有两个fsimage文件,fsimage是存储元数据的文件,在Active的NameNode中还会有edit log,并且每对hdfs操作一次 edit log都会更新,从时间的更新就能看出。而Standby NameNode的 edit log不会更新。当Active的NameNode被kill掉之后可以立马在Standby NameNode的name路径下看到最新的edit log更新。这一切都要归功于JournalNode。在journalNode路径下可以看到完整的edit log备份。
小结:
集群启动要特别小心,很容易因为操作顺序不对导致failover失败的。
之前还因为kill掉Hadoop001的NameNode而hadoop002的NameNode的也跟着down掉。导致操作hdfs的时候connection refused。一直在找connection的问题,比如端口、/etc/hosts的问题。结果重新按流程启动了一遍又好了,不知道之前的问题出在哪,莫名其妙,搞的心力憔悴,浪费了不少时间。
所以每一步操作的检查很重要,看看进程、name路径下的edit log更新。
ResourceManager HA
NameNode HA操作完之后我们可以发现只有一个节点(这里是hadoop001)启动,需要手动启动另外一个节点(hadoop002)的resourcemanager。
yarn-daemon.sh start resourcemanager
然后用以下指令查看resourcemanager状态
yarn rmadmin –getServiceState rm1
结果显示Active
而rm2是standby。
验证HA和NameNode HA同理,kill掉Active resourcemanager,则standby的resourcemanager则会转换为Active。
还有一条指令可以强制转换
yarn rmadmin –transitionToStandby rm1
参考文献
[1] hdfs-site.xml:http://www.21ops.com/front-tech/10744.html
[2] yarn-site.xml: http://www.aboutyun.com/thread-10572-1-1.html 评论也值得参考
[3] http://www.cnblogs.com/meiyuanbao/p/3545929.html (没有做到Yarn的HA)
Hadoop HA on Yarn——集群启动的更多相关文章
- Hadoop HA on Yarn——集群配置
集群搭建 因为服务器数量有限,这里服务器开启的进程有点多: 机器名 安装软件 运行进程 hadoop001 Hadoop,Zookeeper NameNode, DFSZKFailoverContro ...
- Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)
声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.服务器环境 主机名 IP 用户名 密码 安装目录 master188 192.168.29.188 hadoop hadoop /home/ha ...
- Hadoop HA 高可用集群的搭建
hadoop部署服务器 系统 主机名 IP centos6.9 hadoop01 192.168.72.21 centos6.9 hadoop02 192.168.72.22 centos6.9 ha ...
- Hadoop HA 高可用集群搭建
一.首先配置集群信息 vi /etc/hosts 二.安装zookeeper 1.解压至/usr/hadoop/下 .tar.gz -C /usr/hadoop/ 2.进入/usr/hadoop/zo ...
- hadoop - spark on yarn 集群搭建
一.环境准备 1. 机器: 3 台虚拟机 机器 角色 l-qta3.sp.beta.cn0 NameNode,ResourceManager,spark的master l-querydiff1.sp ...
- Hadoop HA高可用集群搭建(2.7.2)
1.集群规划: 主机名 IP 安装的软件 执行的进程 drguo1 192.168.80.149 j ...
- Hadoop的多节点集群启动,唯独没有namenode进程?(血淋淋教训,一定拍快照)(四十五)
前言 大家在搭建hadoop集群时,第一次格式化后,一路要做好快照.别随便动不动缺少什么进程,就来个格式化. 问题描述:启动hadoop时报namenode未初始化:java.io.IOExcepti ...
- Zookeeper(四)Hadoop HA高可用集群搭建
一.高可就集群搭建 1.集群规划 2.集群服务器准备 (1) 修改主机名(2) 修改 IP 地址(3) 添加主机名和 IP 映射(4) 同步服务器时间(5) 关闭防火墙(6) 配置免密登录(7) 安装 ...
- 大数据学习——yarn集群启动
启动yarn命令: start-yarn.sh 验证是否启动成功 jps查看进程 http://192.168.74.100:8088页面 关闭 stop-yarn.sh
随机推荐
- mybatis 小结
1. 根据后台list 在SQL中使用到In的时候 <if test="sbidList != null and sbidList.size() > 0"> A ...
- C#神奇的扩展方法
以前总听说扩展方法扩展方法,只是听说是C#3.0后出来的新玩意,也仅仅是知道Linq中用到好多的扩展方法,但是他究竟是个什么东东,怎么用它,用它的好处是什么,总是模模糊糊,那么我们今天就尝试揭开它 ...
- spring定时任务(@Scheduled注解)
(一)在xml里加入task的命名空间 xmlns:task="http://www.springframework.org/schema/task" http://www.spr ...
- __block和__weak修饰符的区别
block下循环引用的问题 __block本身并不能避免循环引用,避免循环引用需要在block内部把__block修饰的obj置为nil __weak可以避免循环引用,但是其会导致外部对象释放了之后, ...
- Java异常(一)Java异常简介及其框架
Java异常(一)Java异常简介及其框架 概要 本章对Java中的异常进行介绍.内容包括:Java异常简介Java异常框架 Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机 ...
- mybatis之Sql语句构建器
SQL类: 方法 描述 SELECT(String) SELECT(String...) 开始或插入到 SELECT子句. 可以被多次调用,参数也会添加到 SELECT子句. 参数通常使用逗号分隔的列 ...
- Hive Metastore 连接报错
背景 项目中需要通过一些自定义的组件来操控hive的元数据,于是使用了remote方式来存储hive元数据,使用一个服务后台作为gateway,由它来控制hive元数据. 现象 在windows上连接 ...
- 算警示吧——此文来自张鑫旭(说说CSS学习中的瓶颈)
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=2523 虽已数年,但未 ...
- LOJ#6032. 「雅礼集训 2017 Day2」水箱
传送门 首先可以有一个平方复杂度的 \(DP\) 设 \(f_{i,j}\) 表示前面 \(i\) 个小格,高度为 \(j\) 的最大答案 令 \(h_i\) 表示隔板 \(i\) 的高度 当 \(j ...
- git使用总结(常用命令)
前言 写这篇文章的目的是让新手能够操作git管理自己的代码,可能你知道git的各种命令但是对其使用顺序并不熟,比如我.所以有必要整合一篇关于命令使用步骤的文章,图片用的人家的,也没询问让不让用,可能会 ...