HBase 0.92 предупреждения о привязках SLF4J - PullRequest
7 голосов
/ 22 февраля 2012

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

Ответы [ 2 ]

12 голосов
/ 03 июня 2012

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

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

0 голосов
/ 01 июля 2016

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

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

...