我目前正在运行centos的服务器上配置hadoop。当我跑的时候 start-dfs.sh
或者 stop-dfs.sh
,我得到以下错误:
warn util.nativecodeloader:无法为您的平台加载本机hadoop库。。。在适用的情况下使用内置java类
我正在运行hadoop2.2.0。
在网上搜索时出现以下链接:http://balanceandbreath.blogspot.ca/2013/01/utilnativecodeloader-unable-to-load.html
但是 /native/
hadoop2.x上的目录似乎不同,所以我不知道该怎么办。
我还在中添加了这两个环境变量 hadoop-env.sh
:
export hadoop\u opts=“$hadoop\u opts-djava.library.path=/usr/local/hadoop/lib/”
导出hadoop\u common\u lib\u native\u dir=“/usr/local/hadoop/lib/native/”
有什么想法吗?
21条答案
按热度按时间p3rjfoxz1#
在我的例子中,在我的64位linux mint操作系统上构建hadoop之后,我替换了中的本机库
hadoop/lib
. 问题仍然存在。然后我发现hadoop指向hadoop/lib
不是为了hadoop/lib/native
. 所以我把所有内容从本机库移到其父库。警告也不见了。ymdaylpp2#
gr8qqesn3#
对于安装hadoop来说,从cloudera安装免费版本要容易得多。它提供了一个很好的gui,使添加节点变得简单,没有编译或填充依赖项,它还提供了hive、pig等工具。
http://www.cloudera.com/content/support/en/downloads.html
步骤是:1)下载2)运行3)转到web gui(1.2.3.4:7180)4)在web gui中添加额外节点(不要在其他节点上安装cloudera软件,它会为您完成所有操作)5)在web gui中转到主页,单击“色调”和“色调web ui”。这使您可以访问Hive,Pig,sqoop等。
643ylb084#
@zhutoulala——fwiw你的链接在Hadoop2.4.0中对我有用,但有一个例外,我不得不告诉maven不要构建javadocs。我还在2.4.0的第一个链接中使用了这个补丁,它运行得很好。这是我不得不发布的maven命令
在构建并移动库之后,不要忘记更新hadoop-env.sh:)
我想这可能会帮助一个和我遇到同样路障的人
egdjgwm85#
这一行就在这里:
昆贝特的答案是钱在哪里
gzszwxb46#
先前发布的已验证补救措施:
1) 检查一下
libhadoop.so.1.0.0
hadoop发行版附带的是针对我的机器体系结构(x86\u 64)编译的:2) 添加
-Djava.library.path=<path>
至HADOOP_OPT
在hadoop-env.sh
:这确实使恼人的警告消失了。
knsnq2tg7#
这也会起作用:
aoyhnmkz8#
对于那些在osx上通过自制安装了hadoop的用户,请按照以下步骤操作,在适当的情况下替换路径和hadoop版本
然后用更新hadoop-env.sh
enyaitl39#
我也有同样的问题。通过在
.bashrc
:6ju8rftf10#
我猜你在64位centos上运行hadoop。您看到该警告的原因是本机hadoop库
$HADOOP_HOME/lib/native/libhadoop.so.1.0.0
实际上是在32位上编译的。总之,这只是一个警告,不会影响hadoop的功能。
如果您确实想消除此警告,请下载hadoop的源代码并重新编译
libhadoop.so.1.0.0
在64位系统上,然后替换32位系统。关于如何为ubuntu重新编译源代码的步骤如下:
http://www.ercoppa.org/linux-compile-hadoop-220-fix-unable-to-load-native-hadoop-library.htm
祝你好运。
ego6inou11#
首先,你可以修改glibc版本,centos提供传统的安全软件,这也意味着glibc、protobuf、protobuf等旧版本。。。
您可以将当前glibc的版本与需要的glibc进行比较。
第二:如果当前glibc的版本是旧的,您可以更新glibc。下载glibc
如果当前glibc id的版本正确,您可以将word native附加到hadoop选项中
cxfofazt12#
我和jdk6有同样的问题,我把jdk改成了jdk8,问题解决了。尝试使用jdk8!!!
332nm8kg13#
这一行就在这里:
昆贝特的回答对我有用。只需将其附加到.bashrc文件并重新加载.bashrc内容
sdnqo3pr14#
只需将本机单词附加到
HADOOP_OPTS
这样地:ps:谢谢searene
ss2ws0br15#
除了@zhutoulala接受的答案之外,这里还有一个更新,使它能够在armhf平台(raspberry pi 3 model 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包,所以您必须自己编译它,并且版本必须是protobuf2.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安装的lib/native目录的内容。运行hadoop时的警告消息应该消失。