Connectez-vous aux clusters ApsaraDB for HBase Performance-enhanced Edition via Thrift depuis Python, Go, C++, Node.js ou PHP.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
L'endpoint de votre cluster. Pour l'obtenir, consultez la rubrique Apply for a public endpoint
Fonctionnement
ApsaraDB for HBase Performance-enhanced Edition utilise HTTP comme couche de transport Thrift. Tous les clients doivent utiliser THttpClient (et non le transport par socket standard) pour se connecter. Avec Thrift 2, spécifiez le nom d'utilisateur et le mot de passe sous forme d'en-têtes HTTP personnalisés dans l'instance THttpClient.
Différences entre Thrift 1 et Thrift 2
| Fonctionnalité | Thrift 1 | Thrift 2 |
|---|---|---|
| Authentification | Non prise en charge | Obligatoire (nom d'utilisateur + mot de passe) |
| Nombre maximal de connexions par nœud principal | 1 000 | — |
| Transport | THttpClient | THttpClient (HTTP uniquement) |
Privilégiez Thrift 2 pour les nouvelles intégrations. Thrift 1 ne prend pas en charge l'authentification et ne convient pas aux clusters dont la liste de contrôle d'accès (ACL) est activée.
Configuration de Thrift
Installation du compilateur Thrift
La plupart des langages permettent d'installer directement la bibliothèque Thrift via leur gestionnaire de packages. Téléchargez le compilateur uniquement si vous devez régénérer les fichiers de définition d'interface à partir de Hbase.thrift.
Gestionnaire de packages (recommandé) :
| Langage | Commande |
|---|---|
| Python | pip install thrift |
| Go | import "github.com/apache/thrift/lib/go/thrift" dans votre module Go |
Installation manuelle du compilateur : Téléchargez le fichier thrift-0.12.0.tar.gz et suivez le guide d'installation de Thrift.
Génération du fichier de définition d'interface
Téléchargez le fichier de définition Thrift 2 pour ApsaraDB for HBase.
-
Extrayez le package du compilateur Thrift et exécutez la commande suivante depuis le répertoire extrait pour générer les liaisons spécifiques au langage :
thrift --gen <language> Hbase.thriftExemples :
thrift --gen py Hbase.thrift thrift --gen cpp Hbase.thrift thrift --gen php Hbase.thrift
Initialisation d'un client
L'exemple suivant utilise Python. Appliquez la même logique aux autres langages : créez un objet THttpClient, ajoutez les en-têtes d'authentification, encapsulez-le dans un protocole TBinaryProtocol et transmettez ce protocole au client THBaseService.Client.
# -*- coding: utf-8 -*-
# Install the Thrift library: pip install thrift
from thrift.protocol import TBinaryProtocol
from thrift.transport import THttpClient
# Generated by: thrift --gen py Hbase.thrift
from hbase import THBaseService
from hbase.ttypes import (
TColumnValue, TColumn, TTableName, TTableDescriptor,
TColumnFamilyDescriptor, TNamespaceDescriptor,
TGet, TPut, TScan
)
# Replace <host> with your cluster endpoint.
url = "http://<host>:9190"
# THttpClient is required — the HBase Thrift server uses HTTP transport,
# not the standard socket transport.
transport = THttpClient.THttpClient(url)
# Pass credentials as custom HTTP headers. Thrift 2 requires the username and password.
headers = {
"ACCESSKEYID": "<your-username>", # Cluster username
"ACCESSSIGNATURE": "<your-password>", # Cluster password
}
transport.setCustomHeaders(headers)
# TBinaryProtocolAccelerated uses a C extension for faster serialization
# when available, and falls back to the pure-Python implementation.
protocol = TBinaryProtocol.TBinaryProtocolAccelerated(transport)
# Create the HBase client using the configured protocol.
client = THBaseService.Client(protocol)
# Open the connection before making any calls.
transport.open()
# Your HBase operations go here.
# Close the transport when done to release the connection.
transport.close()
Espaces réservés :
| Espace réservé | Description |
|---|---|
<host> |
Endpoint de votre cluster (sans le préfixe http://) |
<your-username> |
Nom d'utilisateur du cluster |
<your-password> |
Mot de passe du cluster |
Thrift 1 ne prend pas en charge l'authentification. Utilisez Thrift 2 (comme illustré ci-dessus) lorsque votre cluster requiert des identifiants.
Exemples de code
Des exemples de clients complets et exécutables sont disponibles sur GitHub pour chaque langage. Chaque référentiel inclut les fichiers de définition Thrift ainsi que les dépendances spécifiques au langage.
| Langage | Lien |
|---|---|
| Python | Télécharger l'exemple de code |
| Go | Télécharger l'exemple de code |
| C++ | Télécharger l'exemple de code |
| Node.js | Télécharger l'exemple de code |
| PHP | Télécharger l'exemple de code |
Étapes suivantes
Consultez le tutoriel Apache Thrift pour en savoir plus sur les opérations Thrift dans tous les langages pris en charge.