Tutorial - Gunakan Apache HBase di Microsoft Azure HDInsight

Tutorial ini menunjukkan cara membuat kluster Apache HBase di Microsoft Azure HDInsight, membuat tabel HBase, dan mengkueri tabel dengan menggunakan Apache Hive. Untuk informasi HBase umum, lihat Ikhtisar Microsoft Azure HDInsight.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Membuat kluster HBase Apache
  • Membuat tabel HBase dan menyisipkan data
  • Menggnakan Apache Hive untuk mengkueri Apache Hbase
  • Menggunakan API HBase REST menggunakan Curl
  • Periksa status kluster

Prasyarat

Membuat kluster HBase Apache

Prosedur berikut ini menggunakan templat Azure Resource Manager untuk membuat kluster HBase. Templat ini juga membuat akun Microsoft Azure Storage default dependen. Untuk memahami parameter yang digunakan dalam prosedur dan metode pembuatan kluster lainnya, lihat Membuat kluster Hadoop berbasis Linux di Microsoft Azure HDInsight.

  1. Pilih gambar berikut untuk membuka templat di portal Microsoft Azure. Templat terletak di templat quickstart Azure.

    Deploy to Azure button for new cluster

  2. Dari dialog Penyebaran kustom, masukkan nilai berikut ini:

    Properti Deskripsi
    Langganan Pilih langganan Azure Anda yang digunakan untuk membuat kluster.
    Grup sumber daya Buat grup manajemen Sumber Daya Azure atau gunakan grup yang sudah ada.
    Lokasi Tentukan lokasi grup sumber daya.
    ClusterName Masukkan nama untuk kluster HBase.
    Nama untuk masuk dan kata sandi kluster Nama login default adalah admin.
    nama pengguna dan kata sandi SSH Nama pengguna default adalah sshuser.

    Parameter lainnya bersifat opsional.

    Setiap kluster memiliki dependensi akun Microsoft Azure Storage. Setelah Anda menghapus kluster, data tetap berada di akun penyimpanan. Nama akun penyimpanan default kluster adalah nama kluster dengan "penyimpanan" ditambahkan. Ini hardcoded di bagian variabel templat.

  3. Lalu, pilih Saya menyetujui syarat dan ketentuan yang dinyatakan di atas, lalu pilih Pembelian. Dibutuhkan sekitar 20 menit untuk membuat kluster.

Setelah kluster HBase dihapus, Anda dapat membuat kluster HBase lain dengan menggunakan kontainer blob default yang sama. Kluster baru mengambil tabel HBase yang Anda buat di kluster asli. Untuk menghindari inkonsistensi, kami sarankan Anda menonaktifkan tabel HBase sebelum Anda menghapus kluster.

Membuat tabel dan menyisipkan data

Anda dapat menggunakan SSH untuk menyambungkan ke kluster HBase lalu menggunakan Apache HBase Shell untuk membuat tabel HBase, menyisipkan data, dan mengkueri data.

Untuk kebanyakan orang, data muncul dalam format tabular:

HDInsight Apache HBase tabular data.

Di HBase (implementasi Cloud BigTable), data yang sama terlihat seperti:

HDInsight Apache HBase BigTable data.

Untuk menggunakan shell HBase

  1. Gunakan perintah ssh untuk menyambungkan ke kluster HBase Anda. Edit perintah di bawah ini dengan mengganti CLUSTERNAME dengan nama kluster Anda, lalu masukkan perintah:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Gunakan hbase shellperintah untuk memulai shell interaktif HBase. Masukkan perintah berikut di koneksi SSH Anda:

    hbase shell
    
  3. Gunakan create perintah untuk membuat tabel HBase dengan keluarga dua kolom. Nama tabel dan kolom peka huruf besar/kecil. Masukkan perintah berikut:

    create 'Contacts', 'Personal', 'Office'
    
  4. Gunakan listperintah untuk mencantumkan semua tabel di HBase. Masukkan perintah berikut:

    list
    
  5. Gunakan putperintah untuk menyisipkan nilai pada kolom tertentu dalam baris tertentu dalam tabel tertentu. Masukkan perintah berikut:

    put 'Contacts', '1000', 'Personal:Name', 'John Dole'
    put 'Contacts', '1000', 'Personal:Phone', '1-425-000-0001'
    put 'Contacts', '1000', 'Office:Phone', '1-425-000-0002'
    put 'Contacts', '1000', 'Office:Address', '1111 San Gabriel Dr.'
    
  6. Gunakan scanperintah untuk memindai dan mengembalikan Contactsdata tabel. Masukkan perintah berikut:

    scan 'Contacts'
    

    HDInsight Apache Hadoop HBase shell.

  7. Gunakan getperintah untuk mengambil konten baris. Masukkan perintah berikut:

    get 'Contacts', '1000'
    

    Anda melihat hasil yang sama seperti menggunakan scanperintah karena hanya ada satu baris.

    Untuk informasi selengkapnya tentang skema tabel HBase, lihat Pengantar Desain Skema Apache HBase. Untuk perintah HBase lainnya, lihat panduan referensi Apache HBase.

  8. Gunakan exit perintah untuk menghentikan shell interaktif HBase. Masukkan perintah berikut:

    exit
    

Untuk memuat data secara massal ke dalam tabel HBase kontak

HBase menyertakan beberapa metode memuat data ke dalam tabel. Untuk informasi selengkapnya, lihat Memuat secara massal.

Contoh file data dapat ditemukan dalam kontainer blob publik, wasb://hbasecontacts@hditutorialdata.blob.core.windows.net/contacts.txt. Konten file data adalah:

8396 Calvin Raji 230-555-0191 230-555-0191 5415 San Gabriel Dr.

16600 Karen Wu 646-555-0113 230-555-0192 9265 La Paz

4324 Karl Xie 508-555-0163 230-555-0193 4912 La Vuelta

16891 Jonn Jackson 674-555-0110 230-555-0194 40 Ellis St.

3273 Miguel Miller 397-555-0155 230-555-0195 6696 Anchor Drive

3588 Osa Agbonile 592-555-0152 230-555-0196 1873 Lion Circle

10272 Julia Lee 870-555-0110 230-555-0197 3148 Rose Street

4868 Jose Hayes 599-555-0171 230-555-0198 793 Crawford Street

4761 Caleb Alexander 670-555-0141 230-555-0199 4775 Kentucky Dr.

16443 Terry Chander 998-555-0171 230-555-0200 771 Northridge Drive

Anda dapat secara opsional membuat file teks dan mengunggah file ke akun penyimpanan Anda sendiri. Untuk mengetahui petunjuknya, lihat Mengunggah data untuk pekerjaan Apache Hadoop di Microsoft Azure HDInsight.

Prosedur ini menggunakan Contactstabel HBase yang Anda buat dalam prosedur terakhir.

  1. Dari koneksi ssh terbuka Anda, jalankan perintah berikut untuk mengubah file data ke StoreFiles dan simpan di jalur relatif yang ditentukan oleh Dimporttsv.bulk.output.

    hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns="HBASE_ROW_KEY,Personal:Name,Personal:Phone,Office:Phone,Office:Address" -Dimporttsv.bulk.output="/example/data/storeDataFileOutput" Contacts wasb://hbasecontacts@hditutorialdata.blob.core.windows.net/contacts.txt
    
  2. Jalankan perintah berikut untuk mengunggah data dari /example/data/storeDataFileOutput ke tabel HBase:

    hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /example/data/storeDataFileOutput Contacts
    
  3. Anda dapat membuka shell HBase, dan menggunakan scanperintah untuk mencantumkan konten tabel.

Menggnakan Apache Hive untuk mengkueri Apache Hbase

Anda dapat mengkueri data dalam tabel HBase dengan menggunakan Apache Hive. Di bagian ini, Anda membuat tabel Apache Hive yang memetakan ke tabel HBase dan menggunakannya untuk mengkueri data dalam tabel HBase Anda.

  1. Dari koneksi ssh terbuka Anda, gunakan perintah berikut untuk memulai Beeline:

    beeline -u 'jdbc:hive2://localhost:10001/;transportMode=http' -n admin
    

    Untuk informasi selengkapnya tentang Beeline, lihat Gunakan Apache Hive dengan Hadoop di Microsoft Azure HDInsight dengan Beeline.

  2. Jalankan skrip HiveQL berikut untuk membuat tabel Hive yang memetakan ke tabel HBase. Pastikan Anda telah membuat tabel sampel yang direferensikan sebelumnya di artikel ini dengan menggunakan shell HBase sebelum Anda menjalankan pernyataan ini.

    CREATE EXTERNAL TABLE hbasecontacts(rowkey STRING, name STRING, homephone STRING, officephone STRING, officeaddress STRING)
    STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    WITH SERDEPROPERTIES ('hbase.columns.mapping' = ':key,Personal:Name,Personal:Phone,Office:Phone,Office:Address')
    TBLPROPERTIES ('hbase.table.name' = 'Contacts');
    
  3. Jalankan skrip HiveQL berikut ini untuk mengkueri data dalam tabel HBase:

    SELECT count(rowkey) AS rk_count FROM hbasecontacts;
    
  4. Untuk keluar dari Beeline, gunakan !exit.

  5. Untuk keluar dari koneksi ssh Anda, gunakan exit.

Pisahkan Kluster Apache Hive dan Hbase

Kueri Apache Hive untuk mengakses data HBase tidak perlu dijalankan dari kluster HBase. Kluster apa pun yang dilengkapi dengan Apache Hive (termasuk Spark, Hadoop, HBase, atau Interactive Query) dapat digunakan untuk mengkueri data HBase, asalkan langkah-langkah berikut selesai:

  1. Kedua kluster harus dilampirkan ke Microsoft Azure Virtual Network dan Subnet yang sama
  2. Salin /usr/hdp/$(hdp-select --version)/hbase/conf/hbase-site.xml dari headnode kluster HBase ke headnode kluster Apache Hive dan workernode.

Kluster Aman

Data HBase juga dapat dikueri dari Apache Hive menggunakan HBase yang mendukung ESP:

  1. Saat mengikuti pola multi-kluster, kedua kluster harus diaktifkan ESP.
  2. Untuk mengizinkan Apache Hive mengkueri data HBase, pastikan bahwa hive pengguna diberi izin untuk mengakses data HBase melalui plugin Hbase Apache Ranger
  3. Saat menggunakan kluster terpisah yang mendukung ESP, isi /etc/hosts dari headnodes kluster HBase harus ditambahkan ke /etc/hosts headnodes kluster Apache Hive.

Catatan

Setelah penskalaan salah satu kluster, /etc/hosts harus ditambahkan lagi

Menggunakan REST API HBase melalui Curl

REST API HBase diamankan melalui autentikasi dasar. Anda harus selalu membuat permintaan dengan menggunakan HTTP Aman (HTTPS) untuk membantu memastikan bahwa informasi masuk Anda dikirim dengan aman ke server.

  1. Untuk mengaktifkan REST API HBase di kluster HDInsight, tambahkan skrip mulai khusus berikut ke bagian Tindakan Skrip. Anda dapat menambahkan skrip startup saat membuat kluster atau setelah kluster dibuat. Untuk Jenis Node, pilih Server Wilayah untuk memastikan bahwa skrip hanya dijalankan di Server Wilayah HBase.

    #! /bin/bash
    
    THIS_MACHINE=`hostname`
    
    if [[ $THIS_MACHINE != wn* ]]
    then
        printf 'Script to be executed only on worker nodes'
        exit 0
    fi
    
    RESULT=`pgrep -f RESTServer`
    if [[ -z $RESULT ]]
    then
        echo "Applying mitigation; starting REST Server"
        sudo python /usr/lib/python2.7/dist-packages/hdinsight_hbrest/HbaseRestAgent.py
    else
        echo "REST server already running"
        exit 0
    fi
    
  2. Atur variabel lingkungan untuk kemudahan penggunaan. Edit perintah di bawah ini dengan mengganti MYPASSWORD dengan kata sandi masuk kluster. Ganti MYCLUSTERNAME dengan nama kluster HBase Anda. Kemudian masukkan perintah.

    export PASSWORD='MYPASSWORD'
    export CLUSTER_NAME=MYCLUSTERNAME
    
  3. Gunakan perintah berikut ini untuk mencantumkan tabel HBase yang sudah ada:

    curl -u admin:$PASSWORD \
    -G https://$CLUSTER_NAME.azurehdinsight.net/hbaserest/
    
  4. Gunakan perintah berikut ini untuk membuat tabel HBase baru dengan keluarga dua kolom:

    curl -u admin:$PASSWORD \
    -X PUT "https://$CLUSTER_NAME.azurehdinsight.net/hbaserest/Contacts1/schema" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d "{\"@name\":\"Contact1\",\"ColumnSchema\":[{\"name\":\"Personal\"},{\"name\":\"Office\"}]}" \
    -v
    

    Skema ini disediakan dalam format JSon.

  5. Gunakan perintah berikut untuk menyisipkan beberapa data:

    curl -u admin:$PASSWORD \
    -X PUT "https://$CLUSTER_NAME.azurehdinsight.net/hbaserest/Contacts1/false-row-key" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d "{\"Row\":[{\"key\":\"MTAwMA==\",\"Cell\": [{\"column\":\"UGVyc29uYWw6TmFtZQ==\", \"$\":\"Sm9obiBEb2xl\"}]}]}" \
    -v
    

    Base64 mengkodekan nilai yang ditentukan dalam -d switch. Dalam contoh:

    • MTAwMA==: 1000

    • UGVyc29uYWw6TmFtZQ==: Pribadi: Nama

    • Sm9obiBEb2xl: John Dole

      false-row-key memungkinkan Anda menyisipkan beberapa nilai (kumpulan).

  6. Gunakan perintah berikut untuk mendapatkan baris:

    curl -u admin:$PASSWORD \
    GET "https://$CLUSTER_NAME.azurehdinsight.net/hbaserest/Contacts1/1000" \
    -H "Accept: application/json" \
    -v
    

Untuk informasi selengkapnya tentang HBase Rest, lihat Panduan Referensi Apache HBase.

Catatan

Thrift tidak didukung oleh HBase di HDInsight.

Saat menggunakan Curl atau komunikasi REST lainnya dengan WebHCat, Anda harus mengautentikasi permintaan dengan memberikan nama pengguna dan kata sandi untuk administrator kluster Microsoft Azure HDInsight. Anda juga harus menggunakan nama kluster sebagai bagian dari Uniform Resource Identifier (URI) yang digunakan untuk mengirim permintaan ke server:

curl -u <UserName>:<Password> \

-G https://<ClusterName>.azurehdinsight.net/templeton/v1/status

Anda harus menerima respons yang mirip dengan respons berikut:

{"status":"ok","version":"v1"}

Periksa status kluster

HBase dalam Microsoft Azure HDInsight dikirim dengan UI Web untuk memantau kluster. Menggunakan UI Web, Anda dapat meminta statistik atau informasi tentang wilayah.

Untuk mengakses HBase Master UI

  1. Masuk ke Ambari Web UI di https://CLUSTERNAME.azurehdinsight.net tempat CLUSTERNAME nama klaster HBase Anda.

  2. Pilih HBase dari menu kiri.

  3. Pilih Tautan cepat di bagian atas halaman, arahkan ke link node Zookeeper aktif, lalu pilih HBase Master UI. UI dibuka di tab browser lain:

    HDInsight Apache HBase HMaster UI.

    HBase Master UI berisi bagian-bagian berikut:

    • server wilayah
    • master cadangan
    • tabel
    • tugas
    • atribut perangkat lunak

Rekreasi kluster

Setelah kluster HBase dihapus, Anda dapat membuat kluster HBase lain dengan menggunakan kontainer blob default yang sama. Kluster baru mengambil tabel HBase yang Anda buat di kluster asli. Untuk menghindari inkonsistensi, kami sarankan Anda menonaktifkan tabel HBase sebelum Anda menghapus kluster.

Anda dapat menggunakan perintah HBasedisable 'Contacts'.

Membersihkan sumber daya

Jika Anda tidak akan terus menggunakan aplikasi ini, hapus kluster yang Anda buat dengan langkah-langkah berikut:

  1. Masuk ke portal Azure.
  2. Dalam kotak Pencarian di bagian atas, ketik Microsoft Azure HDInsight.
  3. Pilih kluster Microsoft Azure HDInsight di Layanan.
  4. Dalam daftar kluster Microsoft Azure HDInsight yang muncul, klik ... di samping kluster yang Anda buat untuk tutorial ini.
  5. Klik Hapus. Klik Ya.

Langkah berikutnya

Dalam tutorial ini, Anda belajar cara membuat kluster Apache HBase. Dan cara membuat tabel dan menampilkan data dalam tabel tersebut dari shell HBase. Anda juga mempelajari cara menggunakan kueri Apache Hive pada data dalam tabel HBase. Selain itu, pelajari cara menggunakan C# REST API HBase untuk membuat tabel HBase dan mengambil data dari tabel tersebut. Untuk mempelajari selengkapnya, lihat: