【问题标题】:R is not connecting to HDFSR 没有连接到 HDFS
【发布时间】:2015-06-21 22:12:47
【问题描述】:

为什么 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 时安装的。

【问题讨论】:

    标签: r hadoop mapreduce jdk1.6 rhadoop


    【解决方案1】:

    简单,只有 2 个原因会遇到此类问题

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

    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 文件,肯定不会显示该错误。

    【讨论】:

      【解决方案2】:

      像这样试试。

      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
      

      【讨论】:

      • library(rmr2) 给出时,它会给出警告:Please review your hadoop settings. See help(hadoop.settings) Warning message: S3 methods ‘gorder.default’, ‘gorder.factor’, ‘gorder.data.frame’, ‘gorder.matrix’, ‘gorder.raw’ were declared in NAMESPACE but not found。你能告诉我为什么吗?
      猜你喜欢
      • 1970-01-01
      • 2016-01-07
      • 2017-01-13
      • 1970-01-01
      • 2019-11-02
      • 2018-03-03
      • 1970-01-01
      • 2017-09-29
      • 2015-05-28
      相关资源
      最近更新 更多