r没有连接到hdfs

mwngjboj  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(625)

为什么r没有连接到hadoop?
我使用r连接到hdfs使用'rhdfs'包。安装了“rjava”包并加载了rhdfs包。
hadoop\u cmd环境变量在r中设置时使用:

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

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

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

此外,还加载了“rmr2”库,并键入了以下代码:

  1. ints = to.dfs(1:100)

产生了如下信息:

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

r-hadoop包只能由“root”用户而不是“hduser”(hadoop用户)访问,因为它们是在“root”用户运行r时安装的。

bis0qfac

bis0qfac1#

很简单,只有两个原因会出现这种问题
1) 错误路径2)该jar没有权限(不仅包括其他系统路径)。如下文所示。

  1. Sys.setenv(HADOOP_HOME="/home/hadoop/path")
  2. Sys.setenv(HADOOP_CMD="/home/hadoop/path/bin/hadoop")
  3. Sys.setenv(HADOOP_STREAMING="/home/hadoop/path/streaming-jar-file.jar")
  4. Sys.setenv(JAVA_HOME="/home/hadoop/java/path")

然后包括library(rmr2)和library(rhdfs)路径,肯定不会发生错误。
但你的问题是权限问题。因此,当根用户向您授予所有特权(755)然后运行该jar文件时,肯定不会显示该错误。

wixjitnu

wixjitnu2#

像这样试试。

  1. Sys.setenv(HADOOP_CMD='/usr/local/hadoop/bin/hadoop')
  2. Sys.setenv(JAVA_HOME='/usr/lib/jvm/java-6-openjdk-amd64')
  3. library(rhdfs)
  4. hdfs.init()
  5. please give the correct HADOOP_CMD path extend with /bin/hadoop

相关问题