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