2013-08-22 51 views
1

我正在运行RHadoop的示例脚本来测试系统并使用以下命令。R的Hadoop流式传输失败

library(rmr2) 
library(rhdfs) 
Sys.setenv(HADOOP_HOME="/usr/bin/hadoop") 
Sys.setenv(HADOOP_CMD="/usr/bin/hadoop") 
Sys.setenv(HADOOP_STREAMING="/opt/cloudera/parcels/CDH-4.3.0-1.cdh4.3.0.p0.22/lib/hadoop-mapreduce/hadoop-streaming.jar") 
hdfs.init() 
ints = to.dfs(1:100) 
calc = mapreduce(input = ints, map = function(k, v) cbind(v, 2*v)) 

但它给了我一个像下面的错误。

>Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.streaming.AutoInputFormat not found 
     at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1587) 
     at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1611) 
13/08/21 18:30:25 INFO mapred.JobClient: Job complete: job_201308191923_0307 
13/08/21 18:30:25 INFO mapred.JobClient: Counters: 7 
13/08/21 18:30:25 INFO mapred.JobClient: Job Counters 
13/08/21 18:30:25 INFO mapred.JobClient:  Failed map tasks=1 
13/08/21 18:30:25 INFO mapred.JobClient:  Launched map tasks=8 
13/08/21 18:30:25 INFO mapred.JobClient:  Data-local map tasks=8 
13/08/21 18:30:25 INFO mapred.JobClient:  Total time spent by all maps in occupied slots (ms)=46647 
13/08/21 18:30:25 INFO mapred.JobClient:  Total time spent by all reduces in occupied slots (ms)=0 
13/08/21 18:30:25 INFO mapred.JobClient:  Total time spent by all maps waiting after reserving slots (ms)=0 
13/08/21 18:30:25 INFO mapred.JobClient:  Total time spent by all reduces waiting after reserving slots (ms)=0 
13/08/21 18:30:25 ERROR streaming.StreamJob: Job not Successful! 
Streaming Command Failed! 
Error in mr(map = map, reduce = reduce, combine = combine, in.folder = if (is.list(input)) { : 
    hadoop streaming failed with error code 1 

什么可能是错在这里

回答

2

HADOOP_HOME应该是一个目录中的任何领先。 HADOOP_CMD应该是一个程序。所以,既然它们被设定为相同的东西,那就错了。但是HADOOP_CMD应该取代HADOOP_HOME,所以不应该是根本原因。所以剩下的唯一选择就是调试。如果你已经阅读了调试指南,你会发现stderr并且知道更多。只有控制台输出,没有什么可操作的。

+0

感谢您对HADOOP_CMD和HADOOP_HOME的评论。我已经浏览了一些页面,但“stderr”离我还有很远的距离。如有可能,任何婴儿步骤。 – LonelySoul

+0

对我来说,最简单的方法就是使用Web UI。我使用控制台,你会看到一个跟踪网址,在那里浏览。无法解释确切的点击次序,但查找失败的任务,单击特定的一项,然后查找屏幕最右侧日志的链接。这是一般的Hadoop,所以你可以在Hadoop的介绍材料中找到一个独立于RHadoop的Web UI。 – piccolbo

+0

非常感谢那个方向。我发现stderr和stdout都是--empty--。这是否意味着我需要更改* .jar文件。因为我从一个人那里得到了这个链接。 – LonelySoul

相关问题