关于SLF4J绑定的HBase 0.92警告

时间:2012-02-22 10:59:22

标签: hadoop hbase slf4j

我在HBase 0.92上安装了Hadoop 1.0.0,并且在完全分发模式下工作正常,但仍会出现恼人的警告。我怎么能摆脱它?

 .......
 hbase(main):001:0> status
 SLF4J: Class path contains multiple SLF4J bindings.

 SLF4J: Found binding in
 [jar:file:/opt/hbase-0.92.0/lib/slf4j-log4j12-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.class]

 SLF4J: Found binding in
 [jar:file:/opt/hadoop-1.0.0/lib/slf4j-log4j12-1.4.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
: See http://www.slf4j.org/codes.html#multiple_bindings for an
 explanation.

 3 servers, 0 dead, 0.6667 average load

 .......

P.S。我没有在$CLASSPATH中设置hbase-env.sh变量。我使用start-all.sh运行Hadoop,然后使用start-hbase.sh启动HBase。

2 个答案:

答案 0 :(得分:12)

我删除了slf4j-log4j12-1.5.8.jar中的${hase}/lib/,然后再次显示警告。这应该是由于加载了重复的类,hadoophbase在同一jar中使用相同的jvm

你可以尝试一下。

答案 1 :(得分:0)

SLF4J发出的警告只是一个警告。即使存在多个绑定,SLF4J也会选择一个日志框架/实现并与之绑定。 SLF4J选择绑定的方式由JVM确定,并且出于所有实际目的应该被认为是随机的。从版本1.6.6开始,SLF4J将命名它实际绑定的框架/实现类。

诸如库或框架之类的嵌入式组件不应声明对任何SLF4J绑定的依赖性,而只依赖于slf4j-api。当库声明对SLF4J绑定的编译时依赖性时,它会对最终用户强制绑定,从而否定SLF4J的目的。当您遇到一个嵌入式组件声明对任何SLF4J绑定的编译时依赖关系时,请花时间联系所述组件/库的作者,并请他们修改他们的方法。