3

在 HDFS 中,块分布在活动节点/从属节点之间。块的内容是简单的文本,所以有没有办法查看读取或访问每个数据节点中存在的块?

4

3 回答 3

0

假设您对数据节点具有 ssh 访问权限(和适当的权限),您可以cd访问存储块的路径并读取存储在该节点上的块(例如,执行 a cat BLOCK_XXXX)。告诉您块存储位置的配置参数是dfs.datanode.data.dir,默认为file://${hadoop.tmp.dir}/dfs/data. 更多细节在这里

警告:块名称由 HDFS 编码,具体取决于其内部块 ID。仅仅看他们的名字,你不能知道一个块属于哪个文件。

最后,我假设您想这样做是出于调试目的,或者只是为了满足您的好奇心。通常,没有理由这样做,您应该只使用 HDFS Web-UI 或命令行工具来查看文件的内容。

于 2013-10-28T14:53:32.507 回答
0

作为整个文件还是乱序读取单个块(例如块号 3)?

您可以通过包括 Java API 在内的各种机制读取文件,但不能在文件中间开始读取(例如在块 3 的开头)。

于 2013-10-28T09:15:52.040 回答
0

Hadoop 读取数据块并将每一行提供给映射器以进行进一步处理。此外,Hadoop 客户端在连接它们之前从不同的数据节点获取与文件相关的块。因此,应该可以从特定块中获取数据。

Hadoop 客户端可能是开始查看代码的好地方。但是,HDFS 提供了文件系统抽象。不确定从特定块读取数据的要求是什么。

于 2013-10-28T11:44:48.050 回答