Реплика EMR HBase Read, поддерживаемая S3, не может подключиться через Java API - PullRequest
1 голос
/ 27 марта 2020

Проблема Введение

Я использую AWS Версия EMR 5.29, которая использует версию HBase 1.4.10. Я пытаюсь соединить Geomesa с кластером HBase только для чтения. При подключении к кластеру EMR через AWS службу ECS (используя HBase Java код клиента) , я получаю сообщение об ошибке ниже:

`Причина: org. apache. has oop .hbase.NotServingRegionException: org. apache .had oop .hbase.NotServingRegionException: Region hbase: meta ,, 1 не подключен к ip-10-0-xx-xxx.ec2.internal, 16020 , 1585249817xxx

Вышеуказанное исключение выдается из здесь . Понятно, что я могу подключиться к zookeeper, но он не работает из-за мета таблицы hbase :. `

Примечание

Я могу успешно подключить кластер Чтение-Запись . Проблема только с Только для чтения Cluster.Hbase и оболочка Geomesa работают нормально. Я могу получить данные через оболочку. Проблема только с клиентом HBase или Geomesa Java.

Потенциальная проблема

HBase на EMR (при поддержке S3) , использует имя таблицы метаданных в качестве 'hbase: meta_', например, hbase: meta_j-1ExxxHC16Oxxx для только для чтения кластер. Код над здесь использует hbase: meta как константу. Я думаю, что здесь требуется изменение, чтобы прочитать его из конфигурации.

Запрос

Кто-нибудь сталкивался с этой проблемой? Есть ли способ преодолеть эту проблему? Есть ли какая-либо конфигурация, которая может помочь с этим?

Я уже пытался настроить hbase.meta.table.suffix как clusterId, но он не работал.

1 Ответ

0 голосов
/ 27 марта 2020

Кластеры только для чтения являются функцией AWS Speci c. Для добавления этой функциональности у Amazon есть собственный код в банках HBase. Hbase-server-1.4.10.jar, установленный в вашем кластере EMR, отличается от hbase-server-1.4.10.jar, который вы получите из Apache. Это означает, что для того, чтобы получить код на стороне клиента для поддержки этой функции, вам нужно везде использовать jar-файлы AWS. Вы можете загрузить файлы jar непосредственно с работающего кластера EMR HBase или использовать репозитории Amazon maven, указав это сначала в разделе <repositories>:

<repository>
    <id>emr-${aws-emr.version}-artifacts</id>
    <name>EMR ${aws-emr.version} Releases Repository</name>
    <releases>
        <enabled>true</enabled>
    </releases>
    <snapshots>
        <enabled>false</enabled>
    </snapshots>
    <url>https://s3.us-west-1.amazonaws.com/us-west-1-emr-artifacts/emr-${aws-emr.version}/repos/maven/</url>
</repository>
...