概述
>_<
首先,我们需要从整体上了解什么是分布式文件系统 >_<。
分布式文件系统把文件存储到多个计算机节点上,成千上万的计算机节点构成计算机集群。
计算机集群听着高大上,其实是由普通廉价硬件组成,硬件开销是极低的!
好了,我们已经知道分布式文件系统是由计算机集群上的多个节点组成的——这些节点分为两类:
- 名称节点(NameNode),也称为主节点(MasterNode)
- 数据节点(DataNode),也称为从节点(SlaveNode)
一·HDFS简介
▶ HDFS是一种分布式文件系统:Hadoop Distributed File System(即“Hadoop的分布式文件系统”)
▶ HDFS的目标:
- 兼容廉价的硬件设备
- 流数据读写
- 大数据集
- 简单的文件模型
- 强大的跨平台兼容性
▶ HDFS的局限性:
- 不适合低延迟数据访问
- 无法高效存储大量小文件
- 不支持多用户写入及任意修改文件
二·HDFS相关概念
▶ 块(Block)
一个大规模文件被分为多个块,以块作为存储单位。HDFS默认一个块64MB。
比起其他文件系统,这个块其实真的已经非常非常大了。
下面介绍块的好处(一定要多理解 >_< !):
- 支持大规模文件存储。因为一个大规模文件可以被拆分为多个文件块,这些文件块可以被分到不同的节点。这样文件大小就脱离了单个节点大小的限制
- 简化系统设计。每个块足够大,而且大小固定,因此索引开销很小;其次,文件块和元数据是脱离的,管理更加方便
- 适合数据备份。每个文件块可以冗余到多个节点上,进行备份
▶ 名称节点和数据节点
名称节点 NameNode | 数据节点 DataNode |
---|---|
维护文件→块→数据节点的映射 | 维护块id到本地文件的映射 |
存储元数据 | 存储文件内容 |
元数据位于内存 | 文件内容位于磁盘 |
一些相关细节:
-
名称节点由两个核心的数据结构组成:
-
由上图不难看出,EditLog的作用是日志备份。
它通常可以达到GB级,并且会不断膨胀。为了解决名称节点运行期间EditLog不断膨胀的问题,采用了SecondaryNameNode——第二名称节点
第二名称节点通常单独运行在一台机器上。
三·HDFS体系结构
▶ 主从结构模型(Master/Slave)
▶ 通信协议
基于网络传输,因此采用TCP/IP协议
▶ 客户端
打开、读取、写入这些文件操作,都是在客户端进行的
但是客户端仅仅知道文件名,要想真正操作文件的内容,需要先向名称节点提出请求,名称节点存有根目录→目录→文件→数据节点的映射,因而名称节点可以给客户端一个数据节点的列表,从而让他得以找到真正的数据节点。
▶ 体系结构局限性
HDFS体系结构的局限性都来源于:只设置 唯一 名称节点(NameNode)
- 命名空间的限制:名称节点毕竟是在内存中,实在是受限
- 性能的瓶颈:名称节点的性能瓶颈,就是整个系统的性能瓶颈
- 隔离问题:只有一个名称节点,自然无法隔离
- 集群的可用性:名称节点出问题,整个集群直接玩完
四·HDFS存储原理
▶ 冗余数据保存
增加数据容错性和可靠性的惯用伎俩——冗余备份
▶ 数据存取
存放:副本不仅要随机放到不同节点,还要让这些节点属于不同机架
读取:客户端请求读取时,从名称节点那里要来一个数据节点列表,上面有所有的副本
▶ 错误与恢复
- 名称节点出错:名称节点(FsImage+EditLog)出错整个集群就全完了——幸好有第二名称节点(SecondaryNameNode)做了备份
- 数据节点出错:数据节点会定期向名称节点发送心跳,心跳停止则说明该数据节点出错——这没什么,数据节点的冗余备份多的是
- 数据出错:通过读取数据信息后进行校验,得知是否出错——出错了也没什么,原因还是有备份
最后
以上就是感动鱼为你收集整理的【HDFS】Hadoop的分布式文件系统知识点总结的全部内容,希望文章能够帮你解决【HDFS】Hadoop的分布式文件系统知识点总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复