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}"
}
}
]