HDFS系统学习笔记

 

HDFS系统

1.  读数据流程

 


 

 客户端开始读取,打开FS,首先从NameNode获取元数据(返回的元数据包括数据块的定义及位置,是否几个副本的位置也同时返回了?),然后根据元数据从各数据节点读取数据,其中数据节点的选择采取就近原则

问题:读取过程中一个datanode挂掉了,会怎么样?

如果在与datanode通讯时遇到问题,则会寻找最邻近的一个datanode,同时会记住这个故障datanode,保证以后不会重复提取这个节点后续的块。

该机制中,namenode最关键,但其存储的数据量小、功能单一,相对稳定。

 

2. 网络拓扑规则



 

将两节点的带宽作为距离的衡量标准。

几个层面:同一机器之间:n1;不同机器之间 d1,不同机架之前:r1;不同数据中心之间d1

目前hadoop对不同数据中心的支持仍然不是很好。

网络拓扑,根据距离,按照树节点的层级关系进行选择节点。

 

3.  写数据流程



 

namenode获取到分配的datanode,然后根据获取的列表,由数据队列和确认队列来逐个写数据。

1datanode发给第2datanode,第2datanode发给第3datanode。。。

确认队列用于确认所有都正常写入后,从队列中清除数据。

如果写入过程中出现问题,则关闭管线,确认队列中所有的数据包都添加到队列的最前端,保证故障节点的下游datanode不会漏掉任何一个数据包。

确定一个新的datanode,并从管线中删除故障节点。

 

4.   复本存储规则



 

默认策略是:在客户端的节点放置第一个datanode,如果客户端在集群之外,则随机选择一个节点,不过系统会避免挑选存储太慢或者太忙的节点。

2个副本会放在与第1个机架不同且随机选择一个节点(离架),第3个副本和第2个副本放在相同的机架上,且随机选择一个节点。

其他的副本放在集群中随机选择的节点上,不过系统尽量避免在相同的机架上放太多副本。

这种方法,提供稳定性(数据存储在两个机架上)并实现很好的负载均衡,包括写入带宽(写入操作只需要遍历一个交换机)、读取性能(可以从两个机架中选择读取)和集群中块的均匀分布(客户端只在本地机架写入一个块)

 

5.  HDFS的其他工具

Distcp:批量复制

Archive:存档

 

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

 

作者:CNZQS|JesseZhang  个人博客:CNZQS(http://www.cnzqs.com)

版权声明:除非注明,文章均为原创,可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值