Comment éliminer l'erreur « Cache of region boundaries are out of date » (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 : 23/06/2022

Lorsque j'essaie de me connecter à Apache HBase sur un cluster de réplica en lecture Amazon EMR avec Apache Phoenix, je reçois le message d'erreur suivant similaire à ce qui suit :

Erreur : 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 peut pas se connecter au cluster de réplica en lecture. Pour 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.

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 principal. Remplacez cluster-id par l'ID du 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 :

Pour les versions 5.29 et antérieures d'Amazon EMR :

sudo stop phoenix-queryserver
sudo start phoenix-queryserver

Pour les versions 5.30 et postérieures d'Amazon EMR :

sudo systemctl stop phoenix-queryserver.service
sudo systemctl start phoenix-queryserver.service

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

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 Filter (Filtrer), choisissez le groupe d'instances principal.

5.    Dans la liste déroulante Reconfigure (Reconfigurer), choisissez Edit in table (Modifier dans la table).

6.    Choisissez Add configuration (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.    Choisissez Save changes (Enregistrer les modifications).

Pour plus d'informations sur ce processus, consultez Reconfiguration d'un groupe d'instances dans la console.

Sur un nouveau cluster

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

[
  {
    "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 ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?