Phoenix で HBase 読み取りレプリカ Amazon EMR クラスターを実行しているときに発生する、「リージョン境界のキャッシュが古くなっています」というエラーを解決するにはどうすればよいですか?

最終更新日: 2020 年 4 月 13 日

Apache EMR リードレプリカクラスター上の Apache HBase に Apache Phoenix を使用して接続しようとすると、次のようなエラーメッセージが表示されます。

Error: ERROR 1108 (XCL08): Cache of region boundaries are out of date. (state=XCL08,code=1108) org.apache.phoenix.schema.StaleRegionBoundaryCacheException: ERROR 1108
 (XCL08): Cache of region boundaries are out of date.
      at org.apache.phoenix.exception.SQLExceptionCode$14.newException(SQLExceptionCode.java:365)
      at org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:150)
      at org.apache.phoenix.util.ServerUtil.parseRemoteException(ServerUtil.java:189)
      at org.apache.phoenix.util.ServerUtil.parseServerExceptionOrNull(ServerUtil.java:169)
      at org.apache.phoenix.util.ServerUtil.parseServerException(ServerUtil.java:140)

説明

Phoenix はデフォルトで hbase:meta テーブルに接続しようとします。ただし、hbase:meta テーブルはプライマリクラスターに属しているため、Phoenix はリードレプリカクラスターに接続できません。この問題を解決するには、hbase-site.xml を変更して、HBase リードレプリカクラスターに属する hbase:meta_cluster-id テーブルを指すようにします。

解決方法

始める前に、Phoenix がプライマリクラスターとリードレプリカクラスターにインストールされていることを確認してください。Phoenix がプライマリクラスターにインストールされていない場合、Phoenix はリードレプリカクラスターから HBase に接続できません。

実行中のクラスターの場合

1.    マスターノードの HBase 設定ファイル (/etc/phoenix/conf/hbase-site.xml) に次の設定を追加します。cluster-id を、リードレプリカクラスターの ID に置き換えます。

<property>
   <name>hbase.balancer.tablesOnMaster</name>
   <value>hbase:meta</value>
</property>
<property>
   <name>hbase.meta.table.suffix</name>
   <value>cluster-id</value>
</property>

2.    Phoenix サービスを再起動します。

sudo stop phoenix-queryserver
sudo start phoenix-queryserver

Amazon EMR リリースバージョン 5.21.0 以降では、マスターインスタンスグループのクラスター構成を上書きすることで、これらの構成変更を行うこともできます。

1.    Amazon EMR コンソールを開きます。

2.    クラスターリストで、再構成するアクティブなリードレプリカクラスターを選択します。

3.    クラスターのクラスター詳細ページを開き、[構成] タブに移動します。

4.    [フィルター] ドロップダウンリストで、マスターインスタンスグループを選択します。

5.    [再構成] ドロップダウンメニューで、[テーブルで編集] を選択します。

6.    [構成の追加] を選択し次の 2 つの構成を追加します。

分類: phoenix-hbase-site
プロパティ: hbase.balancer.tablesOnMaster
: hbase:meta

分類: phoenix-hbase-site
プロパティ: hbase.meta.table.suffix
: ${emr.clusterId}

7.    [変更の保存] をクリックします。

このプロセスの詳細については、コンソールでのインスタンスグループ設定の提供をご覧ください。

新しいクラスターの場合

Amazon EMR リリースバージョン 4.6.0 以降を使用してクラスターを起動するときに、次のような設定オブジェクトを追加します。

[
  {
    "Classification": "phoenix-hbase-site", 
    "Configurations": [
      ], 
    "Properties": {
      "hbase.balancer.tablesOnMaster" : "hbase:meta",
      "hbase.meta.table.suffix" : "${emr.clusterId}"
      }
  },
  {
    "Classification": "hbase-site", 
    "Configurations": [
      ], 
    "Properties": {
      "hbase.meta.table.suffix" : "${emr.clusterId}"
      }
  }
]

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合