Hadoop:无法为您的平台加载native-hadoop库。使用builtin-java类>适用的地方

时间:2017-06-20 17:56:25

标签: java hadoop

我正在尝试使用此命令配置hadoop和format namenode:

$ hdfs namenode -format

但是,我一直收到这个错误。我该如何解决?

  

2017-06-20 12:22:25,792 WARN util.NativeCodeLoader:无法加载   适用于您平台的native-hadoop库...使用builtin-java类   适用时^ [[A2017-06-20 12:22:28,825 WARN ipc.Client:失败   连接到服务器:localhost / 127.0.0.1:9000:尝试一次并失败。   java.net.ConnectException:拒绝连接   sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)at   sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)     在   org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)     在org.apache.hadoop.net.NetUtils.connect(NetUtils.java:531)at   org.apache.hadoop.net.NetUtils.connect(NetUtils.java:495)at   org.apache.hadoop.ipc.Client $ Connection.setupConnection(Client.java:681)     在   org.apache.hadoop.ipc.Client $ Connection.setupIOstreams(Client.java:777)     在   org.apache.hadoop.ipc.Client $ Connection.access $ 3500(Client.java:408)     在org.apache.hadoop.ipc.Client.getConnection(Client.java:1542)at   org.apache.hadoop.ipc.Client.call(Client.java:1373)at   org.apache.hadoop.ipc.Client.call(Client.java:1337)at   org.apache.hadoop.ipc.ProtobufRpcEngine $ Invoker.invoke(ProtobufRpcEngine.java:227)     在   org.apache.hadoop.ipc.ProtobufRpcEngine $ Invoker.invoke(ProtobufRpcEngine.java:115)     在com.sun.proxy。$ Proxy11.getFileInfo(未知来源)at   org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:812)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:498)at   org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:398)     在   org.apache.hadoop.io.retry.RetryInvocationHandler $ Call.invokeMethod(RetryInvocationHandler.java:163)     在   org.apache.hadoop.io.retry.RetryInvocationHandler $ Call.invoke(RetryInvocationHandler.java:155)     在   org.apache.hadoop.io.retry.RetryInvocationHandler $ Call.invokeOnce(RetryInvocationHandler.java:95)     在   org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:335)     在com.sun.proxy。$ Proxy12.getFileInfo(未知来源)at   org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:1638)at at   org.apache.hadoop.hdfs.DistributedFileSystem $ 27.doCall(DistributedFileSystem.java:1367)     在   org.apache.hadoop.hdfs.DistributedFileSystem $ 27.doCall(DistributedFileSystem.java:1364)     在   org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)     在   org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1379)     在org.apache.hadoop.fs.Globber.getFileStatus(Globber.java:64)at   org.apache.hadoop.fs.Globber.doGlob(Globber.java:269)at at   org.apache.hadoop.fs.Globber.glob(Globber.java:148)at at   org.apache.hadoop.fs.FileSystem.globStatus(FileSystem.java:1960)at at   org.apache.hadoop.fs.shell.PathData.expandAsGlob(PathData.java:326)     在   org.apache.hadoop.fs.shell.Command.expandArgument(Command.java:239)     在   org.apache.hadoop.fs.shell.Command.expandArguments(Command.java:222)     在   org.apache.hadoop.fs.shell.FsCommand.processRawArguments(FsCommand.java:103)     在org.apache.hadoop.fs.shell.Command.run(Command.java:166)at   org.apache.hadoop.fs.FsShell.run(FsShell.java:326)at at   org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)at   org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)at   org.apache.hadoop.fs.FsShell.main(FsShell.java:389)ls:来自   ubuntu / 127.0.1.1到localhost:9000连接异常失败:   java.net.ConnectException:连接被拒绝;有关更多详情,请参阅   http://wiki.apache.org/hadoop/ConnectionRefused \错误:JAVA_HOME   /opt/jdk1.8.0_91/不存在。

1 个答案:

答案 0 :(得分:0)

  

2017-06-20 12:22:25,792 WARN util.NativeCodeLoader:无法为您的平台加载native-hadoop库...使用适用的builtin-java类

Apache Hadoop可以与可选的本机库集成,该库包含实现更深入的OS集成和某些功能的性能增强的扩展。有关更多详细信息,请参阅文档页面Native Libraries Guide

在许多情况下,对于客户端使用或开发人员设置,本机库扩展是可选的。但是,日志警告可能会令人讨厌。如果您想将其排除在外,可以选择以下几种方法:

  1. 某些Apache Hadoop版本包含一个预构建的本机库。你可以使用这个。这个捆绑的库将使用执行Apache Hadoop发布版本的任何操作系统/体系结构,因此无法保证它将与您自己的操作系统/体系结构相匹配。不要尝试混合和匹配不同版本的Hadoop代码和本机代码,否则您可能会看到异常的链接错误。
  2. 自己构建本机库。这将保证构建与您的实际运行时OS /体系结构相匹配。除了上面链接的文档页面之外,还有关于如何构建BUILDING.txt文件的更具体说明。同样,匹配Hadoop代码和本机代码的版本也很重要。
  3. 如果您使用商业供应商的发行版,那么他们可能已经注意保证本地库已经正确设置和部署。
  4. 如果所有其他方法都失败了,您可以通过将以下内容添加到log4j.properties来扼杀警告

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

  5.   

    org.apache.hadoop.fs.FsShell.main(FsShell.java:389)ls:从ubuntu / 127.0.1.1调用localhost:9000在连接异常时失败:java.net.ConnectException:Connection refused;有关详细信息,请参阅:http://wiki.apache.org/hadoop/ConnectionRefused

    这是一个不同的错误,与本机代码加载器警告无关。这表示客户端在命令执行期间无法连接到NameNode。这可能是由于缺少网络连接或仅仅NameNode守护程序未运行。错误消息中的链接wiki页面提供了有关对此进行故障排除的更多详细信息。

      

    错误:JAVA_HOME /opt/jdk1.8.0_91/不存在。

    我不确定此消息的确切位置,但它不言自明。检查您是否在该路径上部署了Java,或者将JAVA_HOME更改为正确的路径。