Реплика чтения EMR HBase, поддерживаемая S3, не может подключиться через Java API

Введение проблемы

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

`Вызвано: org.apache.hadoop.hbase.NotServingRegionException: org.apache.hadoop.hbase.NotServingRegionException: регион hbase:meta,,1 не в сети на ip-10-0-xx-xxx.ec2.internal,16020 ,1585249817xxx

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

Примечание

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

Возможная проблема

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

Запрос

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

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


person Amit    schedule 27.03.2020    source источник


Ответы (1)


Кластеры только для чтения — это особенность AWS. Чтобы добавить эту функциональность, 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>
person Austin Heyne    schedule 27.03.2020