HDFS官网翻译——HDFS 架构指南(三)

举报
敏敏君主 发表于 2021/01/29 10:05:22 2021/01/29
【摘要】 翻译https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html-----------------------------------------------------------------------------------------------数据复制HDFS主要用于集群中可靠存储大型文件。它将每个文件作为一个快序列存储起来;文件包含...

翻译https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html

-----------------------------------------------------------------------------------------------

数据复制

HDFS主要用于集群中可靠存储大型文件。它将每个文件作为一个快序列存储起来;文件包含的所有块存储大小是相同的,即块大小一致。通过对文件块进行复制实现数据高容错。每个文件都可以配置块大小和副本数(这一点很关键!)。应用也可以指定文件副本数。文件创建时可以指定副本数,之后也可以修改。HDFS中存储的文件只能写入一次,且任何时刻只有一个写入器,即写入是串行的。

NameNode节点管理块副本情况。NameNode间隔性从集群中每个DataNode接受DataNode的心跳报文。如果能在规定时间内接收到DataNode心跳报文则意味着DataNode正常工作,不然意味着DataNode故障。DataNode上报给NameNode它自身存储的所有块列表。

副本存储:新生儿的第一步

副本位置决定了HDFS的可靠性和性能。对于副本位置的优化使得HDFS优于其他分布式文件系统。这个优化需要大量的训练与实践。优化的目的是提升数据可靠性、可用性和提升网络带宽利用率。副本放置策略的当前实现是朝这个方向迈出的第一步。短期优化目标是可用于生产系统。

大批运行计算集群的HDFS实例通常都会夸机架(放置服务器的柜子)。通常情况下,在一个机架内通信的效率高于不同机架间通信。

NameNode确认将用户文件存入哪个DataNode是通过程序感知机架意识的。简单的方式(不是最优)是将副本存储在同一个机架内。这种方案存在一定风险,如果机架坏了,那么存储的数据全部丢失。

更常见的做法为,我们假设文件复制数为3,HDFS会将一个副本存储到本机架,另外2个副本一起存储到另外一个机架。这样可以做到安全与效率的平衡。

副本选择

HDFS选择从最接近读者的副本节点读取文件。如果读节点与访问的文件某个副本在同一节点(DataNode),那么HDFS默认从该节点返回文件给读者。如果HDFS有多个数据中心,那么HDFS会选择本地数据中心存储副本,以此减少网络带宽压力、提升读性能。

安全模式

在启动节点,NameNode节点进入安全模式。NameNode在安全模式下数据不会产生副本。但是NameNode还可以接收DataNode的心跳报文和块报文。当NameNode达到配置的数据副本数的某个特定百分比值的时候,NameNode退出安全模式。然后,它确定的数据块列表(如果有的话)仍然有少于指定数量的副本。所以NameNode会开始在其他DataNode上复制块以使得数据块的副本数达到配置的要求。

【版权声明】本文为华为云社区用户翻译文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容, 举报邮箱:cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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