这是我参与「第四届青训营 」笔记创作活动的的第八天
一、本堂课重点内容:
- HDFS 元数据服务的高可用
- HDFS 数据存储高可用
- HDFS 元数据服务的高扩展性
- HDFS 数据存储的高扩展性
二、详细知识点介绍:
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 元数据服务的高扩展性
HDFS 数据存储的高扩展性
脑裂(split-brain)是指“大脑分裂”,本是医学名词。在HA集群中,脑裂指的是当联系主备节点的"心跳线"断开时(即两个节点断开联系时),本来为一个整体、动作协调的HA系统,就分裂成为两个独立的节点。由于相互失去了联系,主备节点之间像"裂脑人"一样,使得整个集群处于混乱状态。脑裂的严重后果:
1)集群无主:都认为对方是状态好的,自己是备份角色,后果是无服务;
2)集群多主:都认为对方是故障的,自己是主角色。相互争抢共享资源,结果会导致系统混乱,数据损坏。此外对于客户端访问也是一头雾水,找谁呢?
避免脑裂问题的核心是:保持任意时刻系统有且只有一个主角色提供服务。