2016-10-07 8 views
0

У меня есть распределенный кластер hadoop с hbase, работающим на его hdf. Для того, чтобы построить карту/уменьшить работу с помощью HBase я включаю эти зависимости:Hbase mappers/уменьшить требования к библиотеке на узлах кластера

<dependencies> 
     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-core</artifactId> 
      <version>1.2.1</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.hbase</groupId> 
      <artifactId>hbase-client</artifactId> 
      <version>1.2.3</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.hbase</groupId> 
      <artifactId>hbase-server</artifactId> 
      <version>1.2.3</version> 
      <scope>provided</scope> 
     </dependency> 
    </dependencies> 

Я пытаюсь выяснить, как именно развернуть все эти библиотеки. Должен ли hadoop просто включать $ HBASE_HOME/lib/* в свой путь к классам? Существует много конфликтов перекрытий и версий. Похоже, мне нужно только некоторое подмножество, но документация по hbase дает лишь небольшую помощь:

Замените Hadoop, входящий в комплект HBase! Поскольку HBase зависит от Hadoop, он связывает экземпляр флага Hadoop под его каталогом lib . Комбинированная банда ТОЛЬКО для использования в автономном режиме. В распределенном режиме крайне важно, чтобы версия Hadoop, имеющая , в вашем кластере соответствовала тому, что находится под HBase. Замените банку hadoop , найденную в каталоге HBase lib с банком hadoop, вы используете на своем кластере, чтобы избежать проблем с несоответствием версий. Удостоверьтесь, что вы замените банку в HBase повсюду на вашем кластере. Версия Hadoop Проблемы с рассогласованием имеют различные проявления, но часто все выглядит как его повесили.

Я не могу найти, где он говорит вам, какие библиотеки hbase вам нужно добавить в вычислительные узлы hadoop.

ответ

0

Я попытался ответить на этот вопрос экспериментально. Минимальный набор элементов я, кажется, нужно сделать его работа это:

hbase-client-1.2.3.jar -> ../../../../hbase/lib/hbase-client-1.2.3.jar 
hbase-common-1.2.3.jar -> ../../../../hbase/lib/hbase-common-1.2.3.jar 
hbase-hadoop2-compat-1.2.3.jar -> ../../../../hbase/lib/hbase-hadoop2-compat-1.2.3.jar 
hbase-hadoop-compat-1.2.3.jar -> ../../../../hbase/lib/hbase-hadoop-compat-1.2.3.jar 
hbase-prefix-tree-1.2.3.jar -> ../../../../hbase/lib/hbase-prefix-tree-1.2.3.jar 
base-protocol-1.2.3.jar -> ../../../../hbase/lib/hbase-protocol-1.2.3.jar 
hbase-server-1.2.3.jar -> ../../../../hbase/lib/hbase-server-1.2.3.jar 
metrics-core-2.2.0.jar -> ../../../../hbase/lib/metrics-core-2.2.0.jar 

Чтобы немного объяснить, моя установка Hadoop в/главная/Hadoop и моя установка HBase в/главная/HBase. Они оба были «установлены», просто распакуя файлы apache и hbase tarball в домашние каталоги пользователей «hadoop» и «hbase» соответственно. Редуктор - пустой TableReducer.

Кажется, что работает - или, по крайней мере, у него нет исключений ClassNotFound, относящихся к hbase.

Я не уверен, что это настоящий набор ... Я могу только сказать, что мой пустой TableReducer нуждается именно в этих вещах.

+0

То, что я сделал, это разместить их в/home/hadoop/share/hadoop/hbase/в качестве символических ссылок, а затем добавить весь каталог в путь класса hadoop в hasoop-env.sh – wz2b