2.HDFS
一.分布式文件系统
1.分布式文件系统(Distributed File System)概念
-
分布式文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。
![](https://img2020.cnblogs.com/i-beta/842724/202003/842724-20200302205127793-1075914215.png)
2.分布式文件系统特点
-
分布式文件系统是基于Master/Slave模式,通常提供多个供用户访问的服务器。
-
分布式文件系统一般都会提供备份和容错功能。
-
分布式文件系统一般都会基于操作系统的本地文件系统
-
多用户多应用的并行读写是分布式文件系统产生的根源
-
分布式文件系统扩充存储空间的成本低廉,提供冗余备份和分布式计算
3.分布式文件系统结构
-
分布式文件系统在物理结构上是由计算机集群中的多个节点构成的。
-
节点分为两类:
-
主节点(Master Node):也被称为名称节点(NameNode)
-
从节点(Slave Node):也被称为数据节点(DataNode)
![](https://img2020.cnblogs.com/i-beta/842724/202003/842724-20200302205200663-1366816147.png)
二.HDFS
1.HDFS概念
-
HDFS:Hadoop Distributed File System
-
HDFS:是一个使用Java实现的、分布式的、可横向扩展的文件系统
-
HDFS:是Hadoop核心组件
2.HDFS的体系结构
-
HDFS采用主从结构模型,一个HDFS集群包括一个名称节点和若干个数据节点。
-
名称节点(NameNode):作为中心服务器,负责管理文件系统的命名空间以及客户端对文件的访问。
-
数据节点(DataNode):一个节点运行一个数据节点进程,负责处理文件系统客户端的读/写请求。
-
名称节点的统一调度下进行数据块的创建、删除和复制等操作。每隔数据节点的数据实际上是保存在本地Linux文件系统中的。
![](https://img2020.cnblogs.com/i-beta/842724/202003/842724-20200302210013088-775018333.png)
3.HDFS设计目标
-
大数据集:用于存储大量文件,不适合小文件存储。
-
基于廉价的普通硬件,可以容错硬件出错。
-
简单的一致性模型:HDFS应用程序一次写入,多次读取文件的访问模式。
-
顺序的数据流访问:适用于处理批量数据,而不适合随机定位访问。
-
侧重高吞吐量的数据访问,可以容忍数据访问的高延迟。。
4.HDFS的优点
-
高容错性:数据自动备份和自动恢复
-
适合批处理
-
适合大数据处理
-
可构建在廉价机器上
5.HDFS的缺点
-
不适合低延时数据访问:寻址时间长,适合读取大文件
-
不适合小文件存取:寻道时间超过文件读取时间
-
不适合并发写入、文件随即修改:一个文件只能有一个写者,仅支持append(日志)
6.HDFS存储设计思想
![](https://img2020.cnblogs.com/i-beta/842724/202003/842724-20200302211557430-243362009.png)
![](https://img2020.cnblogs.com/i-beta/842724/202003/842724-20200302211604786-1111982557.png)
7.HDFS架构
![](https://img2020.cnblogs.com/i-beta/842724/202003/842724-20200302211635347-1490574815.png)
8.HDFS核心概念
-
Block:文件被窃氛围固定大小的数据块
-
默认数据块大小为128MB(hadoop2.x),hadoop1.x为64MB,不到128MB单独存成一个block。
-
每个文件分成的block被存储在不同的数据节点上。
-
每个block都有三份副本,相互都是平等的。
-
NameNode(NN):名称节点
-
概念:用于管理文件系统命名空间的组件
-
特点:一个HDFS集群只有一个NameNode,一个命名空间,一个根目录,一份元数据。
-
主要功能:
-
用于接受客户端的读写服务
-
保存metadata数据
-
保存文件的拥有者(ownership)和权限(permissions)
-
保存文件包含的块信息以及块在数据节点的位置(由数据节点启动时上报)
-
DataNode(DN):数据节点,用于存储数据块block
-
启动时需要向NN汇报block信息
-
通过向NN发送心跳保持联系(3秒一次),如果NN在10分钟没有收到DN的心跳,则失去节点,将这个DataNode上存储的Block再备份到其他的节点上保证副本数量。
-
BlockSize是不可变的为128MB,但是副本数量用户可以设置,默认为3个。
-
对于不足128MB数据是不会占用128MB实际空间
-
元数据(metadata):
-
保存在NameNode中,启动后会加载到内存中,用于快速查询
-
主要包括:
-
fsimage:元数据镜像文件,用于保存文件系统的目录树
-
edits:元数据操作日志,用于对目录树的修改操作,被写入共享存储系统中
-
SecondaryNameNode(SNN):
-
功能:帮助NN合并edits,减少NN启动时间,不是NN的备份
-
SNN执行的合并时机:
-
根据配置文件设置的时间间隔fs.checkpoint.period,默认3600秒
-
根据配置文件设置edits log大小fs.checkpoint.size,规定edits文件的最大值默认是64MB
-
NameNode高可用时没有SNN
-
HA支持动态增加DataNode
9.Block的副本防止策略
-
第一个副本:放置在上传文件的DN,如果是集群外提交,则随机挑选一台磁盘不太满、CPU不忙的节点。
-
第二个副本:放置在与第一个副本不同的机架的节点上。
-
第三个副本:与第二个副本相同机架的节点。
-
更多副本:随机节点。
![](https://img2020.cnblogs.com/i-beta/842724/202003/842724-20200302221441961-163812645.png)
10.HDFS读文件流程
![](https://img2020.cnblogs.com/i-beta/842724/202003/842724-20200302221611963-1016447567.png)
11.HDFS写文件流程
![](https://img2020.cnblogs.com/i-beta/842724/202003/842724-20200302221554909-1476385238.png)
原文地址:https://www.cnblogs.com/zhihaospace/p/12398469.html