葵花宝典--HDFS高可用HA
一、HA概述
所谓谓HA(High Availablity),即高可用(7*24小时不中断服务)。实现高可用最关键的策略是消除单点故障。HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA。
HDFS HA功能通过配置Active/Standby两个NameNodes实现在集群中对NameNode的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将NameNode很快的切换到另外一台机器。
二、HDFS的原理
- 元数据管理:内存中都保存一份元数据,Edits日志两个可以读,共享的edits有两种实现(QJM和FS),现在常用QJM方案
- 状态管理模块:实现了一个zkfailover,常驻在每一个namenode所在的节点,每一个zkfailover负责监控自己所在NameNode节点,利用zk进行状态标识,当需要进行状态切换时,由zkfailover来负责切换,切换时需要防止brain split现象的发生。
- 保证两个nameNode的可以免密登录
- 保证隔离,只有一个namenode对外提供服务
三、故障自动转移机制
自动故障转移机制为HDFS部署增加了两个新组件:ZooKeeper和ZKFailoverController(ZKFC)进程。ZooKeeper是维护少量协调数据,通知客户端这些数据的改变和监视客户端故障的高可用服务。
HA的故障转移依赖zookeeper的一下功能:
- 故障检测:集群中的每个NameNode在ZooKeeper中维护了一个持久会话,如果机器崩溃,ZooKeeper中的会话将终止,ZooKeeper通知另一个NameNode需要触发故障转移。
- 现役namenode的选择:ZooKeeper提供了一个简单的机制用于唯一的选择一个节点为active状态。如果目前现役NameNode崩溃,另一个节点可能从ZooKeeper获得特殊的排外锁以表明它应该成为现役NameNode。
ZKFC是自动故障转移中的另一个新组件,是ZooKeeper的客户端,也监视和管理NameNode的状态。每个运行NameNode的主机也运行了一个ZKFC进程,ZKFC负责:
- 健康检测:ZKFC定期ping当前节点的nameNode,如果及时回复,说明正常;如果没回复,说明不健康。
- zookeeper会话管理:健康的ZKFC会保持zk的节点锁,此锁是一个临时节点,当此节点不健康时,锁释放;通知standy的namenode升级为active,进行服务。
四、HA配置
1、安装配置zookeeper(三台机器Hadoop102、Hadoop103、Hadoop104)
- 下载zookeeper的安装包,并解压到对应的目录
- 在zk目录建目录mkdir data,并在data目录下新建myid文件,三台内容分别为1、2、3
- 配置conf下的zoo.cfg
修改下面配置:
dataDir=/opt/module/zookeeper-3.4.14/data
#######################cluster##########################
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888参数解读:
Server.A=B:C:D。
A是一个数字,表示这个是第几号服务器;
B是这个服务器的IP地址;
C是这个服务器与集群中的Leader服务器交换信息的端口;
D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
2、配置HA相关配置文件(配置好后分发)
core-site.xml
<configuration><property><name>fs.defaultFS</name><value>hdfs://mycluster</value></property><property><name>hadoop.data.dir</name><value>/opt/ha/hadoop-3.1.3/data</value></property><property><name>ha.zookeeper.quorum</name><value>hadoop102:2181,hadoop103:2181,hadoop104:2181</value>
</property>
</configuration>hdfs-site.xml
<configuration><property><name>dfs.namenode.name.dir</name><value>file://${hadoop.data.dir}/name</value></property><property><name>dfs.datanode.data.dir</name><value>file://${hadoop.data.dir}/data</value></property><property><name>dfs.nameservices</name><value>mycluster</value></property><property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2, nn3</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>hadoop102:8020</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>hadoop103:8020</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn3</name><value>hadoop104:8020</value></property><property><name>dfs.namenode.http-address.mycluster.nn1</name><value>hadoop102:9870</value></property><property><name>dfs.namenode.http-address.mycluster.nn2</name><value>hadoop103:9870</value></property><property><name>dfs.namenode.http-address.mycluster.nn3</name><value>hadoop104:9870</value></property><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://hadoop102:8485;hadoop103:8485;hadoop104:8485/mycluster</value></property><property><name>dfs.client.failover.proxy.provider.mycluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><property><name>dfs.ha.fencing.methods</name><value>sshfence</value></property><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/home/atguigu/.ssh/id_ecdsa</value></property><property><name>dfs.journalnode.edits.dir</name><value>${hadoop.data.dir}/jn</value></property><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value>
</property>
</configuration>
3、格式化
- 各个节点执行:hdfs --daemon start journalnode
- 在102上执行hdfs namenode -format、hdfs --daemon start namenode
- 在103和104上同步102的数据hdfs namenode -bootstrapStandby
- 启动103和104的namenode:hdfs --daemon start namenode
- 启动索引节点的datanode:hdfs --daemon start datanode
- 启动zk后执行格式化hdfs zkfc -formatZK
五、YARN的HA配置
yarn-stie.xml
<configuration><!--启用resourcemanager ha--><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!--声明两台resourcemanager的地址--><property><name>yarn.resourcemanager.cluster-id</name><value>cluster-yarn1</value></property><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><property><name>yarn.resourcemanager.hostname.rm1</name><value>hadoop102</value></property><property><name>yarn.resourcemanager.hostname.rm2</name><value>hadoop103</value></property><!--指定zookeeper集群的地址--> <property><name>yarn.resourcemanager.zk-address</name><value>hadoop102:2181,hadoop103:2181,hadoop104:2181</value></property><!--启用自动恢复--> <property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value></property><!--指定resourcemanager的状态信息存储在zookeeper集群--> <property><name>yarn.resourcemanager.store.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property></configuration>
格式化操作前边已经完成,这里直接启动就可以了
葵花宝典--HDFS高可用HA相关推荐
- hadoop namenode启动不了_Hadoop框架:HDFS高可用环境配置
一.HDFS高可用 1.基础描述 在单点或者少数节点故障的情况下,集群还可以正常的提供服务,HDFS高可用机制可以通过配置Active/Standby两个NameNodes节点实现在集群中对NameN ...
- Hadoop框架:HDFS高可用环境配置
本文源码:GitHub·点这里 || GitEE·点这里 一.HDFS高可用 1.基础描述 在单点或者少数节点故障的情况下,集群还可以正常的提供服务,HDFS高可用机制可以通过配置Active/Sta ...
- 高可用(HA)Hadoop搭建Hive on Spark
高可用(HA)Hadoop搭建Hive on Spark 本文只介绍hive on spark搭建,Hadoop高可用(HA)请自行操作, 安装HIVE 1. 解压hive tar -zxvf apa ...
- Hadoo集群--高可用HA配置(两台主机)
目录 1 Hadoop HA架构详解 1.1 HDFS HA背景 1.2 HDFS HA架构 1.3 HDFS HA配置要素 1.4 HDFS HA配置参数 1.5 HDFS自动故障转移 1.6 YA ...
- corosync+pacemaker实现高可用(HA)集群(二)
部署方案二(推荐):corosync+pacemaker 利用ansible自动安装corosync和pacemaker 注:关于ansible的具体使用可参见"ansible实现自动化自动 ...
- web应用的负载均衡、集群、高可用(HA)解决方案
web应用的负载均衡.集群.高可用(HA)解决方案 参考文章: (1)web应用的负载均衡.集群.高可用(HA)解决方案 (2)https://www.cnblogs.com/huojg-21442/ ...
- sqlite c++插入 timestamp_Dqlite,基于sqlite 高可用(HA)数据库
原文发表于我的博客, 特此版权声明 noosphere.site: Dqlite,基于sqlite 高可用(HA)数据库 csdn : Dqlite,基于sqlite 高可用(HA)数据库 k3s之前 ...
- 浅谈web应用的负载均衡、集群、高可用(HA)解决方案
浅谈web应用的负载均衡.集群.高可用(HA)解决方案 转载于:https://www.cnblogs.com/hfultrastrong/p/7887420.html
- Spark: Structured JDBC 方式访问远程的高可用HA的HIVE
1. 背景 Spark: Structured JDBC 方式访问远程的高可用HA的HIVE,hive是看高可用的,连接信息如下 jdbc:hive2://xx.cdh1.test.dtwave.in ...
最新文章
- Java并发编程开发笔记——2线程安全性
- javascript---001-运行原理01_前端三大技术_JS重要性_Atwood定律_JS应用_JS让人迷惑_TypeScript会取代JS吗_JS是一门编程语言_浏览器工作原理_浏览器内核
- (7)Linux进程调度-O(1)调度算法
- C++之 程序文件和预处理
- 【java学习之路】(java SE篇)007.常用类
- 国内外著名CAD、CAM雕刻软件介绍
- xp-80c打印机无法打印_6种方法解决打印机无法打印问题
- 学习笔记(02):19年录制Zookeeper、Dubbo视频教程 微服务教程分布式教程 SpringBoot教程整合-传统互联网架构到分布式架构的架构演变...
- Matlab编写摩斯代码,以摩斯电码为例为 Arduino 编写库
- rpg人物制作软件_RPG游戏制作教程
- pr 增加配置文件和级别_用premiere处理视频黑边,出现“该级别的帧大小/帧速率无效……”怎样解决?...
- P5713 【深基3.例5】洛谷团队系统(C语言)
- LeetCode day11
- 分布式的坑(队列、缓存、分库分表、事务)
- 不想工作了怎么破?那就去这4个地方看一看
- 第三方登录-[微博、微信、qq] java实现
- NYOJ-1239-引水工程
- 以太网 以太网帧格式与IP报文分片
- 爱奇艺视频下载后怎么转换为3gp格式
- 电子签章平台三管齐下“治”印章,充分发挥集团管控权