是否有编程接口来确定是否存在哪个块存在于哪个数据节点上。 即能够读取fsImage并返回此信息。
答案 0 :(得分:0)
我知道的一种粗略方法是在dfs数据目录中查找带有blockName的文件。 这是一个O(n)解决方案,我很确定会有一个O(1)解决方案。
答案 1 :(得分:0)
与how to find file from blockName in HDFS hadoop类似,namenode没有公共接口,允许您从块ID(仅通过文件名)查找信息。
你可以看一下打开fsImage,但这只会给你一个从块ID到文件名的映射,因为托管这些块的实际位置(DataNodes)没有存储在这个文件中 - 数据节点在树上运行它们的数据目录和报告对NameNode有什么阻碍。
我想如果你可以将调试器附加到名称节点,你可能能够检查块映射,但是因为没有从ID到文件名的映射,它仍然是O(n)操作