一、HA概述

所谓谓HA(High Availablity),即高可用(7*24小时不中断服务)。实现高可用最关键的策略是消除单点故障。HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA。

HDFS HA功能通过配置Active/Standby两个NameNodes实现在集群中对NameNode的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将NameNode很快的切换到另外一台机器。

二、HDFS的原理

  1. 元数据管理:内存中都保存一份元数据,Edits日志两个可以读,共享的edits有两种实现(QJM和FS),现在常用QJM方案
  2. 状态管理模块:实现了一个zkfailover,常驻在每一个namenode所在的节点,每一个zkfailover负责监控自己所在NameNode节点,利用zk进行状态标识,当需要进行状态切换时,由zkfailover来负责切换,切换时需要防止brain split现象的发生。
  3. 保证两个nameNode的可以免密登录
  4. 保证隔离,只有一个namenode对外提供服务

三、故障自动转移机制

自动故障转移机制为HDFS部署增加了两个新组件:ZooKeeper和ZKFailoverController(ZKFC)进程。ZooKeeper是维护少量协调数据,通知客户端这些数据的改变和监视客户端故障的高可用服务。

HA的故障转移依赖zookeeper的一下功能:

  1. 故障检测:集群中的每个NameNode在ZooKeeper中维护了一个持久会话,如果机器崩溃,ZooKeeper中的会话将终止,ZooKeeper通知另一个NameNode需要触发故障转移。
  2. 现役namenode的选择:ZooKeeper提供了一个简单的机制用于唯一的选择一个节点为active状态。如果目前现役NameNode崩溃,另一个节点可能从ZooKeeper获得特殊的排外锁以表明它应该成为现役NameNode。

ZKFC是自动故障转移中的另一个新组件,是ZooKeeper的客户端,也监视和管理NameNode的状态。每个运行NameNode的主机也运行了一个ZKFC进程,ZKFC负责:

  1. 健康检测:ZKFC定期ping当前节点的nameNode,如果及时回复,说明正常;如果没回复,说明不健康。
  2. zookeeper会话管理:健康的ZKFC会保持zk的节点锁,此锁是一个临时节点,当此节点不健康时,锁释放;通知standy的namenode升级为active,进行服务。

四、HA配置

1、安装配置zookeeper(三台机器Hadoop102、Hadoop103、Hadoop104)

  1. 下载zookeeper的安装包,并解压到对应的目录
  2. 在zk目录建目录mkdir data,并在data目录下新建myid文件,三台内容分别为1、2、3
  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、格式化

  1. 各个节点执行:hdfs --daemon start journalnode
  2. 在102上执行hdfs namenode -format、hdfs --daemon start namenode
  3. 在103和104上同步102的数据hdfs namenode -bootstrapStandby
  4. 启动103和104的namenode:hdfs --daemon start namenode
  5. 启动索引节点的datanode:hdfs --daemon start datanode
  6. 启动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相关推荐

  1. hadoop namenode启动不了_Hadoop框架:HDFS高可用环境配置

    一.HDFS高可用 1.基础描述 在单点或者少数节点故障的情况下,集群还可以正常的提供服务,HDFS高可用机制可以通过配置Active/Standby两个NameNodes节点实现在集群中对NameN ...

  2. Hadoop框架:HDFS高可用环境配置

    本文源码:GitHub·点这里 || GitEE·点这里 一.HDFS高可用 1.基础描述 在单点或者少数节点故障的情况下,集群还可以正常的提供服务,HDFS高可用机制可以通过配置Active/Sta ...

  3. 高可用(HA)Hadoop搭建Hive on Spark

    高可用(HA)Hadoop搭建Hive on Spark 本文只介绍hive on spark搭建,Hadoop高可用(HA)请自行操作, 安装HIVE 1. 解压hive tar -zxvf apa ...

  4. 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 ...

  5. corosync+pacemaker实现高可用(HA)集群(二)

    部署方案二(推荐):corosync+pacemaker 利用ansible自动安装corosync和pacemaker 注:关于ansible的具体使用可参见"ansible实现自动化自动 ...

  6. web应用的负载均衡、集群、高可用(HA)解决方案

    web应用的负载均衡.集群.高可用(HA)解决方案 参考文章: (1)web应用的负载均衡.集群.高可用(HA)解决方案 (2)https://www.cnblogs.com/huojg-21442/ ...

  7. sqlite c++插入 timestamp_Dqlite,基于sqlite 高可用(HA)数据库

    原文发表于我的博客, 特此版权声明 noosphere.site: Dqlite,基于sqlite 高可用(HA)数据库 csdn : Dqlite,基于sqlite 高可用(HA)数据库 k3s之前 ...

  8. 浅谈web应用的负载均衡、集群、高可用(HA)解决方案

    浅谈web应用的负载均衡.集群.高可用(HA)解决方案 转载于:https://www.cnblogs.com/hfultrastrong/p/7887420.html

  9. Spark: Structured JDBC 方式访问远程的高可用HA的HIVE

    1. 背景 Spark: Structured JDBC 方式访问远程的高可用HA的HIVE,hive是看高可用的,连接信息如下 jdbc:hive2://xx.cdh1.test.dtwave.in ...

最新文章

  1. Java并发编程开发笔记——2线程安全性
  2. javascript---001-运行原理01_前端三大技术_JS重要性_Atwood定律_JS应用_JS让人迷惑_TypeScript会取代JS吗_JS是一门编程语言_浏览器工作原理_浏览器内核
  3. (7)Linux进程调度-O(1)调度算法
  4. C++之 程序文件和预处理
  5. 【java学习之路】(java SE篇)007.常用类
  6. 国内外著名CAD、CAM雕刻软件介绍
  7. xp-80c打印机无法打印_6种方法解决打印机无法打印问题
  8. 学习笔记(02):19年录制Zookeeper、Dubbo视频教程 微服务教程分布式教程 SpringBoot教程整合-传统互联网架构到分布式架构的架构演变...
  9. Matlab编写摩斯代码,以摩斯电码为例为 Arduino 编写库
  10. rpg人物制作软件_RPG游戏制作教程
  11. pr 增加配置文件和级别_用premiere处理视频黑边,出现“该级别的帧大小/帧速率无效……”怎样解决?...
  12. P5713 【深基3.例5】洛谷团队系统(C语言)
  13. LeetCode day11
  14. 分布式的坑(队列、缓存、分库分表、事务)
  15. 不想工作了怎么破?那就去这4个地方看一看
  16. 第三方登录-[微博、微信、qq] java实现
  17. NYOJ-1239-引水工程
  18. 以太网 以太网帧格式与IP报文分片
  19. 爱奇艺视频下载后怎么转换为3gp格式
  20. 电子签章平台三管齐下“治”印章,充分发挥集团管控权

热门文章

  1. 西南交通大学计算机考研招生目录,2016年西南交通大学硕士研究生招生专业目录...
  2. [附源码]java毕业设计图书馆自习室管理系统
  3. Spring Boot jar 启动时设置环境参数
  4. 华为 eNSP—交换机配置(三层)
  5. 哈夫曼(Huffman)编码在word2vec中的应用
  6. 去IOE-EBS何去何从
  7. “蓝桥杯”练习系统——历届试题
  8. js中的type是什么意思
  9. 阿里云原生十年磨剑:让企业在数字经济时代焕发生命力
  10. Dockerfile文件-FROM指定基础镜像