HDFS读写流程

HDFS存储数据

架构图

<img src='1.png'>

HDFS 采用Master/Slave的架构来存储数据,这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode。

Client:就是客户端。

​ 1、切分文件:文件上传 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储。

​ 2、与 NameNode 交互,获取文件的位置信息。

​ 3、与 DataNode 交互,读取或者写入数据。

​ 4、Client 提供一些命令来管理 HDFS,比如启动或者关闭HDFS。

​ 5、Client 可以通过一些命令来访问 HDFS。

NameNode:就是 master,它是一个主管、管理者。

​ 1、管理 HDFS 的名称空间(namespace)。

​ 2、管理数据块(Block)映射信息

​ 3、配置副本策略

​ 4、处理客户端读写请求。

DataNode:就是Slave,NameNode 下达命令,DataNode 执行实际的操作。

​ 1、存储实际的数据块。

​ 2、执行数据块的读/写操作。

Secondary NameNode:并非 NameNode 的热备份(两个节点同时运行,一个挂掉了切换另一个)。当NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务。

​ 1、辅助 NameNode,分担其工作量。

​ 2、定期合并 fsimage和fsedits,并推送给NameNode。

​ 3、在紧急情况下,可辅助恢复 NameNode。

HDFS读写数据流程

HDFS写数据流程

客户端将数据写入HDFS的流程图如下: 
 
流程如下:

1).客户端发出请求 hdfs dfs -put /xxx /
2).namenode查看维护的目录结构,检查/qf/data是否存在,如不存在直接报错”no such file or directory“,
如存在返回给客户端同意上传文件请求,将操作写入日志文件
3).客户端请求上传第一个块,询问namenode块的存储位置
4).namenode查看自己的datanode池,返回给客户端一个datanode列表
5).客户端发出请求建立pipeline
6).客户端先把文件写入缓存,达到一个块的大小时,会在客户端和第一个datanode建立连接开始流式的传输数据,
这个datanode会一小部分一小部分(4K)的接收数据然后写入本地仓库,同时会把这些数据传输到第二个datanode,
第二个datanode也同样一小部分一小部分的接收数据并写入本地仓库,同时传输给第三个datanode
(在流式复制时,逐级传输和响应采用响应队列来等待传输结果。队列响应完成后返回给客户端)
7).第一个数据块传输完成后会使用同样的方式传输下面的数据块直到整个文件上传完成。
8).整个文件完成,namenode更新内存元数据

HDFS读数据流程

客户端读取HDFS中的数据流程图如下: 

1) 客户端向namenode发起RPC调用,请求读取文件数据。
2) namenode检查文件是否存在,如果存在则获取文件的元信息(blockid以及对应的datanode列表)。
3) 客户端收到元信息后选取一个网络距离最近的datanode,依次请求读取每个数据块。客户端首先要校检文件是否损坏,如果损坏,客户端会选取另外的datanode请求。
4) datanode与客户端建立socket连接,传输对应的数据块,客户端收到数据缓存到本地,之后写入文件。
5) 依次传输剩下的数据块,直到整个文件合并完成。

HDFS的安全威胁

大量小文件上传问题 (拒绝服务)

namenode中的块映射表,命名空间数据 文件元数据占空间大

消耗cpu

寻找文件耗时 拒绝服务

随着文件数增加 上传文件时间数增加

数据回收的延迟问题(信息泄露)

在数据回收的过程中,即使文件系统中的trash文件夹下的文件夹被删除后(1小时后),数据块没有被真正删除,而是需要等待副本管理器扫描到该块后才能被彻底删除(6小时后),即HDFS上删除文件一定时间内,datanode上文件依然存在,导致结果,在延迟时间段内窃取数据

数据块权限问题(信息泄露)

所有数据块都以明文的方式,按文件格式存储在HDFS的数据节点的操作系统之上,块文件存储时在节点上的默认权限为允许其他用户读,导致操作系统上任何用户都能窃取该数据块的内容

负载均衡脆弱性问题(信息泄露+拒绝服务)

节点动态增加时,hadoop不自动提供负载均衡操作(管理员手动操作)

在负载均衡成功后,源数据节点没有能够及时删除已经拷贝走的冗余数据块,而是继续占用节点空间,造成资源浪费(注意跟垃圾回收的不同)

  • 在上述缺陷下,当系统资源不足的情况下,当用户继续上传新文件但系统没有可用空间,就会拒绝用户的上传操作

伪节点问题(信息泄露)

datanode和namenode之间的交互信息会被窃取,以后数据也可能流入这个假的节点中

通过发送假ip(这个ip可能是正在死亡的节点(合法节点)的),这样假几点就会被当做真节点,真节点死亡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值