0

我有一个在 R Colsole 中运行良好的 R 脚本,但是当我在 Hadoop 流中运行时,它在 Map 阶段失败并出现以下错误。查找任务尝试日志

我拥有的 Hadoop 流命令:

/home/Bibhu/hadoop-0.20.2/bin/hadoop jar \
   /home/Bibhu/hadoop-0.20.2/contrib/streaming/*.jar \
   -input hdfs://localhost:54310/user/Bibhu/BookTE1.csv \
   -output outsid -mapper `pwd`/code1.sh

标准错误日志

Loading required package: class
Error in read.table(file = file, header = header, sep = sep, quote = quote,  : 
  no lines available in input
Calls: read.csv -> read.table
Execution halted
java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1
    at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:362)
    at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:572)
    at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:136)
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:57)
    at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
    at org.apache.hadoop.mapred.Child.main(Child.java:170)

系统日志

2013-07-03 19:32:36,080 INFO org.apache.hadoop.metrics.jvm.JvmMetrics: Initializing JVM Metrics with processName=MAP, sessionId=
2013-07-03 19:32:36,654 INFO org.apache.hadoop.mapred.MapTask: numReduceTasks: 1
2013-07-03 19:32:36,675 INFO org.apache.hadoop.mapred.MapTask: io.sort.mb = 100
2013-07-03 19:32:36,835 INFO org.apache.hadoop.mapred.MapTask: data buffer = 79691776/99614720
2013-07-03 19:32:36,835 INFO org.apache.hadoop.mapred.MapTask: record buffer = 262144/327680
2013-07-03 19:32:36,899 INFO org.apache.hadoop.streaming.PipeMapRed: PipeMapRed exec [/home/Bibhu/Downloads/SentimentAnalysis/Sid/smallFile/code1.sh]
2013-07-03 19:32:37,256 INFO org.apache.hadoop.streaming.PipeMapRed: Records R/W=0/1
2013-07-03 19:32:38,509 INFO org.apache.hadoop.streaming.PipeMapRed: MRErrorThread done
2013-07-03 19:32:38,509 INFO org.apache.hadoop.streaming.PipeMapRed: PipeMapRed failed!
2013-07-03 19:32:38,557 WARN org.apache.hadoop.mapred.TaskTracker: Error running child
java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1
    at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:362)
    at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:572)
    at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:136)
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:57)
    at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
    at org.apache.hadoop.mapred.Child.main(Child.java:170)
2013-07-03 19:32:38,631 INFO org.apache.hadoop.mapred.TaskRunner: Runnning cleanup for the task
4

3 回答 3

0
  1. 用完整版写hadoopStreamming jar,比如hadoop-streaming-1.0.4.jar
  2. 使用 -file 选项为 mapper 和 reducer 指定单独的文件路径
  3. 使用 -mapper 和 -reducer 选项告诉 hadoop 哪个是您的映射器和减速器代码

有关更多参考,请参阅使用 R 脚本在 Hadoop 上运行 WordCount

于 2013-09-05T11:06:32.333 回答
0

您需要从映射器和减速器中找到日志,因为这是作业失败的地方(如 所示java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1)。这表示您的 R 脚本崩溃了。

如果您使用的是 Hortonworks Hadoop 发行版,最简单的方法是打开您的工作历史。它应该在http://127.0.0.1:19888/jobhistory. 应该也可以使用命令行在文件系统中找到日志,但我还没有找到在哪里。

  1. http://127.0.0.1:19888/jobhistory在您的网络浏览器中打开
  2. 单击失败作业的作业 ID
  3. 单击指示失败作业计数的数字
  4. 单击尝试链接
  5. 点击日志链接

您应该会看到一个类似于

Log Type: stderr
Log Length: 418
Traceback (most recent call last):
  File "/hadoop/yarn/local/usercache/root/appcache/application_1404203309115_0003/container_1404203309115_0003_01_000002/./mapper.py", line 45, in <module>
    mapper()
  File "/hadoop/yarn/local/usercache/root/appcache/application_1404203309115_0003/container_1404203309115_0003_01_000002/./mapper.py", line 37, in mapper
    for record in reader:
_csv.Error: newline inside string

这是来自我的 Python 脚本的错误,来自 R 的错误看起来有点不同。

来源:http ://hortonworks.com/community/forums/topic/map-reduce-job-log-files/

于 2014-07-01T12:04:38.650 回答
-2

今晚我收到了同样的错误,同时还使用R.

我正在开发一个 10 节点集群,每个集群有 12 个内核,并尝试在提交时提供:

-D mapred.map.tasks=200\
-D mapred.reduce.tasks=200

虽然当我将这些更改为

-D mapred.map.tasks=10\
-D mapred.reduce.tasks=10

这是一个神秘的修复,也许今晚会出现更多的背景信息。但是,如果任何读者可以阐明,请做!

于 2015-08-11T23:05:34.943 回答