Talend tHBASEConnection и tHBaseInput для MapR

У меня есть доступ к граничному узлу кластера MapR Hadoop. У меня есть таблица HBase с именем /app/SubscriptionBillingPlatform/Matthew с некоторыми поддельными данными. Сканирование его в оболочке hbase приводит к следующему:

введите здесь описание изображения

У меня есть очень простое задание Talend, которое должно сканировать таблицу и регистрировать каждую строку:

введите здесь описание изображения

Вот конфигурация для tHBaseConnection. Я получил кворум zookeeper и клиентский порт из файла /opt/mapr/hbase/hbase-0.94.13/conf/hbase-site.xml:

введите здесь описание изображения

А вот конфигурация для tHBaseInput:

введите здесь описание изображения

Однако, когда я запускаю JAR-файл после сборки/экспорта задания и запускаю его на граничном узле, я получаю следующую ошибку:

14/08/06 15:51:26 INFO mapr.TableMappingRulesFactory: Could not find MapRTableMappingRules class, assuming HBase only cluster.
14/08/06 15:51:26 INFO mapr.TableMappingRulesFactory: If you are trying to access M7 tables, add mapr-hbase jar to your classpath.
14/08/06 15:51:26 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
14/08/06 15:51:26 INFO security.JniBasedUnixGroupsMappingWithFallback: Falling back to shell based
...
Exception in component tHBaseInput_1
org.apache.hadoop.hbase.client.NoServerForRegionException: Unable to find region for /app/SubscriptionBillingPlatform/Matthew,,99999999999999 after 10 tries.
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:991)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:896)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:998)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:900)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:857)
        at org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:257)
        at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:187)
        at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:142)
        at poc2.testhbaseoperations_0_1.TestHBaseOperations.tHBaseInput_1Process(TestHBaseOperations.java:752)
        at poc2.testhbaseoperations_0_1.TestHBaseOperations.tHBaseConnection_1Process(TestHBaseOperations.java:375)
        at poc2.testhbaseoperations_0_1.TestHBaseOperations.runJobInTOS(TestHBaseOperations.java:1104)
        at poc2.testhbaseoperations_0_1.TestHBaseOperations.main(TestHBaseOperations.java:993)

Когда я рассказал об этом системным администраторам, которые не знают, что такое Talend, они сказали мне, что MapR не использует HRegionServers, как Cloudera, и решили, что мои настройки Talend неверны.

Есть идеи?


person Matthew Moisen    schedule 06.08.2014    source источник
comment
Я вообще не знаю HBase, но эти первые две строки журнала ошибок кажутся мне важными. Попробуйте загрузить банку mapr-hbase с помощью компонента tLibraryLoad в начале работы.   -  person ydaetskcoR    schedule 07.08.2014
comment
@ydaetskcoR Я загрузил его с помощью tLibraryLoad, но все же получил первые два сообщения. Спасибо, однако, так как я думаю, что это необходимый шаг, но есть и другие шаги.   -  person Matthew Moisen    schedule 20.08.2014


Ответы (2)


Кикером были эти две строчки:

INFO mapr.TableMappingRulesFactory: Could not find MapRTableMappingRules class, assuming HBase only cluster.
mapr.TableMappingRulesFactory: If you are trying to access M7 tables, add mapr-hbase jar to your classpath.

Если у задания нет файла jar mapr-hbase в пути к классам, оно попытается отправить задание на обычную HBase, а не на MapR-DB. Вот почему он висит навсегда.

Вы можете либо добавить файл jar mapr-hbase из /opt/mapr/lib в путь к классам в сценарии оболочки, либо просто добавить все файлы jar из этого каталога в путь к классам.

#!/bin/sh
cd `dirname $0`
 ROOT_PATH=`pwd`
java -Xms256M -Xmx1024M -cp /opt/mapr/lib/*:$ROOT_PATH/.. 
person Matthew Moisen    schedule 29.02.2016

Я быстро попытался воспроизвести это в Talend Big Data Sandbox, но Боюсь, я не мог понять вашу ошибку.

Добавление сообщения об ошибке в Google (с некоторыми вариациями) выглядит так, как будто это полураспространенная ошибка за пределами Talend, поэтому я предполагаю, что до тех пор, пока вы правильно загружаете необходимую библиотеку и драйверы, и они включаются в ваше экспортированное задание, тогда это проблема конфигурации где-то в вашем кластере Hadoop. Похоже, это также происходит и в дистрибутивах, отличных от MapR.

Эта проблема на форумах сообщества Cloudera, по-видимому, имеет удовлетворительное решение, поскольку Oozie был неправильно настроен и возвращал ту же ошибку, что и вы. Возможно, стоит попробовать добавить:

<property>
<name>oozie.credentials.credentialclasses</name>
<value>hcat=org.apache.oozie.action.hadoop.HCatCredentials</value>
</property>

Для Oozie service->Configuration->Oozie Server(default)->Advanced-> Oozie Server Configuration Safety Valve for oozie-site.xml и перезапуска сервисов Hive и Oozie.

Конечно, это может быть сложно из-за того, как администрируется ваш кластер Hadoop, и если у вас есть кластер разработки/локальный экземпляр для запуска, который также страдает от той же проблемы.

Я настоятельно рекомендую установить вышеупомянутую песочницу больших данных Talend или хотя бы песочницу MapR если у вас есть только производство или производство, такое как кластер Hadoop, для развертывания.

person ydaetskcoR    schedule 26.08.2014