HDFS读写流程

为了更好地理解HDFS读写流程,下面主要以漫画的形式进行的叙述。
一、HDFS写的流程
1、HDFS主要组成(主要了解hadfs构成及其担任的工作)
HDFS读写流程
client:客户端(主要发起读和写),可以在javaapi操作,也可以hdfs shell中操作
namenode:全局把控
datanode:存储数据
2、数据分块
默认的情况下,客户端知道一个blocksize是多大和有几个block的副本。
HDFS读写流程
客户端根据默认blocksize的大小将上传的数据进行分块,分好之后去找全局的把控者(namenode),告诉它我要进行以什么样的方式进行数据存储。
3、数据存储
datenode进行数据存储
HDFS读写流程
根据客户端的请求,namenode找好存储数据的datenode,告诉客户端你往那几个datenode存储。接下来客户端就进行数据存储,存储的时候client先将数据存到第一个datenode,然后这个datenode将数据存储到下一个datenode,第二个datenode将数据存储到第三个datenode上。也就是说client只负责存储第一个,之后的那几个存储都是有对应的datenode完成的。存储完成后,三个datenode要给namenode返回一个信息,告诉它我们已经完成了数据的存储。
4、释放连接
数据存储完成,客户端和namenode之间的链接就断开。
HDFS读写流程
虽然断开链接,但是namenode必须知道这些数据(block)存放在那些节点上。
二、HDFS进行数据读的流程
hdfs读取数据
HDFS读写流程
(1)操作者告诉客户端,自己查看什么数据,也就是数据的文件名是什么。
(2)客户端将文件名传到namedate
(3)namenode根据数据名,告诉客户端所需要的元数据(每个block存放在哪里,大小等等)
(4)客户端根据namenode返回来的信息,与datenode进行数据的下载。