回味经典--HDFS文件系统设计

举报
Popeyes 发表于 2020/08/28 20:50:19 2020/08/28
【摘要】 概览:The Hadoop File System简称HDFS,是设计用于进行分布式的高可靠性的并且有着大带宽IO需求的文件存储系统。成千上万台的计算机可以加入到HDFS系统,并且存储成本不会因为扩容而降低他的性价比。 1.简介Hadoop为MapReduce算法提供了一个大数据分布式存储框架。Hadoop框架一个非常重要的性质是把数据进行了切分并存储到了很多的服务器上,并且会在这些机器上进...

概览:The Hadoop File System简称HDFS,是设计用于进行分布式的高可靠性的并且有着大带宽IO需求的文件存储系统。成千上万台的计算机可以加入到HDFS系统,并且存储成本不会因为扩容而降低他的性价比。

 

1.简介



HadoopMapReduce算法提供了一个大数据分布式存储框架。Hadoop框架一个非常重要的性质是把数据进行了切分并存储到了很多的服务器上,并且会在这些机器上进行并行计算。这样的话可以让运算贴近存储。

 




2.组成架构

 

  • NameNode(管理节点)

NameNode上存储有元数据以及文件系统树。

在进行数据读取时,首先会连接到namenode节点,查询距离客户端最近的文件存储datanode。然后再从距离最近的datanode节点获取数据。

在进行数据写入时,客户端会让namenode分配3个节点(默认可调整)来对数据进行存储。这个存储的过程是一个流水线的工作形式。

 

块与DataNode地址的映射表:该信息不会在checkpoint中记录,因为块地址可能经常会变化

imagenamespace镜像文件

checkpoint:对image的持久化记录,存在本地文件系统中

journalimage的修改日志,存在本地文件系统中

 

 

  • DataNode(工作节点)

每份在DataNode上的数据副本文件由两部分组成。第一部分是数据本身,另外一份是计算校验和(checksum)和block的生成水印。另外在HDFS系统中,如果数据没有装满一个block的话那么这个block就会是真实的数据大小而不是一个完整的Block的大小。当datanodenamenode进行通信时,会进行一次握手校验,用于判断datanode是否属于本集群以及校验软件的版本。需要两个都满足才会进行后续的操作。

 

在经过验证之后会进行常规的操作。NameNodeDataNode3秒会做一次心跳检测,用于验证datanode是否还可用。如果10分钟后都没有收到回复,那么就认为这个DataNode不可用,然后NameNode会把这个节点上面的数据副本重新安排存储到其他的datanode上。

 

  • HDFS客户端

与大多数的传统数据文件系统相似,HDFS也支持对文件的读,写,删除操作。

当从客户端进行数据写入时,namenode会首先把数据写入到一个DataNode,然后把这份数据托付给这个DataNode,后续这个DataNode会递归地进行数据写入。

 

 

3.副本管理

 

Block的放置

在一个巨大的HDFS集群中,倾向于把同一份数据的不同副本放置到不同的Rack(机柜)中。

HDFS中,1个网络距离是从一个节点到父节点的距离。计算两个节点的距离,可以通过计算他们到他们的共同父节点的距离之和。

 

在默认的副本管理策略里面可以很好地去平衡数据可靠性与数据读写速度。第一副本会放在Client所在的节点,然后剩余的两个副本会被随机地安放在不在同一个Rack的节点里面。

 

 

集群网络拓扑结构

 

 

 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。