Hadoop中HDFS的读写流程及NN、2NN、DN的工作机制
HDFS读流程
客户端Client中的DistributedFileSystem对象申请下载文件,NameNode检查申请的文件是否存在,并查看要下载的文件夹是否有读权限,然后响应文件是否存在,DistributedFileSystem对象请求下载第一个Block,NN返回三个DN节点,客户端会开一个FSDataInputStream输入流,然后向其中一块DN请求建立通道,DN应答成功,开始传输Packet,其他两个DN负责当备胎,传输成功后,同理传输第二个,整个传输是一个完整的流,并不会出现块合并的情况。
HDFS的写流程
首先我们有一个200M大小的文件,客户端Client中的DistributedFileSystem对象申请上传文件,NameNode检查申请的文件是否存在,并查看要写入的文件夹是否有写入权限,然后响应可否上传,DistributedFileSystem对象请求上传第一个Block块,块大小为0~128M,NameNode返回给客户端Client一个List,List包含3个DN(DN的数量取决于我们设置的副本数),三个DN的选择方式是第一个DN选择离客户端Client最近的(网络拓扑),然后第二个DN依据第一个DN来选择,第三个DN依据第二个DN来选择,然后客户端Client会开一个FSDataOutputStream输出流,然后会向DN1申请请求建立通道,DN1向DN2请求建立通道,DN2向