日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java.library.path hadoop_关于java:Hadoop“无法为您的平台加载本机Hadoop库”警告

發布時間:2024/10/12 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java.library.path hadoop_关于java:Hadoop“无法为您的平台加载本机Hadoop库”警告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我目前正在運行CentO的服務器上配置hadoop。 當我運行start-dfs.sh或stop-dfs.sh時,出現以下錯誤:

WARN util.NativeCodeLoader: Unable to load native-hadoop library for

your platform... using builtin-java classes where applicable

我正在運行Hadoop 2.2.0。

在線進行搜索會顯示以下鏈接:http://balanceandbreath.blogspot.ca/2013/01/utilnativecodeloader-unable-to-load.html

但是,hadoop 2.x上/native/目錄的內容似乎有所不同,因此我不確定該怎么做。

我還在hadoop-env.sh中添加了這兩個環境變量:

export HADOOP_OPTS="$HADOOP_OPTS

-Djava.library.path=/usr/local/hadoop/lib/"

export HADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop/lib/native/"

有任何想法嗎?

對于可搜索性:此問題還至少適用于Hadoop 2.4.0,Hadoop 2.4.1以及可能的其他版本。

hadoop.apache.org/docs/current/hadoop-project-dist/中有關如何使用本機庫的文檔。

我假設您在64位CentOS上運行Hadoop。您看到警告的原因是本地Hadoop庫$HADOOP_HOME/lib/native/libhadoop.so.1.0.0實際上是在32位上編譯的。

無論如何,這只是一個警告,不會影響Hadoop的功能。

如果您確實想消除此警告,請使用以下方法:下載Hadoop的源代碼并在64位系統上重新編譯libhadoop.so.1.0.0,然后替換32位。

對于Ubuntu,此處包含有關如何重新編譯源代碼的步驟:

http://www.ercoppa.org/Linux-Compile-Hadoop-220-fix-Unable-to-load-native-hadoop-library.htm

祝好運。

不為我工作。給我同樣的無法為平臺錯誤加載本地hadoop庫。

即使這不能完全起作用,它仍然會有所幫助。那么,這將完全影響性能嗎?

我在Centos 7和Centos 6.5上使用相同的hadoop 2.5.0 tar。兩者都是64位操作系統。 Centos7上沒有這樣的警告,但是Centos 6.5給了我這個警告,為什么?

謝謝。我沒有意識到這是一個警告。實際上說的是" starting namenode",最后一句話是" Unable to load native-hadoop ..",這引起了恐懼。

請注意,實際上您不必編譯整個Hadoop,如說明所示-hadoop-common-projecthadoop-common和hadoop-hdfs-projecthadoop-hdfs就足夠了。

對我來說,在Mac重新啟動后恢復會話時,終端只是出現故障。退出終端應用程序,然后再次重新啟動。錯誤消失了,并且能夠啟動spark-shell。

鏈接斷開

該文件可能是64位,這是現在的標準。找出:stackoverflow.com/questions/19444904/

只需將原生詞附加到您的HADOOP_OPTS上,如下所示:

export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"

PS:感謝Searene

這也為我做到了。在具有Hadoop 2.6的Ubuntu上,路徑為/home/user/hadoop-2.6.0/lib/native

export HADOOP_OPTS ="-Djava.library.path = $ HADOOP_HOME / lib / native"

就我而言,這個stackoverflow.com/a/30392965解決了我的問題

我認為,兩種解決方案是相同的。根據文檔,java.library.path是加載庫時要搜索的路徑的列表。這樣,您可以導出LD_LIBRARY_PATH或在Java命令行中使用-D選項。在Java命令行中,-D = value允許我們設置系統屬性值。

答案取決于...我剛剛從tarball在64位CentOS 6.6上安裝了Hadoop 2.6。 Hadoop安裝確實附帶了一個預構建的64位本機庫。對于我的安裝,它在這里:

/opt/hadoop/lib/native/libhadoop.so.1.0.0

我知道它是64位的:

[hadoop@VMWHADTEST01 native]$ ldd libhadoop.so.1.0.0

./libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libhadoop.so.1.0.0)

linux-vdso.so.1 => ?(0x00007fff43510000)

libdl.so.2 => /lib64/libdl.so.2 (0x00007f9be553a000)

libc.so.6 => /lib64/libc.so.6 (0x00007f9be51a5000)

/lib64/ld-linux-x86-64.so.2 (0x00007f9be5966000)

不幸的是,當我專注于"這個庫是32 pr 64位嗎?"時,我愚蠢地忽略了那里的答案。

`GLIBC_2.14' not found (required by ./libhadoop.so.1.0.0)

因此,經驗教訓。無論如何,其余的至少使我能夠抑制警告。因此,我繼續進行了其他回答中建議的所有操作,以使用HADOOP_OPTS環境變量提供庫路徑,但無濟于事。所以我看了一下源代碼。產生錯誤的模塊會告訴您提示(util.NativeCodeLoader):

15/06/18 18:59:23 WARN util.NativeCodeLoader: Unable to load native-hadoop ? ?library for your platform... using builtin-java classes where applicable

所以,到這里看看它是做什么的:

http://grepcode.com/file/repo1.maven.org/maven2/com.ning/metrics.action/0.2.6/org/apache/hadoop/util/NativeCodeLoader.java/

嗯,有一些調試級別的日志記錄-讓我們打開它,看看是否能獲得其他幫助。通過將以下行添加到$ HADOOP_CONF_DIR / log4j.properties文件中來完成此操作:

log4j.logger.org.apache.hadoop.util.NativeCodeLoader=DEBUG

然后,我運行了一個生成原始警告的命令,如stop-dfs.sh,并得到了這個好東西:

15/06/18 19:05:19 DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: /opt/hadoop/lib/native/libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/hadoop/lib/native/libhadoop.so.1.0.0)

答案在調試消息的這段代碼中得到了揭示(與前面的ldd命令"試圖"告訴我的是同一件事:

`GLIBC_2.14' not found (required by opt/hadoop/lib/native/libhadoop.so.1.0.0)

我有什么版本的GLIBC?這是找出答案的簡單技巧:

[hadoop@VMWHADTEST01 hadoop]$ ldd --version

ldd (GNU libc) 2.12

因此,無法將我的操作系統更新為2.14。唯一的解決方案是從我的OS上的源構建本機庫,或取消顯示警告,而現在暫時將其忽略。我選擇暫時不顯示惱人的警告(但將來計劃從源構建)使用與獲取調試消息相同的日志記錄選項進行購買,只是現在將其設置為ERROR級別。

log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR

我希望這可以幫助其他人看到開源軟件的一大好處是,如果您采取一些簡單的邏輯步驟,就可以弄清楚這些東西。

謝謝您,先生,這個精美的詳細答案。我得到了答案,并在此過程中學到了一些有價值的東西。

就我而言,在64位Linux Mint OS上構建hadoop之后,我替換了hadoop/lib中的本機庫。問題仍然存在。然后我找出了指向hadoop/lib而不是hadoop/lib/native的Hadoop。所以我只是將所有內容從本機庫移到了其父庫。警告就消失了。

我剛巧嘗試了網上的所有內容。我很累,只是清空了lib文件夾本身中的所有文件,即使用上述答案中提供的鏈接編譯的文件。最終我不知道為什么盡管你有不贊成票,但我還是嘗試了你的建議,但在經過了一天的艱苦努力之后,它仍然起作用了。我改變了.bashrc或hadoop-env.sh中的本機庫位置都沒關系。謝謝一噸。

我很累,只是清空了lib文件夾本身中的所有本機文件夾文件,即使用上述答案中提供的鏈接(新的hadoop-2.4.0-src.tar.gz中的本機文件夾)編譯的文件。

我遇到過同樣的問題。通過在.bashrc中添加以下行來解決:

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

我必須在HADOOP_OPTS值中添加" / native"

經過Koti建議的持續研究后,我解決了該問題。

hduser@ubuntu:~$ cd /usr/local/hadoop

hduser@ubuntu:/usr/local/hadoop$ ls

bin ?include ?libexec ? ? ?logs ? ? ? ?README.txt ?share

etc ?lib ? ? ?LICENSE.txt ?NOTICE.txt ?sbin

hduser@ubuntu:/usr/local/hadoop$ cd lib

hduser@ubuntu:/usr/local/hadoop/lib$ ls

native

hduser@ubuntu:/usr/local/hadoop/lib$ cd native/

hduser@ubuntu:/usr/local/hadoop/lib/native$ ls

libhadoop.a ? ? ? libhadoop.so ? ? ? ?libhadooputils.a ?libhdfs.so

libhadooppipes.a ?libhadoop.so.1.0.0 ?libhdfs.a ? ? ? ? libhdfs.so.0.0.0

hduser@ubuntu:/usr/local/hadoop/lib/native$ sudo mv * ../

干杯

這也將起作用:

export LD_LIBRARY_PATH=/usr/lib/hadoop/lib/native

謝謝。如果您為了使用tomcat apr重寫LD_LIBRARY_PATH,只需將hadoop本機路徑附加為`export LD_LIBRARY_PATH = $ LD_LIBRARY_PATH:/ usr / lib / hadoop / lib / native。

對于通過Homebrew安裝了Hadoop的OSX上的計算機,請按照以下步驟在適當的位置替換路徑和Hadoop版本

wget http://www.eu.apache.org/dist/hadoop/common/hadoop-2.7.1/hadoop-2.7.1-src.tar.gz

tar xvf hadoop-2.7.1-src.tar.gz

cd hadoop-2.7.1-src

mvn package -Pdist,native -DskipTests -Dtar

mv lib /usr/local/Cellar/hadoop/2.7.1/

然后使用以下命令更新hadoop-env.sh

export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc= -Djava.library.path=/usr/local/Cellar/hadoop/2.7.1/lib/native"

謝謝菲利普。該解決方案非常完美。就我而言,我所需要的只是選項Djava.library.path。那正是我想要的。謝謝!!!

非常感謝。我有bzip2:false,openssl:false build不支持openssl。其他人有路徑出現。有什么建議么。

閱讀此后在這里回答stackoverflow.com/a/50999874/2930427

export JAVA_HOME=/home/hadoop/software/java/jdk1.7.0_80

export HADOOP_HOME=/usr/local/hadoop

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_COMMON_LIB_NATIVE_DIR"

@zhutoulala-FWIW,您的鏈接對Hadoop 2.4.0來說對我有用,但有一個例外,我不得不告訴maven不要構建javadocs。我還在2.4.0的第一個鏈接中使用了補丁,并且工作正常。這是我必須發出的Maven命令

mvn package -Dmaven.javadoc.skip=true -Pdist,native -DskipTests -Dtar

構建完這些并移動了庫之后,請不要忘記更新hadoop-env.sh :)

認為這可能會幫助遇到與我一樣的障礙的人

將已編譯的本機庫文件移動到$HADOOP_HOME/lib文件夾。

然后通過編輯.bashrc文件設置環境變量

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib

export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib"

確保已編譯的本機庫文件位于$HADOOP_HOME/lib文件夾中。

它應該工作。

這行就在這里:

export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH

根據KunBetter的回答,對我有用。

只需將其附加到.bashrc文件并重新加載.bashrc內容

$ source ~/.bashrc

我在本地系統中使用hadoop-2.6.0版本。我也面臨著同樣的問題。然后,我下載了hadoop-2.7.1-src并構建了二進制和本機庫,還用新構建的本機替換了本機庫hadoop-2.6.0。但是我仍然遇到同樣的錯誤。然后我export JAVA_LIBRARY_PATH=$HADOOP_HOMElibnative:$JAVA_LIBRARY_PATH并且對我有用。

export HADOOP_HOME=/home/hadoop/hadoop-2.4.1

export PATH=$HADOOP_HOME/bin:$PATH

export HADOOP_PREFIX=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_PREFIX

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_PREFIX/lib/native

export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop

export HADOOP_HDFS_HOME=$HADOOP_PREFIX

export HADOOP_MAPRED_HOME=$HADOOP_PREFIX

export HADOOP_YARN_HOME=$HADOOP_PREFIX

export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH

是的,您應該已經通過hadoop資源重新編譯了64位lib / native。

除了@zhutoulala可接受的答案之外,還有一個更新程序,使其可以在ARMHF平臺(Raspberry Pi 3模型B)上使用最新的穩定版本(2.8)使用。

首先,我可以確認您必須將本機庫重新編譯為64位ARM,此處基于設置某些環境變量的其他答案將不起作用。如Hadoop文檔中所述,預構建的本機庫為32位。

拳頭鏈接(http://www.ercoppa.org/posts/how-to-compile-apache-hadoop-on-ubuntu-linux.html)中給出的高級步驟是正確的。

在此URL http://www.instructables.com/id/Native-Hadoop-260-Build-on-Pi/上,您可以獲得有關Raspberry Pi的更多詳細信息,但不適用于Hadoop 2.8版。

這是倒入Hadoop 2.8的跡象:

最新的Raspbian上仍然沒有protobuf軟件包,因此您必須自己編譯它,并且版本必須完全是protobuf 2.5(https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz)

CMake文件修補方法必須更改。此外,要修補的文件不相同。不幸的是,JIRA沒有針對2.8的可接受補丁。在此URL(https://issues.apache.org/jira/browse/HADOOP-9320)上,您必須將Andreas Muttscheller建議的補丁復制并粘貼到namenode上:

:hadoop-2.8.0-src/hadoop-common-project/hadoop-common $ touch HADOOP-9320-v2.8.patch

:hadoop-2.8.0-src/hadoop-common-project/hadoop-common $ vim HADOOP-9320-v2.8.patch

#copy and paste proposed patch given here : https://issues.apache.org/jira/browse/HADOOP-9320?focusedCommentId=16018862&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-16018862

:hadoop-2.8.0-src/hadoop-common-project/hadoop-common $ patch < HADOOP-9320-v2.8.patch

patching file HadoopCommon.cmake

patching file HadoopJNI.cmake

:hadoop-2.8.0-src/hadoop-common-project/hadoop-common $ cd ../..

:hadoop-2.8.0-src $ sudo mvn package -Pdist,native -DskipTests -Dtar

一旦構建成功:

:hadoop-2.8.0-src/hadoop-dist/target/hadoop-2.8.0/lib/native $ tar -cvf nativelibs.tar *

并將Hadoop安裝目錄lib / native目錄的內容替換為該歸檔文件的內容。運行Hadoop時的警告消息應消失。

我在使用JDK6時遇到了同樣的問題,我將JDK更改為JDK8,問題得以解決。

嘗試使用JDK8 !!!

這行就在這里:

export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH

昆貝特的答案是錢在哪里

就我而言,我同時需要:export JAVA_LIBRARY_PATH=$HADOOP_HOMElibnative:$JAVA_LIBRARY_PATH和export LD_LIBRARY_PATH=$HADOOP_HOMElibnative:$LD_LIBRARY_PATH

經過驗證的較早發布的補救措施:

1)檢查Hadoop分發版隨附的libhadoop.so.1.0.0是針對我的機器架構x86_64編譯的:

[nova]:file /opt/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0

/opt/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=3a80422c78d708c9a1666c1a8edd23676ed77dbb, not stripped

2)在hadoop-env.sh中的HADOOP_OPT中添加了-Djava.library.path=:

export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.library.path=/opt/hadoop-2.6.0/lib/native"

這的確使惱人的警告消失了。

首先:您可以修改glibc版本。CentOS傳統上提供了安全的軟件,這也意味著該版本較舊,例如glibc,protobuf等。

ldd --version

ldd /opt/hadoop/lib/native/libhadoop.so.1.0.0

您可以將當前glibc的版本與所需的glibc進行比較。

其次:如果當前glibc的版本較舊,則可以更新glibc。

下載Glibc

如果當前glibc id的版本正確,則可以在HADOOP_OPTS后面附加本機單詞

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

我沒有使用CentOS。這是我在Ubuntu 16.04.2,hadoop-2.7.3,jdk1.8.0_121中擁有的東西。成功運行start-dfs.sh或stop-dfs.sh而不出現錯誤:

# JAVA env

#

export JAVA_HOME=/j01/sys/jdk

export JRE_HOME=/j01/sys/jdk/jre

export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:${PATH}:.

# HADOOP env

#

export HADOOP_HOME=/j01/srv/hadoop

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

將/ j01 / sys / jdk,/ j01 / srv / hadoop替換為安裝路徑

我還在Ubuntu上進行了一次以下設置,從而消除了在運行start-dfs.sh時多次輸入密碼的需要:

sudo apt install openssh-server openssh-client

ssh-keygen -t rsa

ssh-copy-id user@localhost

用您的用戶名替換用戶

對于安裝Hadoop,從Cloudera安裝免費版本要容易得多。它帶有一個不錯的GUI,使添加節點變得簡單,沒有編譯或填充依賴項,它帶有諸如hive,pig之類的東西。

http://www.cloudera.com/content/support/zh-CN/downloads.html

步驟如下:

1)下載

2)運行

3)轉到Web GUI(1.2.3.4:7180)

4)在網絡GUI中添加其他節點(請勿在其他節點上安裝cloudera軟件,它會為您完成所有工作)

5)在Web GUI中,轉到"主頁",單擊" Hue"和" Hue Web UI"。這使您可以訪問Hive,Pig,Sqoop等。

Cloudera發行版比許多軟件包的當前版本落后很多時間。如果您想"最新,最偉大",那么Apache Hadoop是您的理想之選

總結

以上是生活随笔為你收集整理的java.library.path hadoop_关于java:Hadoop“无法为您的平台加载本机Hadoop库”警告的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。