Hadoop 2.0 中 NameNode/ResourceManager HA 总结

2024-06-07 15:58

本文主要是介绍Hadoop 2.0 中 NameNode/ResourceManager HA 总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文部分转自 董的博客《Hadoop 2.0中单点故障解决方案总结》

  • 一 为什么需要 HA 和 Federation
    • 1 单点故障
    • 2 集群容量和集群性能
  • 二 Hadoop 20 三个系统简介
    • 1 HDFS 基础架构
    • 2 YARN 基础架构
    • 3 MapReduce
  • 三 Hadoop HA 架构
    • 1 HDFS 的 HA 架构
    • 2 YARN 的 HA 架构
    • 3 Hadoop HA 解决方案架构
    • 4 构成 Hadoop HA 的组件
    • 5 Hadoop HA 需要考虑的问题
    • 6 Hadoop HA 小结


一. 为什么需要 HA 和 Federation

1.1 单点故障

在 Hadoop 2.0 之前,也有若干技术试图解决单点故障的问题,我们在这里做个简短的总结

  • Secondary NameNode
    它不是 HA,它只是阶段性的合并 edits 和 fsimage,以缩短集群启动的时间。当 NameNode (以下简称NN )失效的时候,Secondary NN 并无法立刻提供服务,Secondary NN 甚至无法保证数据完整性:如果NN数据丢失的话,在上一次合并后的文件系统的改动会丢失。

  • Backup NameNode (HADOOP-4539)
    它在内存中复制了 NN 的当前状态,算是 Warm Standby,可也就仅限于此,并没有 failover 等。它同样是阶段性的做 checkpoint,也无法保证数据完整性。

  • 手动把 name.dir 指向 NFS
    这是安全的 Cold Standby,可以保证元数据不丢失,但集群的恢复则完全靠手动。

  • Facebook AvatarNode
    Facebook 有强大的运维做后盾,所以 Avatarnode 只是 Hot Standby,并没有自动切换,当主 NN 失效的时候,需要管理员确认,然后手动把对外提供服务的虚拟 IP 映射到 Standby NN,这样做的好处是确保不会发生脑裂的场景。其某些设计思想和 Hadoop 2.0 里的 HA 非常相似,从时间上来看,Hadoop 2.0 应该是借鉴了 Facebook 做法。

还有若干解决方案,基本都是依赖外部的HA机制,譬如 DRBD,Linux HA,VMware 的 FT 等等。


1.2 集群容量和集群性能

单 NN 的架构使得 HDFS 在集群扩展性和性能上都有潜在的问题:

  • NN 进程使用的内存可能会达到上百G
    常用的估算公式为 1G 对应1百万个块,按缺省块大小计算的话,大概是64T (这个估算比例是有比较大的富裕的,其实,即使是每个文件只有一个块,所有元数据信息也不会有1KB/block)。

  • 所有的元数据信息的读取和操作都需要与 NN 进行通信
    譬如客户端的 addBlock、getBlockLocations,还有 DataNode 的 blockRecieved、sendHeartbeat、blockReport。

当集群大到一定程度后,NN 成为了性能的瓶颈。 Hadoop 2.0 里的 HDFS Federation 就是为了解决这两个问题而开发的。



二. Hadoop 2.0 三个系统简介

1. Hadoop 1.0 内核主要由两个分支组成:MapReduce 和 HDFS
众所周知,这两个系统的设计缺陷是单点故障,即 MR 的 JobTracker 和 HDFS 的 NameNode 两个核心服务均存在单点问题,该问题在很长时间内没有解决,这使得 Hadoop 在相当长时间内仅适合离线存储和离线计算。但这些问题在 Hadoop 2.0 中得到了非常完整的解决。

2. Hadoop 2.0 内核由三个分支组成,分别是 HDFS、MapReduce 和 YARN
而 Hadoop 生态系统中的其他系统,比如

这篇关于Hadoop 2.0 中 NameNode/ResourceManager HA 总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1039631

相关文章

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的

C# Task Cancellation使用总结

《C#TaskCancellation使用总结》本文主要介绍了在使用CancellationTokenSource取消任务时的行为,以及如何使用Task的ContinueWith方法来处理任务的延... 目录C# Task Cancellation总结1、调用cancellationTokenSource.

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。