2012-02-22 2 views
4

Я установил HBase 0.92 на Hadoop 1.0.0, и он отлично работает в полноразмерном режиме, но появляется раздражающее предупреждение. Как я могу избавиться от него?Предупреждения HBase 0.92 о привязках SLF4J

....... 
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. Я запускаю Hadoop с start-all.sh, затем запускаю HBase с start-hbase.sh.

ответ

12

Я удалил slf4j-log4j12-1.5.8.jar в ${hase}/lib/, затем предупреждение больше не показывалось. Это должно быть из-за дублированного класса, загруженного, и hadoop, и hbase используют то же самое jar в том же jvm.

Вы можете попробовать.

+1

Да, это сработало, спасибо – Eric

+0

Это сработало и для меня, спасибо. – Burhan

0

Предупреждение, излучаемое SLF4J, является тем самым предупреждением. Даже если присутствуют множественные привязки, SLF4J выбирает одну структуру/реализацию журнала и связывается с ней. Способ SLF4J выбирает привязку, определяемую JVM, и для всех практических целей следует считать случайным. Начиная с версии 1.6.6, SLF4J назовет класс структуры/реализации, на который он фактически связан.

Встраиваемые компоненты, такие как библиотеки или фреймворки, не должны заявлять зависимость от любых привязок SLF4J, но зависят только от slf4j-api. Когда библиотека объявляет зависимость времени компиляции от привязки SLF4J, она налагает эту привязку на конечного пользователя, тем самым отрицая цель SLF4J. Когда вы сталкиваетесь с внедренным компонентом, объявляющим зависимость времени компиляции от любой привязки SLF4J, пожалуйста, найдите время, чтобы связаться с авторами указанного компонента/библиотеки и попросить их исправить их пути.

+1

Это не ответ на вопрос. OP хотел знать, как избавиться от предупреждения – lokusking

+0

удалите одну из банок slf4j из указанных путей, тогда вы не получите предупреждение – siva

Смежные вопросы