前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop 图解HDFS工作原理

Hadoop 图解HDFS工作原理

作者头像
smartsi
发布2019-08-07 09:00:15
2.5K0
发布2019-08-07 09:00:15
举报
文章被收录于专栏:SmartSiSmartSi

结合Maneesh Varshney的漫画改编,为大家分析HDFS存储机制与运行原理。

1. HDFS角色

如下图所示,HDFS存储相关角色与功能如下:

  • Client:客户端,系统使用者,调用HDFS API操作文件;与NameNode交互获取文件元数据;与DataNode交互进行数据读写。
  • Namenode:元数据节点,是系统唯一的管理者。负责元数据的管理;与client交互进行提供元数据查询;分配数据存储节点等。
  • Datanode:数据存储节点,负责数据块的存储与冗余备份;执行数据块的读写操作等。

2. HDFS写文件

2.1 发送写数据请求

HDFS中的存储单元是block。文件通常被分成64或128M一块的数据块进行存储。与普通文件系统不同的是,在HDFS中,如果一个文件大小小于一个数据块的大小,它是不需要占用整个数据块的存储空间的。

2.2 文件切分
2.3 DataNode分配
2.4 数据写入
2.5 完成写入
2.6 角色定位
2.7 写操作分析

通过写过程,我们可以了解到:

  • HDFS属于Master与Slave结构。一个集群中只有一个NameNode,可以有多个DataNode
  • HDFS存储机制保存了多个副本,当写入1T文件时,我们需要3T的存储,3T的网络流量带宽;系统提供容错机制,副本丢失或宕机可自动恢复,保证系统高可用性。
  • HDFS默认会将文件分割成block。然后将block按键值对存储在HDFS上,并将键值对的映射存到内存中。如果小文件太多,会导致内存的负担很重。

3. HDFS读文件

3.1 用户需求

HDFS采用的是一次写入多次读取的文件访问模型。一个文件经过创建、写入和关闭之后就不需要改变。这一假设简化了数据一致性问题,并且使高吞吐量的数据访问成为可能。

3.2 联系元数据节点
3.3 下载数据

前文提到在写数据过程中,数据存储已经按照客户端与DataNode节点之间的距离进行了排序,距客户端越近的DataNode节点被放在最前面,客户端会优先从本地读取该数据块。

3.4 思考

4. HDFS容错机制一

4.1 三类故障
4.1.1 节点失败
4.1.2 网络故障
4.1.3 数据损坏(脏数据)
4.2 故障监测机制
4.2.1 节点失败监测机制
4.2.2 通信故障监测机制
4.2.3 数据错误监测机制
4.3 心跳信息与数据块报告

HDFS存储理念是以最少的钱买最烂的机器并实现最安全、难度高的分布式文件系统(高容错性低成本),从上可以看出,HDFS认为机器故障是种常态,所以在设计时充分考虑到单个机器故障,单个磁盘故障,单个文件丢失等情况。

5. HDFS容错机制二

5.1 写容错
5.2 读容错

6. HDFS容错机制三

6.1 数据节点(DN)失效

7. 备份规则

7.1 机架与数据节点
7.2 副本放置策略

数据块的第一个副本优先放在写入数据块的客户端所在的节点上,但是如果这个客户端上的数据节点空间不足或者是当前负载过重,则应该从该数据节点所在的机架中选择一个合适的数据节点作为本地节点。

如果客户端上没有一个数据节点的话,则从整个集群中随机选择一个合适的数据节点作为此时这个数据块的本地节点。

HDFS的存放策略是将一个副本存放在本地机架节点上,另外两个副本放在不同机架的不同节点上。

这样集群可在完全失去某一机架的情况下还能存活。同时,这种策略减少了机架间的数据传输,提高了写操作的效率,因为数据块只存放在两个不同的机架上,减少了读取数据时需要的网络传输总带宽。这样在一定程度上兼顾了数据安全和网络传输的开销。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. HDFS角色
  • 2. HDFS写文件
    • 2.1 发送写数据请求
      • 2.2 文件切分
        • 2.3 DataNode分配
          • 2.4 数据写入
            • 2.5 完成写入
              • 2.6 角色定位
                • 2.7 写操作分析
                • 3. HDFS读文件
                  • 3.1 用户需求
                    • 3.2 联系元数据节点
                      • 3.3 下载数据
                        • 3.4 思考
                        • 4. HDFS容错机制一
                          • 4.1 三类故障
                            • 4.1.1 节点失败
                            • 4.1.2 网络故障
                            • 4.1.3 数据损坏(脏数据)
                          • 4.2 故障监测机制
                            • 4.2.1 节点失败监测机制
                            • 4.2.2 通信故障监测机制
                            • 4.2.3 数据错误监测机制
                          • 4.3 心跳信息与数据块报告
                          • 5. HDFS容错机制二
                            • 5.1 写容错
                              • 5.2 读容错
                              • 6. HDFS容错机制三
                                • 6.1 数据节点(DN)失效
                                • 7. 备份规则
                                  • 7.1 机架与数据节点
                                    • 7.2 副本放置策略
                                    相关产品与服务
                                    对象存储
                                    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档