Gunakan Thrift untuk menghubungkan kluster ApsaraDB for HBase Performance-enhanced Edition dari Python, Go, C++, Node.js, atau PHP.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Titik akhir kluster Anda. Untuk mendapatkan titik akhir tersebut, lihat Ajukan titik akhir publik.
Cara kerja
ApsaraDB for HBase Performance-enhanced Edition menggunakan HTTP pada lapisan transport Thrift. Semua klien harus menggunakan THttpClient—bukan transport socket standar—untuk terhubung. Untuk Thrift 2, Anda harus menentukan nama pengguna dan kata sandi sebagai header HTTP kustom dalam instans THttpClient.
Thrift 1 vs. Thrift 2
| Fitur | Thrift 1 | Thrift 2 |
|---|---|---|
| Autentikasi | Tidak didukung | Wajib (username + password) |
| Koneksi maksimum per node inti | 1.000 | — |
| Transport | THttpClient | THttpClient (HTTP saja) |
Gunakan Thrift 2 untuk integrasi baru. Thrift 1 tidak mendukung autentikasi dan tidak cocok untuk kluster yang mengaktifkan ACL.
Siapkan Thrift
Instal kompilator Thrift
Sebagian besar bahasa dapat menginstal library Thrift langsung melalui manajer paketnya. Unduh kompilator hanya jika Anda perlu membuat ulang file definisi antarmuka dari Hbase.thrift.
Manajer paket (disarankan):
| Bahasa | Perintah |
|---|---|
| Python | pip install thrift |
| Go | import "github.com/apache/thrift/lib/go/thrift" dalam modul Go Anda |
Instalasi kompilator manual: Unduh thrift-0.12.0.tar.gz dan ikuti panduan instalasi Thrift.
Buat file definisi antarmuka
Ekstrak paket kompilator Thrift dan jalankan perintah berikut dari direktori hasil ekstraksi untuk menghasilkan binding spesifik bahasa:
thrift --gen <language> Hbase.thriftContoh:
thrift --gen py Hbase.thrift thrift --gen cpp Hbase.thrift thrift --gen php Hbase.thrift
Inisialisasi client
Contoh berikut menggunakan Python. Terapkan pola yang sama untuk bahasa lain: buat THttpClient, tambahkan header autentikasi, bungkus dengan TBinaryProtocol, lalu berikan protokol tersebut ke THBaseService.Client.
# -*- coding: utf-8 -*-
# Instal library Thrift: pip install thrift
from thrift.protocol import TBinaryProtocol
from thrift.transport import THttpClient
# Dihasilkan oleh: thrift --gen py Hbase.thrift
from hbase import THBaseService
from hbase.ttypes import (
TColumnValue, TColumn, TTableName, TTableDescriptor,
TColumnFamilyDescriptor, TNamespaceDescriptor,
TGet, TPut, TScan
)
# Ganti <host> dengan titik akhir kluster Anda.
url = "http://<host>:9190"
# THttpClient wajib digunakan — server Thrift HBase menggunakan transport HTTP,
# bukan transport socket standar.
transport = THttpClient.THttpClient(url)
# Berikan kredensial sebagai header HTTP kustom. Thrift 2 memerlukan username dan password.
headers = {
"ACCESSKEYID": "<your-username>", # Username kluster
"ACCESSSIGNATURE": "<your-password>", # Password kluster
}
transport.setCustomHeaders(headers)
# TBinaryProtocolAccelerated menggunakan ekstensi C untuk serialisasi lebih cepat
# jika tersedia, dan mundur ke implementasi murni Python jika tidak.
protocol = TBinaryProtocol.TBinaryProtocolAccelerated(transport)
# Buat client HBase menggunakan protokol yang telah dikonfigurasi.
client = THBaseService.Client(protocol)
# Buka koneksi sebelum melakukan panggilan apa pun.
transport.open()
# Operasi HBase Anda ditempatkan di sini.
# Tutup transport saat selesai untuk melepaskan koneksi.
transport.close()Placeholders:
| Placeholder | Deskripsi |
|---|---|
<host> | Titik akhir kluster Anda (tanpa awalan http://) |
<your-username> | Username kluster |
<your-password> | Password kluster |
Thrift 1 tidak mendukung autentikasi. Gunakan Thrift 2 (seperti pada contoh di atas) ketika kluster Anda memerlukan kredensial.
Kode contoh
Contoh klien lengkap yang dapat dijalankan untuk setiap bahasa tersedia di GitHub. Setiap repositori mencakup file definisi Thrift dan semua dependensi khusus bahasa.
| Bahasa | Tautan |
|---|---|
| Python | Unduh kode contoh |
| Go | Unduh kode contoh |
| C++ | Unduh kode contoh |
| Node.js | Unduh kode contoh |
| PHP | Unduh kode contoh |
Langkah selanjutnya
Tutorial Apache Thrift — pelajari lebih lanjut tentang operasi Thrift di semua bahasa yang didukung.