各个节点之间距离的计算:

Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hdfs

机架感知:

HDFS将我上传的文件存放到哪三个节点上呢?

Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_xml_02


Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hdfs_03


HDFS的读数据的流程:读数据和写数据都是以块为单位的。

读数据的时候client只需要和其中的一个DN建立通道获取第一个块,第一个块读完之后,读第二个块可能还是在这个DN上,但是不一定,读取第二块的内容的时候都需要重新去建立通道的。读数据的时候一块一块读。

在读数据的时候,只需要和其中的一个DataNode建立连接。

读数据和写数据client都是先与NameNode连接交互,再去和DataNode去交互。

Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_xml_04


NameNode和SecondaryNameNode之间的工作机制NameNode是整个HDFS的集群的老大,管理所有文件的元数据信息,2NN是NN的小秘,帮助NN管理一些工作,帮助NN减小压力,但是后期高可用集群直接淘汰了2NN

NameNode最主要的作用就是对HDFS中数据的元数据进行管理。

Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hadoop_05


Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hdfs_06


因为对镜像文件的修改是随机操作,效率很低

而对编辑日志文件的操作是追加操作,效率高。

Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hdfs_07


NN中始终只会保留两个fsimage文件。

Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_xml_08


Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hdfs_09


namenode这些fsimage镜像文件的位置和edits的编辑日志的文件位置:

/opt/module/hadoop-3.1.3/data/dfs/name/current

Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hdfs_10


Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hadoop_11


version文件是namenode自己维护的东西。

看一下seen_txid

Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hdfs_12


代表谁是正在记录修改hdfs记录操作的edits

Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hadoop_13


查看edits和fsimage文件

直接cat查看这个文件是看不了的,乱码。

Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_xml_14


Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_xml_15


hdfs oiv -p XML -i fsimage_0000000000000000735 -o /opt/module/hadoop-3.1.3/fsimage.xml

hdfs oev -p XML -i edits_0000000000000000348-0000000000000000455 -o /opt/module/hadoop-3.1.3/edits.xml

Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hdfs_16


Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hadoop_17


Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hadoop_18


Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_xml_19


Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_数据_20


Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_数据_21


Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_xml_22


Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hdfs_23


Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hadoop_24


Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hdfs_25

Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_数据_26

16542

FILE

songsong2.txt316082082307821608211634111134217728atguigu:supergroup:07441073741890106771

因为文件进入hdfs之后就会变成Block。所以如果是文件的话,还会记录它的block_id

1073741890

但是没有记录这个块在那个DN上存的。

文件之间的上下级关系怎么记录的呢?

Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_xml_27


HDFS中的目录都是在fsimage文件中通过inode维护的。

Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hadoop_28


Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_数据_29


去查看nn里面的数据和DN里面的数据,发现DN中少了edits_inprogress文件

Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_数据_30


Hadoop学习-节点之间距离计算,机架感知,hdfs读数据NN和2NN工作机制fsimage 和 edits文件内容解析_hdfs_31