【问题标题】:EMR HBase Read Replica backed by S3 is not able to connect via Java APIS3 支持的 EMR HBase 只读副本无法通过 Java API 连接
【发布时间】:2020-07-07 20:42:20
【问题描述】:

问题介绍

我使用的是使用 HBase 1.4.10 版本的 AWS EMR 5.29 版本。我正在尝试将 Geomesa 与 HBase 只读集群连接起来。通过 AWS ECS 服务 (使用 HBase Java 客户端代码) 连接到 EMR 集群时,出现以下错误:

`引起:org.apache.hadoop.hbase.NotServingRegionException: org.apache.hadoop.hbase.NotServingRegionException: Region hbase:meta,,1 在 ip-10-0-xx-xxx.ec2 上不在线。内部,16020,1585249817xxx

上面的异常是从here 抛出的。很明显,我能够连接到 zookeeper,但由于 hbase:meta 表而失败。 `

注意

我能够成功连接 Read-Write 集群。问题仅在于 只读 Cluster.Hbase 和 Geomesa shell 工作正常。我能够通过外壳获取数据。该问题仅与 HBase 或 Geomesa Java 客户端有关。

潜在问题

EMR 上的 HBase (由 S3 支持),使用元数据表名称作为 'hbase:meta_' 例如只读集群的 hbase:meta_j-1ExxxHC16Oxxx。 here 上的代码使用 hbase:meta 作为常量。我认为这里需要更改才能从配置中读取它。

请求

有人遇到过这个问题吗?有没有办法克服这个问题?有什么配置可以帮助解决这个问题吗?

我已经尝试将 hbase.meta.table.suffix 设置为 clusterId,但没有成功。

【问题讨论】:

    标签: amazon-web-services amazon-s3 hbase amazon-emr geomesa


    【解决方案1】:

    只读集群是 AWS 特有的功能。为了添加这个功能,亚马逊在他们的 HBase jars 中有自定义代码。您在 EMR 集群上的 hbase-server-1.4.10.jar 与您从 Apache 获得的 hbase-server-1.4.10.jar 不同。这意味着为了让客户端代码支持此功能,您需要在任何地方使用 AWS jar。您可以直接从正在运行的 EMR HBase 集群下载 jar,或者您可以通过在 <repositories> 部分中首先指定它来使用 Amazon maven 存储库:

    <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>
    

    【讨论】:

      猜你喜欢
      • 2020-04-21
      • 1970-01-01
      • 2017-08-13
      • 2022-06-12
      • 2013-08-23
      • 2016-12-10
      • 1970-01-01
      • 2022-10-24
      • 2019-07-22
      相关资源
      最近更新 更多