hdfs读写流程

1.hdfs读流程

  1. 客户端跟namenode通信查询元数据,namenode通过查询元数据,找到数据快所在的datanode服务器(hadoop01,hadoop02,hadoop03).
  2. namenode将datanode服务器信息返回给客户端.
  3. 客户端就近随机挑选一台datanode服务器请求建立socket流.
  4. datanode开始发送数据,以packet为单位(64k).
  5. 客户端以packet为单位接收,先在本地缓存,然后写入到目标文件.

2.hdfs写流程

  1. 客户端跟namenode通信请求上传文件,namenode去查找文件是否存在,父目录是否存在,用户是否有权限
  2. namenode返回是否可以上传
  3. 客户端请求上传第一个block,该传输到哪些datanode服务器上
  4. namenode返回给客户端datanode服务器bloc(hadoop01,hadoop02,hadoop03)
  5. 客户端请求3台datanode中的一台hadoop01上传数据(本质上是rpc的调用,建立起管道),hadoop01收到请求后会继续调用hadoop02,然后hadoop02再调用hadoop03,将整个管道建立完成,然后逐级返回客户端
  6. 客户端开始往hadoop01上传第一个block(先从磁盘读取数据放入到本地内存缓存),以packet为单位发送,hadoop01收到一个packet就会传给hadoop02,
    hadoop02再传给hadoop03;hadoop01每传一个packet就会将packet放入到应答队列中等待应答.
  7. 当一个block传输完成之后,客户端会再次请求namenode上传第二个block到哪些datanode服务器.
上一篇:Java多线程实现聊天-UDP


下一篇:MySQL执行SQL脚本问题 :错误代码2006、1153