无法加载类org.slf4j.impl.StaticLoggerBinder并且无法加载native-hadoop库

yas*_*ash 4 java hadoop

我是Hadoop的新手,在一次MapReduce任务中我遇到以下错误:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
15/09/18 07:31:10 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

谢谢!

Jim*_*ard 7

这是你的错误意味着什么:

用于SLF4J:

SLF4J: **Failed to load class** "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Run Code Online (Sandbox Code Playgroud)

正如您所知,您没有适当的类(*无法加载类*),SLF4J因此它默认为无日志记录((NOP)记录器实现).按照建议的链接,您可以看到解决方案是:

将一个(并且只有一个)slf4j-nop.jar,slf4j-simple.jar,slf4j-log4j12.jar,slf4j-jdk14.jarlogback-classic.jar类路径上应该解决的问题

对于Hadoop:

15/09/18 07:31:10 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Run Code Online (Sandbox Code Playgroud)

这只是意味着无法找到本机库,它通常不会影响Hadoop的运行方式.至于本机库:

由于性能原因和Java实现的不可用性,本机库只包含某些组件的实现.这些组件在单个动态链接的本机库中可用,称为本机hadoop库.在*nix平台上,该库名为libhadoop.so.

无论如何,如果你真的想要摆脱警告,你可以按照这里提供的众多解决方案之一.