Comment éliminer l'erreur « Les caches des limites de région ne sont plus à jour » qui se produit lorsqu'un cluster HBase de réplica en lecture Amazon EMR est exécuté avec Phoenix ?

Dernière mise à jour : 13/04/2020

Lorsque j'essaye de me connecter à Apache HBase sur un cluster de réplica en lecture Amazon EMR par le biais d'Apache Phoenix, je reçois le message d'erreur suivant :

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)

Brève description

Phoenix tente de se connecter à la table hbase:meta par défaut. Toutefois, étant donné que la table hbase:meta appartient au cluster principal, Phoenix ne parvient pas à se connecter au cluster de réplica en lecture. Afin de résoudre ce problème, modifiez hbase-site.xml afin de pointer vers la table hbase:meta_cluster-id qui appartient au cluster de réplica en lecture HBase.

Résolution

Avant de commencer, confirmez que Phoenix est installé sur le cluster principal ainsi que sur le cluster de réplica en lecture. Phoenix ne peut pas se connecter à HBase à partir d'un cluster de réplica en lecture s'il n'est pas installé sur le cluster principal.

Sur un cluster en cours d'exécution

1.    Ajoutez les configurations suivantes au fichier de configuration HBase (/etc/phoenix/conf/hbase-site.xml), sur le nœud maître. Remplacez cluster-id par l'ID de votre cluster de réplica en lecture.

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

2.    Redémarrez le service Phoenix :

sudo stop phoenix-queryserver
sudo start phoenix-queryserver

Dans les versions 5.21.0 et ultérieures d'Amazon EMR, vous pouvez également effectuer ces changements de configuration en remplaçant la configuration du cluster du groupe d'instances maître :

1.    Ouvrez la console Amazon EMR.

2.    Dans la liste de clusters, sélectionnez le cluster de réplica en lecture que vous souhaitez reconfigurer.

3.    Ouvrez la page détaillée de ce cluster et accédez à l'onglet Configurations.

4.    Dans la liste déroulante Filtrer, sélectionnez le groupe d'instances maître.

5.    Dans le menu déroulant Reconfigurer, sélectionnez Modifier dans la table.

6.    Sélectionnez Ajouter une configuration, puis ajoutez les deux configurations suivantes :

Classification : phoenix-hbase-site
Propriété : hbase.balancer.tablesOnMaster
Valeur : hbase:meta

Classification : phoenix-hbase-site
Propriété : hbase.meta.table.suffix
Valeur : ${emr.clusterId}

7.    Sélectionnez Enregistrer les modifications.

Pour plus d'informations sur ce processus, consultez Apporter une configuration à un groupe d'instances dans la console.

Sur un nouveau cluster

Ajoutez un objet de configuration semblable à l'objet suivant lorsque vous lancez un cluster sur une version d'Amazon EMR 4.6.0 ou ultérieure :

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

Cet article vous a-t-il été utile ?

Que pouvons-nous améliorer ?


Besoin de plus d'aide ?