HDFS数据存储流程
HDFS即Hadoop Distributed File System, HDFS存储数据的流程如下:
client跟NameNode交互
1.1、client 发消息给NameNode,NameNode检查client是否有写的权限。如果有权限,NameNode检查是否有同名文件,如果没同名文件,NameNode生成一条新文件的记录(不包含存放地址信息)
1.2、NameNode向client发送相应的DataNode列表和一个token,地址用来存放数据,token是client向DataNode写数据前要发送过去的密钥
2、client跟DataNode交互
2.1、client收到DataNode列表和token后,其DFSOutputStream将数据拆分成一个个块(一般64MB或128MB),并集群中生成管道,通过管道向DataNode列表中的第一个DataNode写入数据。 同时,DFSOutputStream生成一个确认列表(ack queue)。
2.2、第一个DataNode写完后,将根据复制参数将数据块通过管道复制到第二个DataNode。第二个写完,将数据块通过管道复制到第三个DataNode...... 如果复制参数为 3,那么在不同的 DataNode 中至少会创建 3 个块副本。每个DataNode写完后,会向NameNode发送块的信息,NameNode会记录下来。
2.3、最后一个DataNode创建所需的副本后,向前一个DataNode发送确认信息,前一个往再前一个DataNode发确认信息...... 第一个DataNode向client发送确认信息,client的DFSOutputStream收到确认信息后,将该块从确认列表(ack queue)中移除
2.4、重复2.1——2.3的过程,直到所有数据块传输完成
2.5、当数据传送完成,且收到确认信息时,client调用close()方法关闭进程
图片是简单的流程,可以参考:
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341