Use o Thrift para se conectar a clusters do ApsaraDB for HBase Performance-enhanced Edition com Python, Go, C++, Node.js ou PHP.
Pré-requisitos
Antes de começar, verifique se você tem:
O endpoint do seu cluster. Para obter o endpoint, consulte Solicitar um endpoint público.
Como funciona
O ApsaraDB for HBase Performance-enhanced Edition usa HTTP na camada de transporte do Thrift. Todos os clientes devem usar THttpClient (não o transporte padrão via socket) para se conectar. No Thrift 2, especifique o nome de usuário e a senha como cabeçalhos HTTP personalizados na instância THttpClient.
Thrift 1 vs. Thrift 2
|
Recurso |
Thrift 1 |
Thrift 2 |
|
Autenticação |
Não suportada |
Obrigatória (nome de usuário + senha) |
|
Máximo de conexões por nó principal |
1.000 |
— |
|
Transporte |
THttpClient |
THttpClient (apenas HTTP) |
Use o Thrift 2 para novas integrações. O Thrift 1 não oferece suporte a autenticação e é inadequado para clusters com ACL ativado.
Configurar o Thrift
Instale o compilador Thrift
A maioria das linguagens permite instalar a biblioteca Thrift diretamente pelo gerenciador de pacotes. Baixe o compilador apenas se precisar regenerar os arquivos de definição de interface a partir do Hbase.thrift.
Gerenciador de pacotes (recomendado):
|
Linguagem |
Comando |
|
Python |
|
|
Go |
|
Instalação manual do compilador: Baixe o arquivo thrift-0.12.0.tar.gz e siga o guia de instalação do Thrift.
Gerar o arquivo de definição de interface
Baixe o arquivo de definição Thrift 2 para ApsaraDB for HBase.
-
Extraia o pacote do compilador Thrift e execute o comando abaixo no diretório extraído para gerar as bindings específicas da linguagem:
thrift --gen <language> Hbase.thriftExemplos:
thrift --gen py Hbase.thrift thrift --gen cpp Hbase.thrift thrift --gen php Hbase.thrift
Inicializar um cliente
O exemplo a seguir usa Python. Aplique o mesmo padrão para outras linguagens: crie uma instância de THttpClient, adicione os cabeçalhos de autenticação, envolva-a em TBinaryProtocol e passe o protocolo para o 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()
Marcadores de posição:
|
Marcador |
Descrição |
|
|
Endpoint do seu cluster (sem o prefixo |
|
|
Nome de usuário do cluster |
|
|
Senha do cluster |
O Thrift 1 não suporta autenticação. Use o Thrift 2 (conforme demonstrado acima) quando seu cluster exigir credenciais.
Código de exemplo
Exemplos completos e executáveis de clientes para cada linguagem estão disponíveis no GitHub. Cada repositório inclui os arquivos de definição do Thrift e todas as dependências específicas da linguagem.
|
Linguagem |
Link |
|
Python |
|
|
Go |
|
|
C++ |
|
|
Node.js |
|
|
PHP |
Próximos passos
Tutorial do Apache Thrift — saiba mais sobre as operações do Thrift em todas as linguagens suportadas.