HDFS 高可用与高扩展性机制分析 | 青训营笔记

68 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第八天

一、本堂课重点内容:

  • HDFS 元数据服务的高可用
  • HDFS 数据存储高可用
  • HDFS 元数据服务的高扩展性
  • HDFS 数据存储的高扩展性

二、详细知识点介绍:

image.png

HDFS 元数据服务的高可用

在Hadoop集群中,namenode管理整个hdfs系统的元数据信息,直接决定hdfs文件系统的可用性,那么在一个典型的Hadoop集群中,有两台机器被配置为namenode,一台为active,另一台为standy状态。工作中active负责工作,standy保持足够的状态来提供快速故障切换。

HDFS 数据存储高可用

HDFS高可用工作机制

通过双NameNode消除单点故障

HDFS高可用工作要点

元数据管理方式需要改变内存中各自保存一份元数据;

Edits日志只有Active状态的NameNode节点可以做写操作;

两个NameNode都可以读取Edits;

共享的Edits放在一个共享存储中管理(qjournal和NFS两个主流实现);

需要一个状态管理功能模块实现了一个zkfailover,常驻在每一个namenode所在的节点,每一个zkfailover负责监控自己所在NameNode节点,利用zk进行状态标识,当需要进行状态切换时,由zkfailover来负责切换,切换时需要防止brain split现象的发生。 必须保证两个NameNode之间能够ssh无密码登录

隔离(Fence),即同一时刻仅仅有一个NameNode对外提供服务。

HDFS 元数据服务的高扩展性

image.png

HDFS 数据存储的高扩展性

脑裂(split-brain)是指“大脑分裂”,本是医学名词。在HA集群中,脑裂指的是当联系主备节点的"心跳线"断开时(即两个节点断开联系时),本来为一个整体、动作协调的HA系统,就分裂成为两个独立的节点。由于相互失去了联系,主备节点之间像"裂脑人"一样,使得整个集群处于混乱状态。脑裂的严重后果:

1)集群无主:都认为对方是状态好的,自己是备份角色,后果是无服务;

2)集群多主:都认为对方是故障的,自己是主角色。相互争抢共享资源,结果会导致系统混乱,数据损坏。此外对于客户端访问也是一头雾水,找谁呢?

避免脑裂问题的核心是:保持任意时刻系统有且只有一个主角色提供服务。

小文件问题

image.png

三、引用参考&推荐书目