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为单位接收,现在本地缓存,然后写入目标文件;