hadoop hdfs 文件写入/读取过程解析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_23013309/article/details/88793196

hdfs 文件的写入流程
==================================================================

1> 客户端向namenode,提出要上传 test.jar 到 /centos/data 下
   具体是通过 DistributedFileSystem进行通信

2> namenode 检查客户端是否有权限上传,如果没有就拒绝

3> client 请求上传block的 datanoe 信息
 
4> namenode 返回 datanode 的地址信息

5> 客户端向datanode 发送上传block的请求信息,
   一个block有多个副本数
   这个datanode会向其他datanode发起请求
   最终建立起一条传输管道
   
7> 所有datanode向client,确认连接消息

8> client向第一个datanode传输block,然后它会把这个block发送到其他datanode

   第一个datanode会将收到的block的packet放入一个确认队列中
   
9> 第一个block传输完成后,继续传输其他block,重复上述步骤

hdfs 文件的读取流程
==================================================================
1>客户端向NameNode请求下载某文件;

2>NameNode通过查询元数据,如果找到文件块所在的DataNode地址列表就返回给客户端,
  如果没有找到元数据信息就返回客户端访问的资源不存在
  
3>客户端拿到NameNode的数据之后,挑选一台DataNode服务器(就近原则,然后随机)请求读取数据

4>DataNode开始传输数据给客户端(从磁盘里面读取数据放入流,以packet为单位来做实验);

5>客户端以packet为单位接收,现在本地缓存,然后写入目标文件;
 

猜你喜欢

转载自blog.csdn.net/qq_23013309/article/details/88793196
今日推荐