hadoop的FileSystem类中,遍历文件目录的三种方法(源码和区别),通过FileSystem对象 *** 作HDFS的方法就不过多讲了,我的上一篇博客给了一个 *** 作HDFS的入门教程,其他的请参考官网示例。
1.2、剖析文件写入Block、Packet、Chunk的概念
1.Hadoop-client询问NameNode文件是否可以上传,若可以,则获取数据存在那些DataNode;
2.Block分解成Packet上传到其中一个DataNode,第一个收到数据的DataNode传给下一个DataNode;
3.传输完成一个Block后,请求NameNode上传第二个Block给DataNode,直至传输完成;
- 第一个数据副本在Client所处的节点,客户端在集群外,随机选取一个
- 第二个节点在另一个机架的随机一个节点
- 第三个副本在第二个副本所在机架的随机节点
- Hadoop-client请求NameNode下载文件,获取文件元数据以得到DataNode地址
- Hadoop-client挑选最近的一台DataNode请求读取数据
- Hadoop-client接收DataNode以Packet为单位传输过来的数据,缓存到一定量的数据再写入目标文件
- NameNode格式化时创建【编辑日志Edits】和【镜像文件FsImage】;
- NameNode中的元数据存放在内存中,使用镜像文件FsImage定期备份数据到磁盘;
- 使用编辑日志Edits(只能追加)记录NameNode中的元数据的增删改(查询不会更改元数据);
- NameNode内存全量数据 = Edits + FsImage;
- NameNode在内存中的元数据与编辑日志Edits同步更新;
- SecondaryNamenode合并Edits和FsImage(定时到了,或Edits满了),形成fsImage.chkpoint;
- SecondaryNamenode使用新的fsImage.chkpoint替换NameNode旧的FsImage
PS:NameNode启动和SecondaryNamenode合并Edits和FsImage时,会滚动Edits,创建一个空的edits.inprogress,以便新的 *** 作都写入edits.inprogress。NameNode只会记载Fsimage和未合并的Edits,合并过的Edits在Fsimage中。
[atguigu@hadoop102 current]$ pwd /opt/module/hadoop-3.1.3/data/dfs/name/current [atguigu@hadoop102 current]$ ll 总用量 12352 -rw-rw-r--. 1 atguigu atguigu 42 12月 12 18:00 edits_0000000000000000001-0000000000000000002 -rw-rw-r--. 1 atguigu atguigu 1048576 12月 12 18:00 edits_0000000000000000003-0000000000000000003 -rw-rw-r--. 1 atguigu atguigu 1048576 12月 12 18:08 edits_0000000000000000004-0000000000000000004 -rw-rw-r--. 1 atguigu atguigu 1048576 12月 12 20:34 edits_0000000000000000005-0000000000000000005 -rw-rw-r--. 1 atguigu atguigu 42 12月 12 21:22 edits_0000000000000000006-0000000000000000007 -rw-rw-r--. 1 atguigu atguigu 1048576 12月 12 21:22 edits_0000000000000000008-0000000000000000008 -rw-rw-r--. 1 atguigu atguigu 42 12月 12 21:26 edits_0000000000000000009-0000000000000000010 -rw-rw-r--. 1 atguigu atguigu 1048576 12月 12 21:26 edits_0000000000000000011-0000000000000000011 -rw-rw-r--. 1 atguigu atguigu 690 12月 12 21:49 edits_0000000000000000012-0000000000000000020 -rw-rw-r--. 1 atguigu atguigu 1048576 12月 12 21:49 edits_0000000000000000021-0000000000000000021 -rw-rw-r--. 1 atguigu atguigu 42 12月 12 22:00 edits_0000000000000000022-0000000000000000023 -rw-rw-r--. 1 atguigu atguigu 1048576 12月 12 22:10 edits_0000000000000000024-0000000000000000186 -rw-rw-r--. 1 atguigu atguigu 1048576 12月 13 22:49 edits_0000000000000000187-0000000000000000187 -rw-rw-r--. 1 atguigu atguigu 1048576 12月 13 22:54 edits_0000000000000000188-0000000000000000188 -rw-rw-r--. 1 atguigu atguigu 1048576 12月 14 20:36 edits_0000000000000000189-0000000000000000189 -rw-rw-r--. 1 atguigu atguigu 3741 12月 14 21:38 edits_0000000000000000190-0000000000000000231 -rw-rw-r--. 1 atguigu atguigu 42 12月 14 22:38 edits_0000000000000000232-0000000000000000233 -rw-rw-r--. 1 atguigu atguigu 1048576 12月 14 23:17 edits_0000000000000000234-0000000000000000248 -rw-rw-r--. 1 atguigu atguigu 42 12月 15 20:51 edits_0000000000000000249-0000000000000000250 -rw-rw-r--. 1 atguigu atguigu 235 12月 15 21:52 edits_0000000000000000251-0000000000000000255 -rw-rw-r--. 1 atguigu atguigu 42 12月 15 22:52 edits_0000000000000000256-0000000000000000257 -rw-rw-r--. 1 atguigu atguigu 1048576 12月 15 22:52 edits_inprogress_0000000000000000258 -rw-rw-r--. 1 atguigu atguigu 2752 12月 15 21:52 fsimage_0000000000000000255 -rw-rw-r--. 1 atguigu atguigu 62 12月 15 21:52 fsimage_0000000000000000255.md5 -rw-rw-r--. 1 atguigu atguigu 2752 12月 15 22:52 fsimage_0000000000000000257 -rw-rw-r--. 1 atguigu atguigu 62 12月 15 22:52 fsimage_0000000000000000257.md5 -rw-rw-r--. 1 atguigu atguigu 4 12月 15 22:52 seen_txid --存放最后一个edits_的数字 -rw-rw-r--. 1 atguigu atguigu 216 12月 15 20:50 VERSION
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)