使用c运行hadoop管道时不存在这样的文件++

exdqitrt  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(313)

在使用hadoop管道运行hadoop map reduce程序时,map reduce找不到hdfs中存在的文件。如果程序是在没有hadoop管道的情况下执行的,那么libhdfs库很容易找到该文件,但是在使用

hadoop pipes -input i -ouput o -program p

命令时,libhdfs找不到该文件,并引发java.io.exception。尝试在命令中包含-fs参数,但结果仍然相同。我还包括hdfs://localhost:9000/文件,仍然没有结果。文件参数位于c代码中,如下所示:

file="/path/to/file/in/hdfs" or "hdfs://localhost:9000/path/to/file"
hdfsFS fs = hdfsConnect("localhost", 9000);
hdfsFile input=hdfsOpenFile(fs,file,O_RDONLY,0,0,0);
vlju58qv

vlju58qv1#

发现了问题。hdfs中的文件对mapreduce任务节点不可用。因此,必须通过将文件压缩为单个tar文件,通过archive标记将文件传递到分布式缓存。也可以通过编写自定义inputformat类并在输入参数中提供文件来实现这一点。

相关问题