HDFS的两大核心包括写数据和读数据,这是HDFS的一个重点,下面笔者就讲解一下两大核心的过程。同时,笔者也会讲解一下元数据的合并过程。
写数据
1.客户端向NameNode发送文件上传请求;
2.NameNode进行一系列的检查:权限、文件的父目录是否已经存在。检查通过之后,允许上传;
3.允许客户端上传;
4.客户端发送真正的文件上传请求,请求包含一个重要的信息:文件的长度、大小;
5.NameNode根据文件的长度计算文件的切块个数。(例,文件大小为200M,按照每块128M的大小进行切分,一共被且分为2份)
NameNode获取副本的配置信息。(dfs.replication=3)
NameNode返回副本的节点信息的时候,遵循就近原则。
6.客户端准备上传文件;
7.客户端对文件进行一个逻辑切块;
8.开始上传第一个数据块;
9.构建第一个数据块的上传通道pipline(构建通道的时候,客户端启动一个阻塞进程,等待DataNode的响应);
10.开始第一个数据块的数据上传,客户端上传第一个数据块,先上传到内存中,再到磁盘中。然后第一个副本向第一个数据块进行数据拷贝,第二个副本向第一个副本进行数据拷贝。(文件上传的过程中,以packet为单位进行传输、64K为单位进行写入。)
数据块的真实切分客户端边上传边切分,第一个数据块到128M之后,第一个数据块切分完成;
11.第一个数据块上传完成,关闭当前的pipline;
12.开始上传第二个数据块;
13.重复上面9、10、11的步骤;
14.当所有的数据块上传完成,客户端向NameNode反馈。
读数据
1.客户端向NameNode发送文件下载请求;
2.NameNode会进行一系列的检查:权限、文件是否存在。检查无误后,通过元数据返回需要下载的文件所分的数据块和数据块的存储节点;
3.客户端开始下载第一个数据块,就近原则。将第一个数据块以流的方式写在本地文件中;
4.第一个数据块下载完成,下载第二个数据块…追加到第一个数据开的末尾;
5.所有的数据块下载完成,客户端向NameNode响应。
#### 元数据合并
元数据合并条件:
(1)时间间隔:3600s==1h; dfs.namenode.checkpoint.period
(2)元数据条数:100万条; dfs.namenode.checkpoint.txns
两个条件只要达到一个就可以进行合并。
元数据合并的过程:
1.SecondaryNameNode定期向NameNode发送检查,检查NameNode的元数据是否需要合并,每5min发送一次;
2.NameNode需要进行元数据合并了;
3.SecondaryNameNode发送合并元数据请求;
4.NameNode将正在编辑的日志文件进行回滚,同时生成一个全新的正在编辑的日志文件;
5.SecondaryNameNode将需要合并的edits文件和fsimage文件拉取到自己的本地;
6.SecondaryNameNode将edits文件进行合并,在内存中,根据edits文件的日志修改fsimage文件;
7.SecondaryNameNode将合并好的fsimage文件发送给NameNode,自己本地也会保存一份;
8.NameNode将最新的fsimage文件进行重命名覆盖掉原来的fsimage文件。
【附】
edits日志:某一个用户、某一个时间、上传了一个文件、文件位置在哪里、文件的大小多大。
内存中的元数据:磁盘中加载过来的fsimage文件。
每一次进行修改元数据的时候,内存中会真正的修改,但是磁盘中的元数据只会记录操作日志,不会真正修改。
内存中的元数据永远是最新、最全的元数据。
磁盘中的元数据,fsimage中存放的仅仅是一部分元数据。
最新的元数据:fsimage+合并后的edits文件。
磁盘中的元数据需要定期更新。
再次总结HDFS各个角色的作用:
-
NameNode:
(1)接受客户端的读写请求;
(2)管理元数据信息;
(3)接受DataNode的心跳报告;
(4)负载均衡;
(5)负责数据块的副本的存储节点的分配。 -
DataNode:
(1)处理客户端的读写请求;
(2)真正的进行数据块的存储;
(3)向NameNode发送心跳报告;
(4)进行副本的复制。 -
SecondaryNameNode:
(1)帮助NameNode备份元数据信息(冷备份),查看备份的元数据信息是否是最新的,有一定的数据延时的,可能造成数据丢失;
(2)帮助NameNode进行元数据合并,减轻NameNode的压力。 -
客户端:
(1)发送读写请求;
(2)对上传的文件进行逻辑切块和物理切块;
(3)向NameNode反馈数据上传、下载的响应。
继续阅读与本文标签相同的文章
紫光展锐打通5G毫米波上下行物理链路
-
广东ETC货源充足,线上申办最快三个工作日到货
2026-05-19栏目: 教程
-
APP界面布局小技巧,快上车!
2026-05-19栏目: 教程
-
扫地机器人市场快速增长 扫、擦功能分离是趋势
2026-05-19栏目: 教程
-
召唤师终于等到了,《英雄联盟》手游开放预约,预约人数挤爆服务器
2026-05-19栏目: 教程
-
人工智能走进西藏特殊教育学校 以“声”为“眼”助力盲童阅读
2026-05-19栏目: 教程
