HBase pada Amazon S3 (mode penyimpanan Amazon S3) - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

HBase pada Amazon S3 (mode penyimpanan Amazon S3)

Ketika Anda menjalankan HBase di Amazon EMR versi 5.2.0 atau yang lebih baru, Anda dapat mengaktifkan HBase di Amazon S3 dengan keuntungan sebagai berikut:

  • Direktori root HBase disimpan di Amazon S3, termasuk file penyimpanan HBase dan metadata tabel. Data ini persisten di luar klaster, tersedia di seluruh Amazon EC2 Availability Zone, dan Anda tidak perlu memulihkan menggunakan snapshot atau metode lainnya.

  • Dengan file penyimpanan di Amazon S3, Anda dapat mengukur klaster Amazon EMR Anda untuk kebutuhan komputasi Anda alih-alih persyaratan data, dengan replikasi 3x di HDFS.

  • Menggunakan Amazon EMR versi 5.7.0 atau yang lebih baru, Anda dapat mengatur sebuah klaster replika baca, yang memungkinkan Anda untuk mempertahankan salinan data baca-saja di Amazon S3. Anda dapat mengakses data dari klaster replika baca untuk melakukan operasi baca secara bersamaan, dan dalam hal klaster utama menjadi tidak tersedia.

  • Dalam Amazon EMR versi 6.2.0 dan yang lebih baru, Pelacakan HFile persisten menggunakan tabel sistem HBase yang disebut hbase:storefile untuk langsung melacak jalur HFile yang digunakan untuk operasi membaca. Fitur ini diaktifkan secara default dan tidak memerlukan migrasi manual.

Ilustrasi berikut menunjukkan komponen HBase yang relevan dengan HBase di Amazon S3.


							HBase pada arsitektur Amazon S3.

Mengaktifkan HBase di Amazon S3

Anda dapat mengaktifkan HBase di Amazon S3 menggunakan konsol Amazon EMR, AWS CLI, atau API Amazon EMR. Konfigurasi adalah pilihan selama pembuatan klaster. Saat menggunakan konsol, Anda memilih pengaturan menggunakan Opsi lanjutan. Bila Anda menggunakan AWS CLI, gunakan pilihan --configurations untuk menyediakan objek konfigurasi JSON. Properti objek konfigurasi menentukan mode penyimpanan dan lokasi direktori root di Amazon S3. Lokasi Amazon S3 yang Anda tentukan harus berada di wilayah yang sama dengan klaster Amazon EMR. Hanya satu klaster aktif pada satu waktu dapat menggunakan direktori root HBase yang sama di Amazon S3. Untuk langkah-langkah konsol dan contoh buat-klaster rinci menggunakan AWS CLI, lihat Membuat klaster dengan HBase. Objek konfigurasi contoh ditunjukkan dalam potongan JSON berikut.

{ "Classification": "hbase-site", "Properties": { "hbase.rootdir": "s3://my-bucket/my-hbase-rootdir"} }, { "Classification": "hbase", "Properties": { "hbase.emr.storageMode":"s3" } }
catatan

Jika Anda menggunakan bucket Amazon S3 sebagai rootdir untuk HBase, Anda harus menambahkan garis miring pada akhir URl Amazon S3. Misalnya, Anda harus menggunakan "hbase.rootdir: s3://my-bucket/", alih-alih "hbase.rootdir: s3://my-bucket", untuk menghindari masalah.

Menggunakan klaster replika baca.

Setelah Anda mengatur klaster utama menggunakan HBase di Amazon S3, Anda dapat membuat dan mengonfigurasi klaster replika baca yang menyediakan akses baca-saja ke data yang sama sebagai klaster utama. Hal ini berguna ketika Anda membutuhkan akses simultan ke data kueri atau akses terganggu jika klaster utama tidak tersedia. Fitur replika baca tersedia dengan Amazon EMR versi 5.7.0 dan yang lebih baru.

Klaster utama dan klaster replika baca diatur dengan cara yang sama dengan satu perbedaan penting. Kedua titik memiliki lokasi hbase.rootdir yang sama. Namun, klasifikasi hbase untuk klaster replika baca mencakup "hbase.emr.readreplica.enabled":"true" properti.

Sebagai contoh, mengingat klasifikasi JSON untuk klaster utama seperti yang ditunjukkan sebelumnya dalam topik, konfigurasi untuk klaster replika baca adalah sebagai berikut:

{ "Classification": "hbase-site", "Properties": { "hbase.rootdir": "s3://my-bucket/my-hbase-rootdir"} }, { "Classification": "hbase", "Properties": { "hbase.emr.storageMode":"s3", "hbase.emr.readreplica.enabled":"true" } }

Menyinkronkan replika baca ketika Anda menambahkan data

Karena replika baca menggunakan HBase StoreFiles dan metadata yang ditulis oleh klaster utama ke Amazon S3, replika baca sama barunya dengan penyimpanan data Amazon S3. Panduan berikut dapat membantu meminimalkan jeda waktu antara klaster utama dan replika baca ketika Anda menulis data.

  • Muat data secara masal pada klaster utama bila memungkinkan. Untuk informasi lebih lanjut, lihat Muatan massal dalam dokumentasi Apache HBase.

  • Sebuah flush yang menulis file penyimpanan ke Amazon S3 harus terjadi sesegera mungkin setelah data ditambahkan. Flush manual atau yang disesuaikan dengan pengaturan untuk meminimalkan waktu jeda.

  • Jika pemadatan dapat berjalan secara otomatis, jalankan pemadatan manual untuk menghindari inkonsistensi ketika pemadatan dipicu.

  • Di cluster replika baca, ketika metadata telah berubah - misalnya, ketika terjadi pemisahan atau pemadatan wilayah HBase, atau ketika tabel ditambahkan atau dihapus - jalankan refresh_meta perintah.

  • Pada klaster replika baca, jalankan refresh_hfiles perintah ketika catatan ditambahkan ke atau diubah dalam tabel.


					Menyinkronkan data dengan replika baca HBase

Pelacakan HFile persisten

Elacakan HFile persisten menggunakan tabel sistem HBase yang disebut hbase:storefile untuk melacak jalur HFile secara langsung yang digunakan untuk operasi membaca. Jalur HFile baru ditambahkan ke tabel sebagai data yang ditambahkan ke HBase. Ini akan menghapus operasi penggantian nama sebagai mekanisme komit dalam operasi HBase jalur tulis kritis dan meningkatkan waktu pemulihan ketika membuka wilayah HBase dengan membaca dari hbase:storefile tabel sistem, alih-alih daftar direktori sistem berkas. Fitur ini diaktifkan secara default pada Amazon EMR versi 6.2.0 dan yang lebih baru, dan tidak memerlukan langkah-langkah migrasi manual.

catatan

Pelacakan HFile persisten menggunakan tabel sistem penyimpanan file HBase tidak mendukung fitur replikasi wilayah HBase. Untuk informasi selengkapnya tentang replikasi wilayah HBase, lihat Bacaan dengan ketersediaan tinggi yang konsisten dengan garis waktu.

Menonaktifkan pelacakan HFile secara persisten

Pelacakan HFile persisten diaktifkan secara default dimulai dengan EMR rilis 6.2.0. Untuk menonaktifkan pelacakan HFile persisten, tentukan penggantian konfigurasi berikut saat meluncurkan sebuah klaster:

{ "Classification": "hbase-site", "Properties": { "hbase.storefile.tracking.persist.enabled":"false", "hbase.hstore.engine.class":"org.apache.hadoop.hbase.regionserver.DefaultStoreEngine" } }
catatan

Ketika mengonfigurasi klaster Amazon EMR, semua grup instans harus diperbarui.

Menyelaraskan Tabel File Penyimpanan Secara Manual

Tabel file penyimpanan harus diperbarui saat HFiles baru dibuat. Namun, jika tabel file penyimpanan menjadi tidak sinkron dengan file data untuk alasan apapun, perintah berikut dapat digunakan untuk menyinkronkan data secara manual:

Sinkronkan tabel penyimpanan file di wilayah online:

hbase org.apache.hadoop.hbase.client.example.RefreshHFilesClient <table>

Sinkronkan tabel penyimpanan file di wilayah offline:

  • Hapus znode tabel penyimpanan file.

    echo "ls /hbase/storefile/loaded" | sudo -u hbase hbase zkcli [<tableName>, hbase:namespace] # The TableName exists in the list echo "delete /hbase/storefile/loaded/<tableName>" | sudo -u hbase hbase zkcli # Delete the Table ZNode echo "ls /hbase/storefile/loaded" | sudo -u hbase hbase zkcli [hbase:namespace]
  • Tetapkan wilayah (jalankan di 'Hbase shell').

    hbase cli> assign '<region name>'
  • Jika tugas gagal.

    hbase cli> disable '<table name>' hbase cli> enable '<table name>'

Menskalakan Tabel File Penyimpanan

Tabel penyimpanan file dibagi menjadi empat wilayah secara default. Jika tabel penyimpanan file masih di bawah beban menulis berat, tabel dapat dibagi secara manual.

Untuk membagi wilayah panas tertentu, gunakan perintah berikut (jalankan di 'Hbase shell').

hbase cli> split '<region name>'

Untuk membagi tabel, gunakan perintah berikut (jalankan di 'Hbase shell').

hbase cli> split 'hbase:storefile'

Pertimbangan operasional

HBase server wilayah digunakan BlockCache untuk menyimpan data baca di memori dan BucketCache menyimpan data baca pada disk lokal. Selain itu, server wilayah digunakan MemStore untuk menyimpan data tulis di memori, dan menggunakan log write-ahead untuk menyimpan data tulis dalam HDFS sebelum data ditulis ke HBase StoreFiles di Amazon S3. Performa baca klaster Anda berhubungan dengan seberapa sering catatan dapat diambil dari di-memori atau di-disk cache. Kehilangan cache mengakibatkan catatan yang sedang dibaca dari Amazon S3, yang memiliki latensi dan standar deviasi yang lebih tinggi daripada membaca dari HDFS. StoreFile Selain itu, tingkat permintaan maksimum untuk Amazon S3 lebih rendah dari yang dapat dicapai dari cache lokal, jadi data caching mungkin penting untuk beban kerja baca-berat. Untuk informasi lebih lanjut tentang Amazon S3, lihat Optimasi performa dalam Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

Untuk meningkatkan performa, kami sarankan Anda mencache sebanyak mungkin set data dalam penyimpanan instans EC2. Karena BucketCache menggunakan penyimpanan instans EC2 wilayah server, Anda dapat memilih tipe instans EC2 dengan penyimpanan instans yang cukup dan menambahkan penyimpanan Amazon EBS untuk mengakomodasi ukuran cache yang diperlukan. Anda juga dapat meningkatkanBucketCache ukuran pada penyimpanan instans terlampir dan volume EBS menggunakanhbase.bucketcache.size properti. Pengaturan default adalah 8.192 MB.

Untuk menulis, frekuensi MemStore flushes dan jumlah StoreFiles hadir selama pemadatan kecil dan besar dapat berkontribusi secara signifikan terhadap peningkatan waktu respon server wilayah. Untuk performa yang optimal, pertimbangkan meningkatkan ukuranMemStore flush dan hRegion blok multiplier, yang meningkatkan waktu berlalu antara pemadatan besar, tetapi juga meningkatkan lag dalam konsistensi jika Anda menggunakan replika baca. Dalam beberapa kasus, Anda mungkin mendapatkan performa yang lebih baik menggunakan ukuran blok file yang lebih besar (tetapi kurang dari 5 GB) untuk memicu fungsi unggahan multipart Amazon S3 di EMRFS. Ukuran blok Amazon EMR default 128 MB. Untuk informasi selengkapnya, lihat Konfigurasi HDFS. Kami jarang melihat pelanggan yang melebihi ukuran blok 1 GB saat membandingkan performa dengan flushes dan pemadatan. Selain itu, pemadatan HBase dan server wilayah bekerja secara optimal saat lebih sedikit yang StoreFiles perlu dipadatkan.

Tabel dapat memakan banyak waktu untuk diletakkan di Amazon S3 karena direktori besar perlu diganti namanya. Pertimbangkan menonaktifkan tabel, alih-alih menjatuhkannya.

Ada proses pembersih HBase yang membersihkan file WAL tua dan menyimpan file. Dengan rilis Amazon EMR versi 5.17.0 dan yang lebih baru, pembersih diaktifkan secara global, dan properti konfigurasi berikut dapat digunakan untuk mengontrol perilaku bersih.

Properti konfigurasi Nilai default Deskripsi

hbase.regionserver.hfilecleaner.large.thread.count

1

Jumlah benang dialokasikan untuk membersihkan HFiles besar yang telah kedaluwarsa.

hbase.regionserver.hfilecleaner.small.thread.count

1

Jumlah benang yang untuk membersihkan HFiles besar yang telah kedaluwarsa.

hbase.cleaner.scan.dir.concurrent.size

Atur ke seperempat dari semua core yang tersedia.

Jumlah benang untuk memindai direktori oldWALs.

hbase.oldwals.cleaner.thread.size

2

Jumlah benang untuk membersihkan WALs di bawah direktori oldWALs.

Dengan Amazon EMR 5.17.0 dan sebelumnya, operasi yang lebih bersih dapat mempengaruhi performa permintaan saat menjalankan beban kerja yang berat, jadi kami sarankan agar Anda mengaktifkan pembersih hanya selama waktu off-peak. Pembersih memiliki perintah HBase shell berikut:

  • cleaner_chore_enabled pertanyaan apakah pembersih diaktifkan.

  • cleaner_chore_run menjalankan pembersih secara manual untuk menghapus file.

  • cleaner_chore_switch mengaktifkan atau menonaktifkan pembersih dan mengembalikan keadaan pembersih sebelumnya. Misalnya, cleaner_chore_switch true mengaktifkan pembersih.

Properti untuk HBase di penyetelan performa Amazon S3

Parameter berikut dapat disesuaikan untuk menyetel performa beban kerja Anda ketika menggunakan HBase di Amazon S3.

Properti konfigurasi Nilai default Deskripsi

hbase.bucketcache.size

8,192

Jumlah ruang disk, dalam MB, disediakan pada server wilayah penyimpanan instans Amazon EC2 dan volume EBS untuk BucketCache penyimpanan. Pengaturan ini berlaku untuk semua instans server wilayah. BucketCache Ukuran yang lebih besar umumnya sesuai dengan peningkatan performa

hbase.hregion.memstore.flush.size

134217728

Batas data, dalam byte, di mana memstore flush ke Amazon S3 dipicu.

hbase.hregion.memstore.block.multiplier

4

Pengali yang menentukan batas MemStore atas di mana pembaruan diblokir. Jika MemStore melebihihbase.hregion.memstore.flush.size dikalikan dengan nilai ini, pembaruan diblokir. MemStore flushes dan pemadatan mungkin terjadi untuk membuka blokir pembaruan.

hbase.hstore.blockingStoreFiles

10

Jumlah maksimum StoreFiles yang dapat diizinkan di penyimpanan sebelum pembaruan diblokir.

hbase.hregion.max.filesize

10737418240

Ukuran maksimum wilayah sebelum dibagi.

Mematikan dan memulihkan klaster tanpa kehilangan data

Untuk menutup klaster Amazon EMR tanpa kehilangan data yang belum ditulis ke Amazon S3, Anda harus melakukan flush MemStore cache ke Amazon S3 untuk menulis file penyimpanan baru. Pertama, Anda harus menonaktifkan semua tabel. Konfigurasi langkah berikut dapat digunakan saat Anda menambahkan langkah ke klaster. Untuk informasi selengkapnya, lihat Bekerja dengan langkah-langkah menggunakanAWS CLI dan konsol di Panduan Manajemen Amazon EMR.

Name="Disable all tables",Jar="command-runner.jar",Args=["/bin/bash","/usr/lib/hbase/bin/disable_all_tables.sh"]

Atau, Anda dapat menjalankan perintah bash berikut secara langsung.

bash /usr/lib/hbase/bin/disable_all_tables.sh

Setelah menonaktifkan semua tabel, siramhbase:meta tabel menggunakan shell HBase dan perintah berikut.

flush 'hbase:meta'

Kemudian, Anda dapat menjalankan skrip shell yang disediakan di klaster Amazon EMR untuk menyiramMemStore cache. Anda dapat menambahkannya sebagai langkah atau menjalankannya secara langsung menggunakan klasterAWS CLI. Skrip menonaktifkan semua tabel HBase, yang menyebabkan server MemStore di setiap wilayah melakukan flush ke Amazon S3. Jika skrip sudah selesai, data akan tetap ada di Amazon S3 dan klaster dapat dihentikan.

Untuk memulai ulang klaster dengan data HBase yang sama, tentukan lokasi Amazon S3 yang sama dengan klaster sebelumnya baik di AWS Management Console atau menggunakan hbase.rootdir properti konfigurasi.