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 EMR Amazon, API EMR Amazon AWS CLI, atau 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 create-cluster mendetail menggunakan, lihat. AWS CLIMembuat 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 cluster utama ke Amazon S3, replika baca hanya sesaat 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 Persisten

Pelacakan HFile persisten diaktifkan secara default dimulai dengan rilis Amazon EMR 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.

Menyinkronkan Tabel Storefile 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 storefile di wilayah online:

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

Sinkronkan tabel storefile 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 Storefile

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

Server wilayah HBase digunakan BlockCache untuk menyimpan data yang dibaca dalam memori dan BucketCache untuk menyimpan data yang dibaca pada disk lokal. Selain itu, server wilayah digunakan MemStore untuk menyimpan data yang ditulis dalam memori, dan menggunakan log tulis di depan untuk menyimpan data yang ditulis dalam HDFS sebelum data ditulis ke HBase di StoreFiles Amazon S3. Performa baca klaster Anda berhubungan dengan seberapa sering catatan dapat diambil dari di-memori atau di-disk cache. Kehilangan cache menghasilkan catatan yang dibaca dari Amazon S3, yang StoreFile memiliki latensi yang jauh lebih tinggi dan standar deviasi yang lebih tinggi daripada membaca dari HDFS. 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 selengkapnya tentang performa Amazon S3, lihat Pengoptimalan kinerja di 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 server wilayah, Anda dapat memilih jenis instans EC2 dengan penyimpanan instans yang memadai dan menambahkan penyimpanan Amazon EBS untuk mengakomodasi ukuran cache yang diperlukan. Anda juga dapat meningkatkan BucketCache ukuran pada penyimpanan instans terlampir dan volume EBS menggunakan hbase.bucketcache.size properti. Pengaturan default adalah 8.192 MB.

Untuk penulisan, frekuensi MemStore flushes dan jumlah StoreFiles hadir selama pemadatan minor dan besar dapat berkontribusi secara signifikan terhadap peningkatan waktu respons server wilayah. Untuk kinerja optimal, pertimbangkan untuk meningkatkan ukuran pengganda blok MemStore flush dan HRegion, yang meningkatkan waktu berlalu antara pemadatan utama, tetapi juga meningkatkan kelambatan 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 ketika 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, yang dicadangkan di server wilayah penyimpanan instans Amazon EC2 dan volume EBS untuk penyimpanan. BucketCache Pengaturan ini berlaku untuk semua instans server wilayah. BucketCache Ukuran yang lebih besar umumnya sesuai dengan peningkatan kinerja

hbase.hregion.memstore.flush.size

134217728

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

hbase.hregion.memstore.block.multiplier

4

Pengganda yang menentukan batas MemStore atas di mana pembaruan diblokir. Jika MemStore melebihi hbase.hregion.memstore.flush.size dikalikan dengan nilai ini, pembaruan diblokir. MemStore pembilasan dan pemadatan dapat terjadi untuk membuka blokir pembaruan.

hbase.hstore.blockingStoreFiles

10

Jumlah maksimum StoreFiles yang dapat ada di toko sebelum pembaruan diblokir.

hbase.hregion.max.filesize

10737418240

Ukuran maksimum wilayah sebelum dibagi.

Mematikan dan memulihkan klaster tanpa kehilangan data

Untuk mematikan cluster EMR Amazon tanpa kehilangan data yang belum ditulis ke Amazon S3, Anda harus menyiram cache Anda MemStore ke Amazon S3 untuk menulis file toko 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 menggunakan AWS CLI dan konsol di Panduan Manajemen EMR Amazon.

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, siram hbase:meta tabel menggunakan shell HBase dan perintah berikut.

flush 'hbase:meta'

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

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