HDFS的架构演进

结合企业应用的实践,HDFS 的架构演进经历了如下阶段

单Namenode -> 多Namenode HA -> 联邦集群 -> 多数据中心

1 单Namenode

image

单Namenode部署最大的问题是 Namenode 单点故障的问题,即Namenode 一旦挂掉,整个集群就停止服务了,于是就有了接下来的 HA集群,即多个 Namenode ,活动的(Active) Namenode 挂掉后 , 其他待命的 (Standby) Namenode 立即接管。

2 HA

image

使用一主一从两个Namenode来解决单点故障问题,两个Namenode需要解决的问题有:

  • 当Active 死掉,Standby 接管集群的时候,需要还原到 Active 当时的状态,所以使用一个共享的文件系统 JournalNode 来存储 Namenode 托管的元数据。
  • 如果 Active 是假死,Standby 切换为 Active 后就会出现脑裂问题,所以当 Standby 切换为 Active时需要保证 之前的Active已经完全死掉了。解决办法就是使用一个脚本直接Kill 掉进城,甚至可以直接发送关机命令。

HA集群也有性能瓶颈:集群中只有一个活动(Active)的 Namenode节点,当集群负载大的时候,Namenode 就成了性能的瓶颈。因为一个Active Namenode 服务是部署在一台物理机上的,物理机的内存和CPU是有限的,集群负载大的是欧可能造成 Active Namenode 所在的服务器资源不够。

为了解决这个问题,就有了接下来的联邦集群,即将集群中的 Datanode 切分。

3 联邦

image

可以理解为是两个独立的HA集群,共用了 Datanode 的服务器资源。但是对于客户端来说是无感知的,客户端依然认为是一个集群。客户端使用 Hash 来确定文件存储在哪个联邦中。

这样就可以解决单 NameNode 服务器资源不足,负载过大的问题。

在企业场应用中,一般当集群规模达到10000节点以上时可以考虑使用联邦部署。

联邦集群也存在缺陷:由于集群规模很大,可能会有跨机房和灾备的问题。

4 多数据中心

image

Hadoop 项目官方并没有给出一个多机房部署的方案。该方案是一些大公司实践中总结出的一个可行方案。其中最关键的是 Namenode Proxy 服务,这是一个 Namenode 的服务代理,作用是将客户端的请求转发到正确的机房服的目标务器上。所以对于客户端是无感知的。


HDFS的架构演进
https://inio.cc/2022/08/25/hadoop/HDFS的架构演进/
作者
漂北一
发布于
2022年8月25日
更新于
2023年2月19日
许可协议