HDFS初探

HDFS初探,第1张

HDFS初探 1、HDFS的写数据流程 1.1、Hadoop-client

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,直至传输完成;

1.3、HDFS机架感知,网络拓扑,节点距离计算
  • 第一个数据副本在Client所处的节点,客户端在集群外,随机选取一个
  • 第二个节点在另一个机架的随机一个节点
  • 第三个副本在第二个副本所在机架的随机节点
2、HDFS的读数据流程

  • Hadoop-client请求NameNode下载文件,获取文件元数据以得到DataNode地址
  • Hadoop-client挑选最近的一台DataNode请求读取数据
  • Hadoop-client接收DataNode以Packet为单位传输过来的数据,缓存到一定量的数据再写入目标文件
3、NameNode和SecondaryNameNode
  • 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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5671530.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存