HDFS存储结构剖析(HADOOP)

MAIN:

 

HDFS分布式文件系统

 

NameNode

  • NameNode是一个中心服务器,单一节点,负责管理文件系统的namespace以及客户端对文件的访问。
  • 文件操作,NameNode负责文件元数据的操作,DataNode负责处理文件内容的读写请求,与文件内容相关的数据是不经过NameNode,只会询问它跟那个DataNode联系,否则NameNode会成为系统的瓶颈。
  • 副本的路径是由NameNode来控制的。它会根据全局情况来做出块放置决定,在读取文件时,NameNode会优先使用户读取最近的副本,降低带块的消耗和读取时延。
  • NameNode全权管理着数据块的复制,它会周期性的从集群中的每个DataNode中接收到心跳信号和BlockReport。能够接收到心跳信号意味着这个DataNode节点工作正常。块状态报告包含了一个DataNode上所有的数据块的列表。

 

DataNode

  • 一个数据块在DataNode以文件存储在磁盘上,包含了两个文件。一个是数据本身,一个是元数据。包括了数据块的长度,块数据的校验和,以及时间戳。
  • DataNode启动后向NameNode注册,通过后,周期性(1h)的向NameNode上报所有的快信息。
  • 心跳是每3秒一次,心跳的返回结果带有NameNode给这个DataNode的命令如复制块数据到另外一个机器上,或者删除某个数据块。如果超过了10分钟没有收到来着某个DataNode的心跳,那么认为这个节点不可以用。
  • 集群运行中可以安全的加入和退出一些机器。

文件

  • 文件切分为块(默认为128M),以块为单位,每个块都有多个副本存储在了不同的机器上,副本数可在文件生成时指定(默认值为3)。
  • NameNode是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每一个文件的块列表以及块所在的DataNode等等。
  • DataNode在本地文件系统存储文件块数据,以及块数据的校验和。
  • 可以创建,删除,移动或者重命名文件,当文件创建,写入或者关闭之后不能够修改文件的内容。

 

数据损坏处理

  • 当DataNode读取block的时候,它会计算checksum。
  • 如果计算后的checksum,与block创建时候的值不一样,那么就可以说明block以及损坏。
  • Client读取其他DN上的block。
  • NameNode标记该块已经损坏,然后复制block达到预期设置的文件的备份数。
  • DataNode在其他的文件创建后的三周验证它的checksum。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值