直接在datanode中读取块的内容

时间:2013-10-28 08:41:39

标签: hadoop hdfs

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

3 个答案:

答案 0 :(得分:0)

作为整个文件或读取单个块(比如块编号3)不按顺序?

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

警告:块名称由HDFS编码,具体取决于其内部块ID。只需查看其名称,您就无法知道某个块属于哪个文件。

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