【Hadoop】HDFS高可用与高扩展原理分析(HA架构与Federation机制)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

文章目录

一、HDFS的高可用性HA架构

       为保证HDFS的高可用性即当NameNode节点机器出现故障而导致宕机时整个系统依旧可以维持运转那么只需要存在多个NameNode节点即可当前节点Active NameNode宕机的时候就立即切换到另外的备用节点Standby NameNode。这就所谓的HAHigh Available结构的基础架构和想法那么为了保证这一点则需要Standby NameNode随时做好准备使其与Active NameNode的节点状态保持同步元数据保持一致。
       HA架构中存在两个NameNode一个是Active NameNode是当前正在使用的NameNode另一个是Standby NameNode是备用的NameNode。在HA架构中不存在Secondary NameNode因为Standby NameNode会代替它的功能将edits文件整合为fsimage文件。
在这里插入图片描述
       如上图所示DataNode需要向Active NameNode和Standby NameNode分别发送block块的位置信息且HA结构中还构建了一组Journal Nodes用以同步Active NameNode和Standby NameNode的edits文件信息由于fsimage文件是由edits文件合并生成的因此保证两者edits文件的同步即可。
       图中的Zookeeper是为了实现自动切换NameNode功能当多个NameNode启动的时候会分别向Zookeeper中注册一个临时节点当它挂掉的时候这个临时节点也就消失了这是Zookeeper的特性。如果Zookeeper的监视器注意到当前的Active NameNode出现故障就会立即将Standby NameNode转换为Active NameNode将原本故障的Active NameNode转换为Standby NameNode即使后续该节点故障被排除也不会再切换回来直到当前节点也出现故障才会切换回原来那个节点。

二、HDFS的高扩展性Federation机制

       HDFS的Federation机制可以解决单一NameNode存在的问题当集群中数据增长到一定规模后NameNode 进程占用的内存可能会达到成百上千 GB此时NameNode成了集群的性能瓶颈。通俗的讲集群启动时DataNode会向NameNode上报所有的Block块信息每个块无论大小对象约占150byte而NameNode的内存是有限的当HDFS文件愈来愈多的时候NameNode就会成为集群的短板这也是为什么HDFS不适合存储小文件的原因。使用多个NameNode每个NameNode负责一个命令空间这种设计可提供以下特性

  • HDFS集群扩展性。多个NameNode分管一部分目录使得一个集群可以扩展到更多节点不再因内存的限制制约文件存储数目。
  • 性能更高效。多个NameNode管理不同的数据且同时对外提供服务将为用户提供更高的读写吞吐率。
  • 良好的隔离性。用户可根据需要将不同业务数据交由不同NameNode管理这样不同业务之间影响很小。

在这里插入图片描述

       HDFS的Federation机制下存在多个NameNode也就意味着存在多个NameSpace命名空间不同的NameNode分管不同的NameSpace。被同一个NameNode所管理的数据都在同一个NameSpace下一个NameSpace对应一个Block Pool所有数据块的集合但每个NameNode又共用全部的DataNode资源不同的块存储分别在不同的DataNode中。

三、HA架构 + Federation机制

在这里插入图片描述
       为了同时解决NameNode的单点故障问题和横向扩容问题超大规模的集群一般都会采用HA+Federation的部署方案。从图中可以看到每个Federation机制下的NameNode都是由一个Active NameNode和一个Standby NameNode一起构成的HA架构这样既考虑到了HDFS的高扩展性又顾及了HDFS的高可用性。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Hadoop