2015-09-26 4 views
1

Я запускаю hadoop 2.6.1 на OS X 10.10.5. Я получаю это предупреждение:Hadoop 2.6.1 Предупреждение: WARN util.NativeCodeLoader

WARN util.NativeCodeLoader: Не удалось загрузить библиотеку нативной Hadoop для платформы ... с помощью классов Java-встроенная, где это применимо

Я читал, что эта проблема может быть вызванный запуском 32-разрядной библиотеки libhadoop.so.1.0.0 с 64-разрядной версией hadoop. Я проверил мою версию libhadoop.so.1.0.0 и это 64 бит.

$ find ~/hadoop-2.6.1/ -name libhadoop.so.1.0.0 -ls 
136889669  1576 -rwxr-xr-x 1 davidlaxer  staff    806303 Sep 16 14:18 /Users/davidlaxer/hadoop-2.6.1//lib/native/libhadoop.so.1.0.0 

$ file /Users/davidlaxer/hadoop-2.6.1//lib/native/libhadoop.so.1.0.0 
    /Users/davidlaxer/hadoop-2.6.1//lib/native/libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped 

$ env | grep HADOOP 
HADOOP_HOME=/Users/davidlaxer/hadoop-2.6.1 
HADOOP_COMMON_LIB_NATIVE_DIR=/Users/davidlaxer/hadoop-2.6.1/lib/native 
HADOOP_INSTALL=/Users/davidlaxer/hadoop-2.6.1 
HADOOP_CONF_DIR=/Users/davidlaxer/hadoop-2.6.1/etc/hadoop 
HADOOP_OPTS=-Djava.library.path=/Users/davidlaxer/hadoop-2.6.1/lib 

$ hadoop version 
Hadoop 2.6.1 
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r b4d876d837b830405ccdb6af94742f99d49f9c04 
Compiled by jenkins on 2015-09-16T21:07Z 
Compiled with protoc 2.5.0 
From source with checksum ba9a9397365e3ec2f1b3691b52627f 
This command was run using /Users/davidlaxer/hadoop-2.6.1/share/hadoop/common/hadoop-common-2.6.1.jar 

$ java -version 
java version "1.8.0_05" 
Java(TM) SE Runtime Environment (build 1.8.0_05-b13) 
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode) 

$ hadoop checknative -a 
15/09/26 11:01:28 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
Native library checking: 
hadoop: false 
zlib: false 
snappy: false 
lz4:  false 
bzip2: false 
openssl: false 
15/09/26 11:01:29 INFO util.ExitUtil: Exiting with status 1 


$ sudo port list zlib 
Password: 
zlib       @1.2.8   archivers/zlib 
$ sudo port list snappy 
snappy       @1.1.1   archivers/snappy 
$ sudo port list lz4 
lz4       @r130   archivers/lz4 
$ sudo port list bzip2 
bzip2       @1.0.6   archivers/bzip2 
$ sudo port list openssl 
openssl      @1.0.2d   devel/openssl 

$env | grep CLASS 

CLASSPATH=/users/davidlaxer/trunk/core/src/test/java/:/Users/davidlaxer/hadoop-2.6.1-src/hadoop-dist/target/hadoop-dist-2.6.1.jar:/Users/davidlaxer/clojure/target:/Users/davidlaxer/hadoop-2.6.1/lib/native: 

˚Ани идеи?

ответ

0

Одной из причин предупреждения может быть конфликт архитектуры архитектуры (32 против 64 бит). Другим может быть то, что родная библиотека не находится на пути библиотеки java (или библиотека, в которой она нуждается, не находится на пути).

Выполнение следующее должно дать вам более подробную информацию:

hadoop checknative -a 

Также не ваши HADOOP_OPTS на самом деле указывают на Lib каталога вместо Lib/родной?

Может быть, вы должны добавить следующее к log4j.properties файл, чтобы получить больше информации: log4j.logger.org.apache.hadoop.util.NativeCodeLoader = DEBUG

Есть также несколько других вещей, которые вы можете попробуйте:

1)

suda hadoop checknative -a 

(чтобы проверить, является ли это разрешение вопроса)

2) Установка LD_LIBRARY _PATH дополнительно.

+0

$ Hadoop checknative -a 15/09/26 11:01:28 WARN util.NativeCodeLoader: невозможно загрузить библиотеку native-hadoop для вашей платформы ...используя классы встроенного в Java, где применяются проверка Native библиотеки: Hadoop: ложный Zlib: ложные мгновенные: ложные LZ4: ложные bzip2: ложные OpenSSL: ложные 15/09/26 11:01:29 INFO Util. ExitUtil: Выход со статусом 1 – dbl001

+0

env | grep CLASS CLASSPATH =/пользователи/davidlaxer/trunk/core/src/test/java /:/Пользователи/davidlaxer/hadoop-2.6.1-src/hadoop-dist/target/hadoop-dist-2.6.1.jar: /Users/davidlaxer/clojure/target:/Users/davidlaxer/hadoop-2.6.1/lib/native: – dbl001

+0

Фактически, из результата checknative, похоже, вам нужно установить еще несколько библиотек. – benohead

0

Я построил Hadoop-3.0.0-SNAPSHOT от источника с поддержкой родного кода, регулируется переменной окружения HADOOP_COMMON_LIB_NATIVE_DIR:

HADOOP_COMMON_LIB_NATIVE_DIR=/Users/davidlaxer/hadoop/hadoop-dist/target/hadoop-3.0.0-SNAPSHOT/lib/native. 

Теперь обе версии Hadoop (например, 2.3.0 и 3,0 ПАНОРАМА) get no warning:

HADOOP_HOME=/Users/davidlaxer/hadoop/hadoop-dist/target/hadoop-3.0.0-SNAPSHOT 
HADOOP_COMMON_LIB_NATIVE_DIR=/Users/davidlaxer/hadoop/hadoop-dist/target/hadoop-3.0.0-SNAPSHOT/lib/native 
HADOOP_INSTALL=/Users/davidlaxer/hadoop/hadoop-dist/target/hadoop-3.0.0-SNAPSHOT 
HADOOP_CONF_DIR=/Users/davidlaxer/hadoop/hadoop-dist/target/hadoop-3.0.0-SNAPSHOT/etc/hadoop 
HADOOP_OPTS=-Djava.library.path=/Users/davidlaxer/hadoop/hadoop-dist/target/hadoop-3.0.0-SNAPSHOT/lib/native 


$ hadoop version 
Hadoop 2.3.0 
Subversion http://svn.apache.org/repos/asf/hadoop/common -r 1567123 
Compiled by jenkins on 2014-02-11T13:40Z 
Compiled with protoc 2.5.0 
From source with checksum dfe46336fbc6a044bc124392ec06b85 
This command was run using /Users/davidlaxer/hadoop-2.3.0/share/hadoop/common/hadoop-common-2.3.0.jar 

$ bin/hadoop version 
Hadoop 3.0.0-SNAPSHOT 
Source code repository https://github.com/apache/hadoop.git -r 83e65c5fe84819b6c6da015b269fb4e46a88d105 
Compiled by davidlaxer on 2015-09-26T22:46Z 
Compiled with protoc 2.5.0 
From source with checksum 883bd12016a9bbe21eb0ae4b6beaa 
This command was run using /Users/davidlaxer/hadoop/hadoop-dist/target/hadoop-3.0.0-SNAPSHOT/share/hadoop/common/hadoop-common-3.0.0-SNAPSHOT.jar 

$ bin/hadoop fs -ls /users/davidlaxer/genomics/reads/HG00103 
Found 1 items 
drwxr-xr-x - davidlaxer staff  102 2015-09-26 09:13 /users/davidlaxer/genomics/reads/HG00103/_temporary 
David-Laxers-MacBook-Pro:hadoop-3.0.0-SNAPSHOT davidlaxer$ bin/hadoop version 
Hadoop 3.0.0-SNAPSHOT 
Source code repository https://github.com/apache/hadoop.git -r 83e65c5fe84819b6c6da015b269fb4e46a88d105 
Compiled by davidlaxer on 2015-09-26T22:46Z 
Compiled with protoc 2.5.0 
From source with checksum 883bd12016a9bbe21eb0ae4b6beaa 
This command was run using /Users/davidlaxer/hadoop/hadoop-dist/target/hadoop-3.0.0-SNAPSHOT/share/hadoop/common/hadoop-common-3.0.0-SNAPSHOT.jar 
1

У меня была такая же проблема и улажена, добавив следующие XML-файлы в конфигурацию заданий.

Configuration conf = job.getConfiguration(); 

//To access HDFS files 
conf.addResource(new Path(hadoopHome+"/conf/core-site.xml"));//In my case hadoopHome is /usr/lib/hadoop 
conf.addResource(new Path(hadoopHome+"/conf/hdfs-site.xml")); 

conf.addResource(new Path(hadoopHome+"/conf/mapred-site.xml")); //To run a mapreduce job 

/* Other configurations comes here*/ 
1

У меня была такая же проблема. К счастью, проблема решена. Вы можете увидеть это решение ниже.

Несколько раз отображать предупреждение не позволяет загружать файл в HDFS. Поэтому, когда нет предупреждения, такой проблемы нет.

Открыть hadoop-env.sh и идти до конца файла и попытаться добавить следующие строки

export HADOOP_HOME_WARN_SUPPRESS=1 
export HADOOP_ROOT_LOGGER="WARN,DRFA"