当前位置: 首页 > 知识库问答 >
问题:

Hadoop流作业执行中映射器出现“Text file Busy”错误

谭铭
2023-03-14

我有一个应用程序,创建文本文件,每一行,并转储到HDFS。这个位置又被用作hadoop流作业的输入目录。

期望映射器的数量将等于“输入文件拆分”,在我的例子中,该拆分等于文件的数量。所有映射器都没有被触发,我在流输出转储中看到了一个奇怪的问题:

原因:java.io.ioException:无法运行程序“/mnt/var/lib/hadoop/tmp/nm-local-dir/usercache/hadoop/appcache/application_1411140750872_0001/container_1411140750872_0001_01_000336/.code/python_mapper_unix.py”:错误=26,文本文件忙

“python_mapper.py”是我的映射器文件。

环境详细信息:一个40节点的aws R3.xLarge aws EMR集群[该集群上没有其他作业运行]当该流式jar运行时,集群上没有其他作业运行,因此没有任何外部进程尝试打开“python_mapper.py”文件

下面是streaming jar命令:

ssh-o strithostkeychecking=no-i hadoop@hadoop jar/home/hadoop/contrib/streaming/hadoop-streaming.jar-files CODE-file CODE/congfiguration.conf-mapper CODE/python_mapper.py-input/user/hadoop/launchidlworker/input/1-output/user/hadoop/launchidlworker/output/out1-numreducetasks 0

共有1个答案

严锐
2023-03-14

请您先尝试使用“stop-all”停止所有后台进程,然后在重新启动后台进程(使用“start-all”)后重新运行MR作业,好吗?

看看有没有帮助!

 类似资料:
  • 我有一个应用程序,创建每一行的文本文件,并将其转储到HDFS。这个位置反过来被用作hadoop流作业的输入目录。 预期映射器的数量将等于“输入文件拆分”,在我的例子中,这等于文件的数量。有些映射器没有被触发,我在流输出转储中看到了一个奇怪的问题: 原因:java.io.ioException:无法运行程序“/mnt/var/lib/hadoop/tmp/nm-local-dir/usercache

  • 在java中,我会使用: 多输入.add输入路径(conf, path, inputFormatClass, 映射器类) 以添加多个输入,并为每个输入使用不同的映射器。 现在我正在使用python在hadoop中编写一个流作业,可以做类似的工作吗?

  • 我试图在hadoop中运行一个程序,但我一直得到: 线程“main”java.lang.unsupportedClassVersionError:hadoop_project_16/aggregatejob:不支持major.minor版本52.0在java.lang.ClassLoader.DefineClass1(本机方法)在java.lang.ClassLoader.DefineClass(

  • 有人能帮我解决这个问题吗?

  • 我想通过管道传输我的hadoop流作业。例如,我运行了一个命令hadoop jarhadoop-streaming.jar-mappermap1.pyreducer.py-inputxx输出 /output1 但是我想使用第一步的输出作为第二步mapduce作业的输入,而不存储在hdfs中,也许输出为标准输出。有没有像linux管道一样的东西?比如hadoop jarhadoop-streamin

  • 问题内容: 我的用例如下: 我有一个仅地图的mapreduce作业,该作业需要一个输入文件,进行了大量的解析和调整,然后再写回。但是,某些行的格式可能正确也可能不正确,如果是这样,我想将原始行写入单独的文件中。 看来,执行此操作的一种方法是将文件名添加到我正在打印的行的前面,并使用multipleOutputFormat参数。例如,如果我最初有: 我可以改为: 此解决方案唯一的问题是我不希望fil