Saat berjalan di EC2, Anda sering kali tidak bisa menang dalam hal jenis instans. Salah satu tipe yang lebih hemat biaya yang tersedia adalah c1.xlarge. Ini memiliki CPU yang cukup untuk menangani pemadatan, jumlah disk yang layak, dan I/O jaringan yang tinggi. Namun, kami telah menemukan bahwa memori 7GB yang relatif rendah pada c1.xlarge sering menyebabkan masalah stabilitas dalam cluster HBase yang sangat bersamaan. Meskipun ada opsi lain yang lebih mahal, tutorial HBase ini akan membantu Anda memaksimalkan RegionServers c1.xlarge Anda.
1. Kurangi jumlah wilayah per RegionServer
Idealnya Anda harus memiliki kurang dari 100 wilayah per RegionServer . Memstore dibagi untuk digunakan oleh semua wilayah aktif, dan setiap wilayah menambahkan (secara default) 2 MB memori untuk MSLAB. Mengurangi jumlah ini akan membantu segala sesuatunya berjalan dengan lancar, dan tidak hanya dari sudut pandang memori.
2. Curi memori dari layanan lain
Anda seharusnya tidak menjalankan TaskTracker dengan RegionServer Anda pada jenis instans ini, tetapi kemungkinan besar Anda menjalankan DataNode lokal. Konfigurasi tipikal membutuhkan memori 1GB untuk DataNode, tetapi kami menemukan bahwa Anda tidak membutuhkan sebanyak itu dalam banyak kasus. Verifikasi metrik Anda sebelum meluncurkan ini, tetapi kami sangat aman memotong tumpukan DataNode hingga 400MB . Potongan 624MB yang bagus ini akan membantu HBase melangkah lebih jauh.
3. Setel atau nonaktifkan MSLAB
Jika setelah mencuri memori dan memotong kembali wilayah Anda masih mengalami masalah, Anda dapat melangkah lebih jauh. Seperti yang saya sebutkan, fitur MSLAB menambahkan 2MB overhead heap secara default untuk setiap wilayah. Anda dapat mengurangi buffer ini dengan hbase.hregion.memstore.mslab.chunksize
. Semakin rendah Anda, semakin kurang efektif, tetapi juga semakin sedikit overhead memori. Nonaktifkan semuanya dengan hbase.hregion.memstore.mslab.enabled
.
4. Bersikaplah agresif tentang caching dan batching
Caching (Scan#setCaching(int)
) dan pengelompokan (Scan#setBatch(int)
) sangat bagus untuk membatasi efek latensi jaringan pada pemindaian besar. Sayangnya mereka juga membutuhkan lebih banyak memori di sisi klien dan server. Ingatlah pertukaran kecepatan, tetapi nikmati sedikit stabilitas dengan menyetelnya ke bawah , sedekat mungkin dengan nilai 1 jika diperlukan.
RegionServer juga harus memiliki memori yang cukup untuk menangani semua penulisan bersamaan Anda. Jika Anda banyak menulis, atau mengirim beberapa nilai sel yang sangat besar, kemungkinan besar Anda akan mengalami OutOfMemoryExceptions. Turunkan pengelompokan Anda di sini juga, atau temukan cara untuk mengecilkan ukuran nilai sel Anda.
5. Kontrol beban dari Hadoop
Jika Anda menjalankan pekerjaan hadoop terhadap data HBase Anda, pada dasarnya Anda menjalankan banyak pemindaian besar. Dalam pekerjaan HBase MapReduce, setiap wilayah menjadi mapper. Jika Anda memiliki lebih dari 1 wilayah per RegionServer, kemungkinan besar Anda akan memiliki beberapa pembuat peta yang memindai RegionServer yang sama secara bersamaan di beberapa titik. Masing-masing pemindaian ini memakan sumber daya memori, disk, dan CPU, dan jika banyak yang menumpuk, hal itu dapat menyebabkan rasa sakit.
Menurunkan hbase.regionserver.handler.count
akan membantu membatasi jumlah koneksi aktif yang mengambil memori, tetapi Anda masih dapat mengalami masalah jika semua penangan menangani pemindaian seluruh wilayah yang besar. Dengan menggunakan ekstensi TableInputFormat kami, Anda dapat dengan mudah mengontrol berapa banyak pembuat peta serentak yang dijalankan pada satu RegionServer , memberikan penggunaan memori yang lebih dapat diprediksi.
Jika Anda menulis ke HBase dari peredam, Anda juga ingin mengontrol partisi di sana. Ini mudah diimplementasikan menggunakan Partitioner
Hadoop antarmuka, dengan HBaseAdmin
HBase antarmuka yang menyediakan wilayah untuk pemetaan RegionServer.
Menjalankan HBase pada memori rendah itu sulit, tetapi bukan tidak mungkin
Dengan kiat-kiat ini di tangan, Anda harus siap untuk bertahan dalam operasi di lingkungan memori rendah Anda. Ini bisa membuat frustasi untuk memperjuangkan setiap megabyte memori di zaman RAM yang sangat murah dan cepat. Namun ikuti tip berikut dan CFO Anda akan berterima kasih karena Anda telah memanfaatkan jenis instans hemat biaya ini sebaik-baiknya. Bagi mereka yang memiliki sedikit lebih banyak kebebasan finansial, kami akan mengeksplorasi dampak jenis instans I2 baru Amazon di postingan mendatang . Jadi pantau terus!
Artikel ini awalnya muncul di dev.hubspot.com