hadoop-ha组态
HADOOP HA组态
hadoop2.x的ha组态。这份文件是在那里的描述中hdfs与yarn的ha组态。
这份文件的假设是zk它已被安装并配置,事实上,任何安装。
hdfs ha组态
首先。配置core-site.xml配置文件:
<property>
在老版本号中使用mr1时,还可能使用fs.default.name来进行配置
<name>fs.defaultFS</name>
此处配置的mycluster眼下还未定义。我们须要记住这个值,
这个表示此namenode的nameServiceId,在hdfs-site中定义,此处进行引用
<value>hdfs://mycluster</value>
</property>
接下来,配置当namenode发生切换时的检查方法。当NAMENODE切换时。
须要检查并确保仅仅有一个active节点。
因此会通过SHELL或SSH的方式过去强制中止或运行检查
<property>
<name>dfs.ha.fencing.methods</name>
此处的可配置值sshfence/shell
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
配置ha连接的zk的连接地址,
<property>
<name>ha.zookeeper.quorum</name>
<value>one.cluster:2181,two.cluster:2181,three.cluster:2181</value>
</property>
还能够有例如以下几个配置:
ha.zookeeper.session-timeout.ms,zk的session超时时间,默认是5000ms
ha.zookeeper.parent-znode,hdfs的ha在zk上的存储路径 ,默认是/hadoop-ha
接下来对hdfs-site.xml进行配置
定义上面提到过的nameserviceid的值,
<property>
<name>dfs.nameservices</name>
此处对当前配置的ha的nameserviceid进行定义,此处的mycluster中间不能使用"_"线
<value>mycluster</value>
</property>
接下来定义nameserviceid中须要使用到的namenode的id,
<property>
<name>dfs.ha.namenodes.mycluster</name>
此处定义了两个namenode的id,也就是须要配置两具namenode,id各自是nn1与nn2
<value>nn1,nn2</value>
</property>
在定义完毕须要的namenode id后。
须要针对每个namenode,定义其相关的rpc,http地址。
假设有启用https,还须要设置https-address
此处的配置通过nameserviceid.namenodeid来进行配置。
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>one.cluster:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>two.cluster:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>one.cluster:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>two.cluster:50070</value>
</property>
接下来配置namenode edits的共享存储。在这里使用QJM来进行配置:
qjm是一个非常轻量的进程,能够直接部署到namenode或datanode中。
qjm的默认rpcport是8485,默认httpport是8480,
可通过配置dfs.journalnode.rpc-address。dfs.journalnode.http-address来改动port。
qjm必须配置为单数个(N),可以保证在(N-1)/2个正常执行时,可以正常提供服务。
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://one.cluster:8485;two.cluster:8485;three.cluster:8485/mycluster</value>
</property>
配置QJM的存储路径 :
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/data/1/dfs/jn</value>
</property>
设置针对此nameserviceid的client代理:
client请求时通过nameserviceid来做请求。
nameserviceid解析出相应的active namenode就通过此配置中的java类来完毕。
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
接下来配置namenode的自己主动故障转换。
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
把配置文件 拷贝到全部的节点中。这个不能忘呀。
在配置有QJM的节点中启动QJM.
进入hadooop_home/sbin文件夹
./hadoop-daemon.sh start journalnode
进入hadoop_home/bin文件夹下,运行./hdfs zkfc -formatZK在zk上进行格式化
对namenode进行format操作:
进入hadoop_home/bin文件夹,并运行例如以下命令
运行./hadoop namenode -format -clusteridhacluster命令。
./hdfs namenode-initializeSharedEdits
接下来启动主的namenode, 进入hadooop_home/sbin文件夹,运行例如以下命令
./hadoop-daemon.sh start namenode
赶往standby的namenode节点。
进入hadoop_home/bin文件夹,运行例如以下命令:
./hdfs namenode -bootstrapStandby
启动standby 的namenode,进入hadooop_home/sbin文件夹,运行例如以下命令
./hadoop-daemon.sh start namenode
接下来启动各个datanode节点。
./hadoop-daemon.sh start datanode
最后一步。启动zkfc,自己主动切换namenode节点的服务。
由于此时两个namenode都是standby的状态,须要启动zkfc来实现切换。
在主namenode与standby的namenode中进行hadoop_home/sbin文件夹。并运行例如以下命令
./hadoop-daemon.sh start zkfc
the end.
YARN RM的HA配置
配置yarn中resourcemanager的HA仅仅有在hadoop2.3.x后才引进,
yarn的ha配置相对简单,直接配置yarn-site.xml文件
<property>
rm连接失败的重试间隔
<name>yarn.resourcemanager.connect.retry-interval.ms</name>
<value>2000</value>
</property>
<property>
是否启用ha配置。默认是false.
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
启动自己主动故障转移,默觉得false
<name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
启用一个内嵌的故障转移,与ZKRMStateStore一起使用。
<name>yarn.resourcemanager.ha.automatic-failover.embedded</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>rm-cluster</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
配置当前的rm节点。这个地方要注意。在rm1这个机器上时,配置为rm1
在rm2这台机器上时,须要配置为rm2.它们之间通过zk来实现active操作
<name>yarn.resourcemanager.ha.id</name>
<value>rm1</value>
</property>
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<property>
HA时,RMStateStore须要配置为这个值。
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<property>
配置与zk的连接地址
<name>yarn.resourcemanager.zk.state-store.address</name>
<value>localhost:2181</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>localhost:2181</value>
</property>
<!-- RM1 configs -->
<property>
<name>yarn.resourcemanager.address.rm1</name>
<value>host1:23140</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address.rm1</name>
<value>host1:23130</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.https.address.rm1</name>
<value>host1:23189</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>host1:23188</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address.rm1</name>
<value>host1:23125</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address.rm1</name>
<value>host1:23141</value>
</property>
<!-- RM2 configs -->
<property>
<name>yarn.resourcemanager.address.rm2</name>
<value>host2:23140</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address.rm2</name>
<value>host2:23130</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.https.address.rm2</name>
<value>host2:23189</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>host2:23188</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address.rm2</name>
<value>host2:23125</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address.rm2</name>
<value>host2:23141</value>
</property>
启动yarn的各节点,
在主resourcemanager与standby的resourcemanager运行
yarn-daemon.sh start resourcemanager
在nodemanager运行
yarn-daemon.sh start nodemanager
hadoop-ha组态的更多相关文章
- 使用Nginx+Lua代理Hadoop HA
一.Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个Master组件提供服务,其中正在使用的组件称为Active,另一个作为备份称为Standby,例如HDFS的NameNo ...
- Hadoop技术之Hadoop HA 机制学习
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:温球良 导语 最近分享过一次关于Hadoop技术主题的演讲,由于接触时间不长,很多技术细节认识不够,也没讲清楚,作为一个技术人员,本 ...
- hadoop HA 详解
NameNode 高可用整体架构概述 在 Hadoop 1.0 时代,Hadoop 的两大核心组件 HDFS NameNode 和 JobTracker 都存在着单点问题,这其中以 NameNode ...
- Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)
声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.服务器环境 主机名 IP 用户名 密码 安装目录 master188 192.168.29.188 hadoop hadoop /home/ha ...
- hadoop ha zkfc 异常自动切换机制和hdfs 没有空间问题解决
在我搭建hadoop ha 后,我启动了各个功能,但是发现hadoop hdfs 没法使用,在web 页面也显示hdfs 可用空间为零,并且自动备份机制无法使用,本人也不理解,然后就是指定hdfs t ...
- Hadoop ha CDH5.15.1-hadoop集群启动后,集群容量不正确,莫慌,这是正常的表现!
Hadoop ha CDH5.15.1-hadoop集群启动后,集群容量不正确,莫慌,这是正常的表现! 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.集群启动顺序 1>. ...
- Hadoop ha CDH5.15.1-hadoop集群启动后,两个namenode都是standby模式
Hadoop ha CDH5.15.1-hadoop集群启动后,两个namenode都是standby模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一说起周五,想必大家都特别 ...
- 基于zookeeper的高可用Hadoop HA集群安装
(1)hadoop2.7.1源码编译 http://aperise.iteye.com/blog/2246856 (2)hadoop2.7.1安装准备 http://aperise.iteye.com ...
- hadoop ha 读取 activce状态的活动节点
方式一 package com.xxx.hadoop; import com.sun.demo.jvmti.hprof.Tracker; import com.sun.xml.bind.util.Wh ...
- Hadoop HA方案调研
原文成文于去年(2012.7.30),已然过去了一年,很多信息也许已经过时,不保证正确,与Hadoop学习笔记系列一样仅为留做提醒. ----- 针对现有的所有Hadoop HA方案进行调研,以时间为 ...
随机推荐
- cocos2dx之lua项目开发中MVC框架的简单应用
**************************************************************************** 时间:2015-03-31 作者:Sharin ...
- 用代码定位硬盘上的文件(使用ShellExecute执行explorer /select命令,其它参数也很全)
问题:如何用代码控制资源浏览器,并定位到指定的文件? 答:使用ShellExecute,配合explorer即可 ShellExecute(Application.Handle, 'open', PC ...
- ThinkPHP 的模型使用详细介绍--模型的核心(七)
原文:ThinkPHP 的模型使用详细介绍--模型的核心(七) 注意:本节是ThinkPhp框架对数据操作的核心处理部分 大家还是在这里看清楚可以将其剪切放到代码编辑器中查看 本章节给大家着重介绍模型 ...
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
- 鼠标右键怎么清除Catalyst Control Center
开始→运行→regedit→找到HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\ACE→双击并修改其键值 可以删除 ...
- HDU2602 Bone Collector 【01背包】
Bone Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- 可重入锁(good)
可重入锁,也叫做递归锁,是指在一个线程中可以多次获取同一把锁,比如:一个线程在执行一个带锁的方法,该方法中又调用了另一个需要相同锁的方法,则该线程可以直接执行调用的方法[即可重入],而无需重新获得锁: ...
- ElasticSearch+Kibana 索引操作
ElasticSearch+Kibana 索引操作 一 前言 ElasticiSearch 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引 ...
- Compass用法指南
Compass用法指南 Sass是一种"CSS预处理器",可以让CSS的开发变得简单和可维护.但是,只有搭配Compass,它才能显出真正的威力. 本文介绍Compass的用法 ...
- 谈Web应用系统的可维护性
每一个软件开发人员都十分清楚, 当软件构建得越来越复杂时, 可维护性就成了一个很突出的问题. 如何在构造软件系统的过程中始终保持可控制的可维护性呢? 一. 整体组织 ...