大数据面试 | 02 HDFS难点---HDFS 联邦和HDFS HA

目录

HDFS F

HDFS HA

为了解决HDFS1.0 中单点故障问题和内存受问题。提出了HDFS HA 和HDFS F。

解决单点故障问题:
  • HDFS HA: 通过NameNode 解决
  • 如果 NameNode 发生故障,就切换到备用NameNode
解决内存受限问题:
  • HDFS Federation
  • 水平扩展,支持多个NameNode
  • 所有的NameNode 共享所有的DataNode存储资源
  • 每一个NameNode 分管一部分目录

1. HDFS F

联邦 HDFS 是 namenode 水平扩展方案。联邦 HDFS 允许每个 namenode之间的命名空间相互独立。数据块池不再切分,所以每个DataNode 需要注册到每个 namenode。

HDFS 的底层存储是可以水平拓展的(底层存储指的是 datanode,当集群存储 空间不够时,可简单的添加机器以进行水平拓展),但 namespace 不可以。 当前的 namespace 只能存放在单个 namenode 上,而 namenode 在内存中存储了整个分布式文件系统中的元数据信息,这限制了集群中数据块,文件和目录的数目。

1.多个 NN 共用一个集群 DN 的存储资源,每个 NN 都可以单独对外􏰀供服 务。
2.每个 NN 都会定义一个存储池,有单独的 id,每个 DN 都为所有存储池􏰀供 存储。
3.DN 会按照存储池 id 向其对应的 NN 汇报块信息,同时,DN 会向所有 NN 汇 报本地存储可用资源情况。
4.如果需要在客户端方便的访问若干个 NN 上的资源,可以使用客户端挂载 表,把不同的目录映射到不同的 NN,但 NN 上必须存在相应的目录。

2.HDFS HA

HA.png

HA 的 namenode 主要分为共享 editLog 机制和 ZKFC 对 namenode 状态的控
制。

  1. 集群中存在多个 namenode,这些 namenode 都有状态,分为 active 和 standby 状态。
  2. 然后各个 namenode 之间通过共享文件系统存储编辑日志文件。active master 将信息写入共享存储系统,而 standby master 则读取该信息以保持与 active master 的同步,从而减少切换时间。
  3. 此外,datanode 还需同时向各个 namenode 发送数据块处理报告。
  4. 每一个 namenode 运行着一个轻量级的故障转移控制器 ZKFC。用于监视和 控制 namenode 进程。ZKFC 是基于 Zookeeper 实现的,启动的时候会创建 HealthMonitor 和 ActiveStandbyElector 这两个组件,创建的同时也会向 HealthMonitor 和 ActiveStandbyElector 注册相应的回调方法。

HealthMonitor:主要负责检测 NameNode 的健康状态,如果检测到 NameNode 的状态发生变化,会回调 ZKFailoverController 的相应方法进行自动的主备选举。
ActiveStandbyElector:主要负责完成自动的主备选举,内部封装了 Zookeeper 的处理逻辑,一旦 Zookeeper 主备选举完成,会回调 ZKFailoverController 的 相应方法来进行 NameNode 的主备状态切换。


HA高可用.png
  1. HealthMonitor 初始化完成之后会启动内部的线程来定时调用对应 NameNode 的 HAServiceProtocol RPC 接口,对 NameNode 的健康状态进行 检测。
  2. HealthMonitor 如果检测到 NameNode 的健康状态发生变化,会回调 ZKFailoverController 注册的相应方法进行处理。
  3. 如果 ZKFailoverController 判断需要进行主备切换,会首先使用 ActiveStandbyElector 来进行自动的主备选举。
  4. ActiveStandbyElector 与 Zookeeper 进行交互完成自动的主备选举。
  5. ActiveStandbyElector 与 Zookeeper 进行交互完成自动的主备选举完成后, 会回调 ZKFailoverController 的相应方法来通知当前的 NameNode 成为主 NameNode 或备 NameNode.
  6. ZKFailoverController 调用对应 NameNode 的 HAServiceProtocol RPC 接口 的方法将 NameNode 转换为 Active 状态或 Standby 状态。

Fencing(防御脑裂)实现: Hadoop 公共库中对外􏰀供了两种 fencing 实现, 分别是 sshfence 和 shelllfence(缺省实现) ,其中 sshfence 是指通过 ssh 登陆 目标 Master 节点上,使用命令 kill 将进程杀死(通过 tcp 端口号定位进程 pid,该方法比 jps 命令更准确);shellfence 执行自定义脚本。

判断是否脑裂: 自身故障,它会先删除持久化节点然后再关闭。如果是脑裂的 话,它只是临时节点消息,持久化还存在。 所以我们这边可以通过判断持久化 节点是否存在,来判断是否是因为自身故障。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容

  • 翻译: http://hadoop.apache.org/docs/stable/hadoop-project-d...
    金刚_30bf阅读 512评论 0 1
  • HDFS 2.0 的 HA 实现 Active NameNode 和 Standby NameNode:两台 Na...
    Shawn999阅读 768评论 0 0
  • 前言Hadoop2.0之前,NameNode是单个集群的故障点,NameNode作为集群首脑,存放着集群中所有的元...
    叫我不矜持阅读 1,713评论 0 3
  • 为了解决NameNode是单个集群的故障点,NameNode作为集群首脑,存放着集群中所有的元数据,一旦节点出错,...
    雨沐风中阅读 1,330评论 0 0
  • Zookeeper用于集群主备切换。 YARN让集群具备更好的扩展性。 Spark没有存储能力。 Spark的Ma...
    Yobhel阅读 7,267评论 0 34