美文网首页
hadoop中高可用HA的HDFS的架构分析

hadoop中高可用HA的HDFS的架构分析

作者: alexlee666 | 来源:发表于2019-09-29 11:00 被阅读0次

一、Hadoop组成

  • Hadoop 1.x版本中,Hadoop由HDFS和MapReduce组成,前者负责分布式存储,后者负责分布式计算
  • Hadoop 2.x版本中,Hadoop引入了第三个组件YARN(Yet Another Resource Negotiator),其负责资源分配和调度

二、高可用的HDFS组成

HDFS采用主从结构,Active NameNode和Standby NameNode,是一种高可用HA的设计,两个节点内存中的metadata是同步的(即一致),因此可以保证当前者出错时,后者能够马上顶上,即:

  • Active NameNode提供naming服务;
  • Standby NameNode定期对metadata进行checkpoint;
  • 一旦前者fail,就直接over到后者;

基于高可用HA的HDFS包含组件:

  • 多个DataNode;(1个DataNode是一个进程)
  • 1个Active NameNode;(1个NameNode是一个进程)
  • 1个Standby NameNode;
  • JournalNode集群;

【接下来从功能和处理性能角度分析为何需要👆这些组件:】


2.1 DataNode:

  • 存储数据;
  • 数据会复制备份(默认3份),以应对当某个机器节点的数据丢失后没,从其他节点进行恢复;

2.2 Active NameNode:

  • 接收客户端的请求,管理整个 HDFS 集群的metadata(即元数据),比如说文件目录树、权限的设置、副本数的设置,等等;
  • metadata存放在内存中,以避免频繁的磁盘IO影响性能;
这就带来问题1:
  • 将metadata存放在内存中,万一停电、NameNode所在机器宕机,而导致metadata丢失怎么办?

这个问题的答案就是:

  • NameNode中的fsimage文件和edits log文件;
  • fsimage文件:负责维护文件系统树、所有文件和文件夹的元数据metadata,就像是(全量);
  • edits log文件:负责存储文件的add、delete以及update的操作记录,就像是(增量);
  • 之所以使用两个文件,是因为fsimage文件通常很大;可以将edits log文件和fsimage文件合并为新的fsimage文件,并将旧的文件删除;
  • 每次NameNode重启时都需要将fsimage文件和edits log文件解析到内存中;

这样的话,当NameNode所在机器宕机,重启NameNode时将edits log加载到内存中即可恢复metadata,这样问题1就解决了;


但这样依旧存在问题2:

  • 因为每次NameNode重启时需要加载edits log,如果edits log变得越来越大时,加载edits log到内存中将会占据越来越多的内存,这将会对性能造成较大影响;

2.3 Standby NameNode 和 JournalNode集群:

>>>>>> 解决方案:
引入fsimage文件、JournalNodes集群、Standby NameNode,将Active NameNode中众多的edits log文件同步写入到Standby Namenode中的fsimage文件(该文件是merge了edits log之后的最新完整的metadata),然后将新的fsimage文件去替换Active NameNode中的旧的fsimage文件,从而实现fsimage文件(存储了最新完整的metadata)的更新,从而避免Active NameNode重启时加载众多edits log文件较大耗时。

其解决步骤如下:

  • 首先,DataNode的要发生变化时,Active NameNode将metadata的修改记录写入到自身所在磁盘的edits log(有很多历史的log文件,名称不同)、和JournalNode集群edits log中;
  • Standby NameNode从JournalNode中拉取edits log并将其加载到 Standby NameNode的内存的文件目录树中,保证Standby NameNode内存中的metadata和Active Standby NameNode中的保持一致
  • Standby NameNode定时将其内存中的metadata写入到其磁盘的fsimage文件中,该文件是Standby NameNode的完整的metadata,该操作被称为checkpoint操作
  • 将Standby NameNode中的磁盘文件fsimage复制到Active NameNode中;
  • 删除Active NameNode中旧的edits log;

这样,当Active NameNode重启时,只需要加载fsimage即可,而不需要加载众多的edits log,从而提升重启速度;

具体过程,如图所示:


图2-1. HDFS主从架构

参考:http://lxw1234.com/archives/2015/08/440.htm

相关文章

网友评论

      本文标题:hadoop中高可用HA的HDFS的架构分析

      本文链接:https://www.haomeiwen.com/subject/cdopuctx.html