0

我在 Debian 7 上安装了 CDH5。我在单节点伪分布式模式下使用 MapReduce1 使用 Hadoop。

我想在 R 中运行 Rhipe。下载后我已经安装了它:

sudo R CMD INSTALL Rhipe_0.73.1.tar.gz

然后我导出了环境变量:

export HADOOP_CONF_DIR="/etc/hadoop/conf"
export HADOOP="/usr/lib/hadoop"
export HADOOP_BIN=/usr/lib/hadoop/bin
export HADOOP_HOME=/usr/lib/hadoop

运行 R 后:

> library(Rhipe)
------------------------------------------------
| Please call rhinit() else RHIPE will not run |
------------------------------------------------
> rhinit()
Rhipe: Using Rhipe.jar file
Initializing Rhipe v0.73
14/04/11 12:21:08 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
java.io.IOException: No FileSystem for scheme: hdfs
    at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2385)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2392)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:89)
    at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2431)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2413)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:368)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:167)
    at org.godhuli.rhipe.PersonalServer.run(PersonalServer.java:321)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at RJavaTools.invokeMethod(RJavaTools.java:386)
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : 
  java.lang.NullPointerException
> 

我错过了什么?

系统中使用的Java:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      auto mode
* 1            /usr/lib/jvm/j2sdk1.7-oracle/jre/bin/java        317       manual mode
  2            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      manual mode
4

1 回答 1

1

rhinit() 函数正在尝试加载 HADOOP_HOME 变量中指定的目录中存在的 hadoop jars。由于此函数仅将 HADOOP_HOME 中的那些 jars 加载到类路径中,因此您必须将所有 hadoop 特定 jars 保留在该目录本身中。

如果您查看ripe 包中的zzz.R文件,您可以理解这一点。

于 2014-04-11T19:25:50.277 回答