当前位置:   article > 正文

Hadoop文件系统——HDFS的组织架构设计_在hadoop2.x版本中3个5m和1个130m的文件,在hdfs中会产生多个block块

在hadoop2.x版本中3个5m和1个130m的文件,在hdfs中会产生多个block块

一、Hadoop Distributed FileSystem(HDFS)

1. HDFS的设计

HDFS时为以流式数据访问模式存储超大文件而设计的文件系统,在商用硬件集群上运行。

1.1 文件块(Block)

HDFS以块为单位保存文件,在Hadoop2.x版本中块的大小默认为128M(在hadoop1.x中64M,通过dfs.blocksize规定)。一个小于块大小的文件不会占据整个块空间。

1.1.1 如何确定HDFS中块的大小?

HDFS中块比磁盘大,目的是减少寻址开销,从而传输一个由多个块组成的文件的时间就取决于磁盘的传输速率。
如果块设计的太大,传输数据时间会增大;如果块设计的太小,会增加寻址时间。

块大小的设计原则:寻址时间为传输时间的1%

目前磁盘的传输速率普遍为100MB/s,若希望寻址时间在10ms以内,那么传输时间为1s,Block大小为100MB,取2的整数次幂得到128MB。

1.1.2 采用块的好处
  • 减少了寻址时间,提高处理大文件的效率
  • 一个文件可以大于网络中任意一个磁盘的容量,不需要存储在同一块磁盘上
  • 简化存储管理(块的大小固定),元数据可以不与块一同储存。
  • 便于提高系统的容错和实用性,方便复制
1.2 NameNode,Secondary NameNode & DataNode

HDFS集群有两种节点,以Master-Slave模式运行。

NameNode&Secondary NameNode

NameNode作用:管理整个文件系统的命名空间;配置副本策略;管理Block的映射信息;处理客户端读写请求
SeconaryNameNode作用:复制NameNode,定期合并Fsimage,Edits;辅助恢复NameNode

NameNode中并不保留Block的位置信息,而是DataNode启动后定期汇报。

工作机制

  • 第一阶段:NameNode启动
    • 第一次启动NameNode格式化后,创建Fsimage和Edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存
    • 客户端对元数据进行增删改的请求:NameNode先记录操作日志,更新滚动日志再内存中对数据进行增删改。
  • 第二阶段:Secondary NameNode工作
    • Secondary NameNode询问NameNode是否需要CheckPoint,返回NameNode是否检查结果。( 触发CheckPoint需要满足两个条件中的任意一个:1小时时间到和每隔一分种检查Edits中操作次数是否达到100万
    • 若需要CheckPoint则请求执行:
      • NameNode滚动正在写的Edits日志,生成一个空的edits.inprogress,将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode;
      • Secondary NameNode加载编辑日志和镜像文件到内存,并合并,生成新的镜像文件fsimage.chkpoint。
      • 拷贝fsimage.chkpoint到NameNode,NameNode将fsimage.chkpoint重新命名成fsimage。

Secondary NameNode恢复NameNode的方法:

  • 直接拷贝
  • 使用hdfs namenode -importCheckpoint启动NameNode守护进程,从而将SecondaryNameNode中数据拷贝到NameNode目录中

集群安全模式:

  • NameNode启动时,首先将镜像文件(Fsimage)载入内存,并执行编辑日志(Edits)中的各项操作。一旦在内存中成功建立文件系统元数据的映像,则创建一个新的Fsimage文件和一个空的编辑日志。此时,NameNode开始监听DataNode请求。这个过程期间,NameNode一直运行在安全模式,即NameNode的文件系统对于客户端来说是只读的。
  • 系统中的数据块的位置并不是由NameNode维护的,而是以块列表的形式存储在DataNode中。在系统的正常操作期间,NameNode会在内存中保留所有块位置的映射信息。在安全模式下,各个DataNode会向NameNode发送最新的块列表信息,NameNode了解到足够多的块位置信息之后,即可高效运行文件系统。
  • 如果满足“最小副本条件”NameNode会在30秒钟之后就退出安全模式。所谓的最小副本条件指的是在整个文件系统中99.9%的块满足最小副本级别(默认值:dfs.replication.min=1)。在启动一个刚刚格式化的HDFS集群时,因为系统中还没有任何块,所以NameNode不会进入安全模式
DataNode:

作用:储存实际数据块;执行读写操作

  • 一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。DataNode会周期性检验文件的校验和是否与创建时相同以保证文件的正确性;
  • DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息
  • 心跳是每3秒一次心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟(默认超时时长10分钟+30秒)没有收到某个DataNode的心跳,则认为该节点不可用
  • 集群运行中可以安全加入和退出一些机器。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/917722
推荐阅读
相关标签
  

闽ICP备14008679号