HDFS的读写过程简述

主要的角色:

客户端:负责发起或提交读写请求(如果往HDFS上存储数据或获取数据,就要告诉客户端)。

namenode:HDFS的核心负责全局协调,做任何事都要向这里汇报,和把控所有的请求。

datanode:数量不定,负责数据的 存储。

把数据写到HDFS的集群的过程

1.用户向客户端请求服务

HDFS的读写过程简述_第1张图片                        HDFS的读写过程简述_第2张图片

请求角色:1.hdfs shell2.JAVA API                         1.要将数据分为128M的块2.以三副本的方式存储

HDFS的读写过程简述_第3张图片

作为客户端默认:1.大的文件要拆分为128M或64M

2.文件以多副本的方式存储(最少为3)


2.客户端拿到数据

HDFS的读写过程简述_第4张图片                            HDFS的读写过程简述_第5张图片

             客户端拆分为2块                                         客户端请求namenode(1个128的块和3个副本)

HDFS的读写过程简述_第6张图片                             HDFS的读写过程简述_第7张图片

namenode工作:                                                      namenode想客户端返回信息:

1.三个副本需要是三个datanode                                  1.含有三个datanod,并按距离排序

2.考虑资源调度


HDFS的读写过程简述_第8张图片HDFS的读写过程简述_第9张图片HDFS的读写过程简述_第10张图片

客户端向datanode写数据,datanode1将相同的数据写到datanode2,datanode2完成统一的动作给datanode3

HDFS的读写过程简述_第11张图片

写数据的方式以流水线的方式完成(通俗讲就是数据进来一点写一点,直到写完)

HDFS的读写过程简述_第12张图片                              HDFS的读写过程简述_第13张图片

数据写完后告诉namenode                                       1. namenode和客户端知道第一个块以写完

                                                                                 2.客户端以相同的步骤完成剩下的块

HDFS的读写过程简述_第14张图片                                  HDFS的读写过程简述_第15张图片

完成所有写入数据后关闭数据流                                        总结:客户端:拆分文件

                                                                                                 namenode:提供块在datanode中的地址

                                                                                                 datanode:存储数据,并以流水线的方式将数据写完

从HDFS中读取数据

HDFS的读写过程简述_第16张图片                                        HDFS的读写过程简述_第17张图片

用户想客户端发起读取数据的请求                                            客户端向namenode发起请求:告诉它文件名

 HDFS的读写过程简述_第18张图片                                     HDFS的读写过程简述_第19张图片

namenode通过计算告诉客户端源数据信息                                     客户端知道信息,向块发起请求

(块在datanode中的位置,副本多少,几个块)

HDFS的读写过程简述_第20张图片

客户端向datanode发起请求,

datanode将数据返回客户端




HDFS的优点:

数据冗余(多副本方式存储)

处理流式的数据访问(一次写入,多次读取的操作)

适合存储大文件的方式

可构建在廉价的机器上面

HDFS的缺点:

低延迟的数据访问

不适合小文件的存储(重):不管是1M还是127M,都要存储128M,然后产生源数据,若小文件很多,则给namenode带来很多压力

你可能感兴趣的:(hadoop的认知之路)