大数据分布式文件系统——HDFS

2023-12-13 21:39:07

分布式文件系统

FS File System

1:文件系统是基于硬盘之上的一个文件管理的工具

2:我们用户操作文件系统可以和硬盘进行解耦

DFS Distributed File System

1:分布式文件系统

2:将我们的数据存放在多台电脑上存储

3:HDFSmapreduce计算的基础

是什么

为各类分布式运算框架提供数据存储服务

文件切分思想

文件存放在一个磁盘上效率肯定是低的

1:读取效率

2:如果文件特别大会超出单机的存储范围

字节数组

1:如果文件特别大会超出单机的存储范围

2:数组可以拆分和组装,源文件不会受到影响

切分数据

对字节数组进行切分

拼接数据

按照数组的偏移量将数据连接

偏移量

1:当前数据存储在数组中的绝对路径

2:数组都会有索引,可以快速定位到数据的位置

数据存储原理

1:不管文件的的大小,所有的文件都是由字节数组构成

2:如果我们要切分文件,就是将一个字节数组分成多份

3:我们将切分后的数据拼接到一起,数据可以继续使用

4:我们需要根据数据的偏移量将他们重新拼接到一起

Block切分标准

1:拆分的数据块等大

(1):数据计算的时候简化问题的复杂度

????????进行分布式算法设计的时候,数据不统一,算法很难设计

(2):数据拉取的时候时间相对一致

(3):通过偏移量就知道这个块的位置

(4):相同文件,分成的数据块大小应该相等

2:数据块
1:数据被切分后的一个整体称之为块
2:在 H1 默认大小为 64M, H2 及其以后默认大小为 128M
3:同一个文件中,每个数据块大小要一致除了最后一个节点外
??????? (1):
????????????????不同文件中,块的大小可以不一致
????????????????文件大小不同可以设置不同的块的数量
4:真实情况下,会根据文件大小和集群节点的数量综合考虑块的大小
5: 数据块的个数 =Ceil 文件大小 / 每个块的大小)
HDFS中一旦文件被存储,数据不允许被修改
修改会影响偏移量
修改会导致数据倾斜
修改数据会导致蝴蝶效益
一般HDFS存储的都是历史数据。所以 将来Hadoopmr都用来进行离线数据的处理
块的大小一旦文件上传之后就不允许被修改

128MB-512MB

Block 数据安全
1:肯定要对存储数据做备份 :
2: 备份的数据肯定不能存放在一个节点上
??????? (1):使用数据的时候可以就近获取数据
3: 所以备份的数量要小于等于节点的数量
4:每个数据块会有 3 个副本,相同副本是不会存放在同一个节点上
5: 副本的数量可以变更
??????? (1): 可能近期的数据被分析的可能性跟大,副本数可以多设置几个
??????? (2):后期数据很少被分析,可以减少副本数

Block的管理效率

需要专门给节点进行分工

1:存储 DataNode
2:记录 NameNode
3: 日志 secondaryNameNode

作用

?Hadoop是专为从单一服务器到上千台机器扩展,每个机器都可以提供本地计算和存储。HDFS作为Hadoop生态中的一员,将数据分布式存储

为什么要用hdfs?

分而治之,将大文件,大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析

HDFS的优势

高容错
1:保存多个副本,且提供容错机制。
2:副本丢失或宕机自动恢复。默认存 3 份。
运行在廉价的机器上(商用机)
1:通过副本提高可靠性
2:通过副本提高可靠性
适合批处理
1:移动计算而非数据
2:数据位置暴露给计算框架。 NameNode 上有位置
适合大数据的处理

1:.TB,甚至PB级数据

2:百万规模以上的文件数量

3:10K+节点规模

流式数据访问
一次写入,多次读取,高吞吐量,所以可以同时处理大量数据

缺点

不擅长低延迟数据访问
比如毫秒级
不擅长小文件的分区
1:占用 NameNode 大量内存
2:磁盘寻道时间超过读取时间
不擅长并发写入,文件随机修改
1:一个文件只能有一个写入者
2:仅支持 append, 也就是添加(有组件实现删等)

基本概念
1:HDFS是用Java语言实现的、分布式的、可扩展的文件系统。
2:HDFS是Hadoop的三大核心(HDFS、MapReduce、YARN)和四大模块(Hadoop?Common、Hadoop?HDFS、Hadoop?MapReduce、Hadoop?YARN)之一。
3:HDFS主要应用于海量数据的存储。
4:HDFS的基本存储单位:块,块是最小的数据读写单位,默认存储块大小为128M。块的大小可以在配置文件hdfs-site.xml中修改。块的默认单位是Byte,每个块都有自己的全局唯一ID。HDFS就是以块为单位在集权服务器上分配存储的。
5:块的好处就是:一个文件的大小可以大于集群中任一磁盘容量;块适合于数据备份,极大的提高了集群的容错能力和可用性

分布式文件特点
1:高可靠:按位存储,就近原则分配数据,会把数据分配到离它最近的数据节点(DateNode)上。
2:高扩展:集群节点可以根据业务需求随时扩展和缩减。
3:高效性:可以在各个集群节点之间动态移动数据,保证集群各节点之间的动态平衡。
4:高容错:自动保存多个副本(默认3个,可自行修改),并且能够将失败的任务重新分配,解决故障,成本低。
5:不适合存储小文件
6:不适合低延迟的数据访问(多用于离线数据分析)

HDFS设计目标
1:故障检测和自动快速恢复是HDFS的核心架构目标。因为HDFS可能有成百上千的服务器组成,每一个组件都有可能出现故障。
2:相较于数据访问的反应时间,更注重数据访问的高吞吐量。HDFS被设计成用于批处理,而不是用户交互式的。
3:典型的HDFS文件大小是GB到TB的级别。所以,HDFS被调整成支持大文件(Large?Data?Sets)?。它应该提供很高的聚合数据带宽,一个集群中支持数百个节点,一个集群中还应该支持千万级别的文件。

HDFS组成架构

HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。
1:Namenode(NN):就是一个Master,是一个管理者
(1)管理HDFS的名称空间;
(2)配置副本策略;
(3)管理数据块(Block)映射信息;
(4)处理客户端读写请求。
2:DataNode:就是Slave。NameNode?下达命令,DataNode执行实际的操作。
(1)存储实际的数据块;
(2)?执行数据块的读/写操作
3:Client:就是客户端
(1)文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行上传;
(2)与NameNode交互,获取文件的位置信息;
(3)与DataNode交互,读取或者写入数据;
(4)Client提供一些命令来管理HDFS,比如NameNode格式化;
(5)Client可以通过一些命令来访问HDFS,比如对HDFS增删查改操作;
4:Secondary?NameNode:并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务。
(1)辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode?;
(2)在紧急情况下,可辅助恢复NameNode。
?????????????????
HDFS?文件块大小
HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数?(?dfs.blocksize)来规定,默认大小在Hadoop2.x/3.x版本中是128M,1.x版本中是64M
?
HDFS写入流程

宏观写入流程

微观写入数据流程


(1)客户端通过?Distributed?FileSystem?模块向?NameNode?请求上传文件,NameNode?检查目标文件是否已存在,父目录是否存在。
(2)NameNode?返回是否可以上传。
(3)客户端请求第一个?Block?上传到哪几个?DataNode?服务器上。
(4)NameNode?返回?3?个?DataNode?节点,分别为?dn1、dn2、dn3。
(5)客户端通过?FSDataOutputStream?模块请求?dn1?上传数据,dn1?收到请求会继续调用?dn2,然后?dn2?调用?dn3,将这个通信管道建立完成。
(6)dn1、dn2、dn3?逐级应答客户端。
(7)客户端开始往?dn1?上传第一个?Block(先从磁盘读取数据放到一个本地内存缓存),?以?Packet?为单位,dn1?收到一个?Packet?就会传给?dn2,dn2?传给?dn3;dn1?每传一个?packet?会放入一个应答队列等待应答。?(8)当一个?Block?传输完成之后,客户端再次请求?NameNode?上传第二个?Block?的服务?器。(重复执行?3-7?步)。

HDFS?读数据流程

1.客户端通过Distributed FileSystem向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址,并返回地址给客户端

2.挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据

3.DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以packet为单位校验)

4.客户端以packet为单位接收,先在本地缓存,然后写入目标文件

5.关闭资源
?

文章来源:https://blog.csdn.net/2301_76497451/article/details/132738980
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。