2014-04-11 6 views
0

Я установил CDH5 на Debian 7. У меня работает Hadoop с MapReduce1 в псевдораспределенном режиме с одним узлом.R 2.15.1; Rhipe 0,73; CDH 5 - java.io.IOException: Нет Файловая система для схемы: hdfs

Я хотел бы запустить Rhipe внутри R. После загрузки я установил его:

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 
+0

Можете ли вы запустить команду 'hasoop class path 'и посмотреть, содержит ли результат файл hasoop-hdfs - *. Jar. – donut

+0

@donut 'damian @ cdh5-singleOldMR: ~ $ hasoop class path', result:' Ошибка: не удалось найти или загрузить класс основного класса. –

+0

извините за мою ошибку команда 'hasoop classpath' – donut

ответ

1

rhinit() функция пытается загрузить Hadoop банки, которые присутствуют в каталоге, указанном в HADOOP_HOME variable.Since эта функция загружает только те банки в HADOOP_HOME к классу путь, в котором вы должны хранить все специфические банки в конкретном каталоге.

Это можно понять, если вы посмотрите на zzz.R файл в пакете rhipe.

+0

Я создал символическую ссылку с' sudo ln -s/usr /lib/hadoop-hdfs/hadoop-hdfs.jar/usr/lib/hadoop/hadoop-hdfs.jar', и у меня есть другая ошибка: 'java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/lib/output/FileOutputFormat'. И это похоже на другой тип ошибки:/ –

+0

Можете ли вы добавить символическую ссылку для hasoop-core * .jar и всех других банок в команде 'hadoop classpath' – donut

+0

Хорошо, я сделал: 'sudo ln -s/usr/lib/hadoop- hdfs/*/usr/lib/hadoop' и 'sudo ln -s /usr/lib/hadoop-0.20-mapreduce/*/usr/lib/hadoop'. Теперь он выглядит как ошибка с hadoop/java, но с протокольным буфером, несмотря на то, что у меня есть версия 2.4.1 из репозитория Debian: 'Ошибка в .jcall (« RJavaTools »,« Ljava/lang/Object; »,« invokeMethod », cl,: java.lang.UnsupportedOperationException: это должно быть переопределено подклассами. ' –