HDFS namenode如何从datanode查询块信息?

hmae6n7t  于 2022-12-09  发布在  HDFS
关注(0)|答案(1)|浏览(376)

我可以通过hdfs fsck / -files -blocks查询有关我的文件(存储在HDFS中)如何存储在块中的信息。
据我所知,namenode并不存储每个文件的块位置信息,而是从datanodes加载该信息。参考-Why datanode sends the block location information to namenode?
所以,如果名称节点正在查询来自数据节点的信息,名称节点应该知道数据节点元数据的位置。这意味着,从技术上讲,可能存在一条路径--

NameNode FSImage -> DataNodes metadata -> Info about how data is stored in blocks

有些文件的名称看起来像bl*.meta,但我认为它们只包含块的校验和信息,因此在这里可能不相关。参考-What metadata is stored on a datanode in HDFS?
数据节点在哪里存储文件-〉块Map?
由于可能存在多个数据节点,文件数据在它们之间拆分,我如何从NameNode的FSImage/edit日志中获取此信息?

sf6xfgos

sf6xfgos1#

您可以直接从bl*. meta中获取块信息。当Datanode联机时,此信息将发送到NameNode。此信息位于元文件中,但实际上磁盘本身的位置是用于生成元文件when a node starts (implied by hadoop 2.6 manual balancing of disks)的位置。
你可能会发现学习一些github项目是很有帮助的,这些项目是为了平衡datanode磁盘而创建的,因为它是requires knowledge of metadata
您可能想查看一些github tools availble for analyzing FSImage。这可能会帮助您找到您要查找的信息。

相关问题