hdfs的读写流程

hdfs的读写流程
写流程:
1、创建 distributefilesystem(与namenode通讯) fsdataoutpustream(与datanode通信的流) 两个对象
2、客户端请求namenode 发送文件
3、Namenode检验 是否允许发送文件
4、Namenode返回是否允许上传文件
5、客户端根据文件大小,block大小 划分文件
6、客户端请求发送第一个block块
7、Namenode收到客户端请求 得到datanode列表
8、Namenode根据datanode列表、副本数、机架感应 得到要上传datanode
9、返回得到的datanode
10、建立管道
11、返回管道建立信息
12、数据队列以package为单位 大小为64k
13、把数据队列的第一个package拿到确认队列,发送package 先发送到data1的内存上 在data1内存向磁盘写入package时,把package分发到其他要上传的datanode上 先写到内存再写到磁盘传输效率高
14、获得package的应答消息
15、package发送成功后 删除确认队列的package 发送失败 package返回到数据队列的原位置
16、继续发送package,知道第一个block块写完
17、 发送其他block块 重复6-16步

hdfs的读写流程
读流程
1、客户端通过distributefilesystem 与namenode 通信 请求下载文件
2、Namenode根据自己的元数据信息 获得对应的block块及其位置信息,通过网络拓扑 对block块进行排序 并返回给客户端
3、客户端根据得到的block块的最佳位置,通过fsdatainputstream 进行请求读取
4、客户端以package为单位进行读取 先写入内存 再写入磁盘 下载完成后关闭该block通道
5、建立新的block通道 重复3-4 z
自己的理解 如果有错 希望指正
hdfs的读写流程hdfs的读写流程