浅谈HDFS及其读写过程

一、HDFS的概述
1、hdfs式文件系统,用于存储文件,通过统一的命名空间–目录树来定位文件。
2、它是分布式的,由很多服务器联合起实现其功能,集群中的服务器有各自的角色。
3、它的设计是一次写入,多次读出,且不支持文件的修改。
二、HDFS的优缺点
1、优点
(1)高容错性(一数据块存储,可以保存多个副本,容易实现负载均衡)。
(2)适合处理大量数据(支持GB、TB、PB级别的数据存储,支持百万规模以上的文件数量)。
(3)适合批处理(支持离线的批量数据处理,支持高吞吐率)。
2、缺点
(1)不支持小文件存储。
(2)不支持并发写入(同一时刻只允许一个进程写入,不支持随机修改)。
三、HDFS的特性
(1)HDFS中的文件在物理上是以block块的形式存储的,块的大小在1X是64M,2X是128M。
注意block块的大小的设定是有讲究的,块的大小和寻址时间和磁盘传输速率有关,一般寻址时间为磁盘读写时间的1%,寻址时间一般为10ms,由寻址时间为磁盘读写时间的1%求出磁盘读写时间为1000ms,又磁盘传输速率为100mb/s,可得出块的大小为100mb,但是块的大小一般为2^n,故选最接近的128MB
(2)HDFS采用主从结构(Master/Slave)结构模型,NameNode作为中心服务器,负责客户端的请求响应和元数据的管理,DataNode作为数据节点,负责元件系统、客户端的读写请求和数据块的创建、存储、删除和备份。
(3)它的设计是一次写入,多次读出的场景,适合用来数据分析,并不适合用来做网盘应用,因为不便修改,延迟大,网络开销大和成本太高。
四、HDFS的读写过程简析
1、hdfs写的过程
浅谈HDFS及其读写过程_第1张图片
对照上述图片
详细步骤解析
(1)客户端向NameNode请求上传文件(将文件的根目录传给NameNode)。
(2)NameNode响应可以上传文件—这一步主要是NameNode检查目标文件是否存在,父目录是否存在。
(3)客户端请求上传第一个block并请返回DataNode(ps:如果文件小于一块的大小就用一块即可,若是文件是大文件则需要多个block)。
(4)NameNode返回dn1,dn2,dn3,表示可采用这三个节点存储数据。
(5)客户端向DataNode1请求建立block传输通道。
(6)DataNode1应答成功,同时和DataNode2和DataNode3建立内部传输通道。
(7)客户端开始传输数据。
(8)DataNode1、DataNode2和DataNode3接收到数据块。
(9)客户端开始传输第二块数据块。
(10)当所有数据块传输完成后,客户端向NameNode反馈信息告知传输数据完成。
2、hdfs读的过程
浅谈HDFS及其读写过程_第2张图片
对照上述图片
(1)客户端请求下载文件—传入根目录。
(2)NameNode返回目标文件的元数据,包括block的存放位置对应的DataNode。
(3)客户端向DataNode们请求读取数据,若是读取一份block_1块则由就近原则从DataNode1中获取 block_1,若是取小于3块数据块可进行多线程获取,同时向DataNode1、DataNode2和DataNode3获取,充分利用多线程的并发性,快速获取block。
(4)DataNode将数据传给客户端。
(5)数据读取结束。

你可能感兴趣的:(浅谈HDFS及其读写过程)