1

为什么 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”用户运行 R 时安装的。

4

2 回答 2

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) 和 library(rhdfs) 路径,肯定不会发生该错误。

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

于 2015-04-27T17:48:25.727 回答
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
于 2015-04-16T07:30:32.457 回答