R未连接到HDFS

时间:2015-04-15 19:16:49

标签: r hadoop mapreduce jdk1.6 rhadoop

为什么R没有连接到Hadoop?

我正在使用R来使用'rhdfs'软件包连接到HDFS。安装'rJava'软件包并加载rhdfs软件包。

HADOOP_CMD环境变量在R中使用:

设置
Sys.setenv(HADOOP_CMD='/usr/local/hadoop/bin')

但是当给出hdfs.init()函数时,会生成以下错误消息:

sh: 1: /usr/local/hadoop/bin: Permission denied
Error in .jnew("org/apache/hadoop/conf/Configuration") : 
java.lang.ClassNotFoundException
In addition: Warning message:
running command '/usr/local/hadoop/bin classpath' had status 126 

此外,加载了'rmr2'库,输入了以下代码:

ints = to.dfs(1:100)

生成以下消息:

sh: 1: /usr/local/hadoop/bin: Permission denied

R-Hadoop软件包只能由'root'用户访问,而不是'hduser'(Hadoop用户),因为它们是在'root'用户运行时安装的。

2 个答案:

答案 0 :(得分:2)

简单,只有2个理由来解决这类问题

1)错误的路径 2)没有该jar的特权/权限 不仅包括其他系统路径。如下所示。

Sys.setenv(HADOOP_HOME="/home/hadoop/path")

Sys.setenv(HADOOP_CMD="/home/hadoop/path/bin/hadoop")

Sys.setenv(HADOOP_STREAMING="/home/hadoop/path/streaming-jar-file.jar")

Sys.setenv(JAVA_HOME="/home/hadoop/java/path")

然后包括ibrary(rmr2)和库(rhdfs)路径,肯定不会发生错误。

但你的问题是权限问题。因此,当root授予您所有权限(755)然后运行该jar文件时,肯定不会显示该错误。

答案 1 :(得分:1)

尝试这样。

Sys.setenv(HADOOP_CMD='/usr/local/hadoop/bin/hadoop')

Sys.setenv(JAVA_HOME='/usr/lib/jvm/java-6-openjdk-amd64')

library(rhdfs)

hdfs.init()

please give the correct HADOOP_CMD path  extend with   /bin/hadoop