ApsaraDB for HBase sangat fleksibel dan dapat beradaptasi dengan berbagai skenario. Bagian berikut menjelaskan optimasi untuk operasi baca. Selama produksi, Anda mungkin mengalami masalah seperti Full GC, Out of Memory (OOM), Region in Transition (RIT), dan latensi baca yang tinggi. Meskipun meningkatkan perangkat keras dapat menyelesaikan beberapa masalah ini, pendekatan yang lebih efektif adalah mengoptimalkan HBase sesuai kebutuhan Anda.
Optimasi dibagi menjadi:
Optimasi klien, optimasi server, dan optimasi platform (diimplementasikan di ApsaraDB for HBase).
Pendekatan ini secara signifikan mengurangi jumlah panggilan RPC antara klien dan server, serta meningkatkan throughput.
Result[] re= table.get(List<Get> gets) Periksa apakah ukuran cache yang sesuai telah diatur untuk operasi SCAN
Operasi SCAN memerlukan server untuk mengembalikan sejumlah besar data per permintaan. Saat klien memanggil operasi SCAN, server mengembalikan data dalam batch kepada klien. Hal ini dirancang untuk mengurangi beban kerja pada server dan klien ketika sejumlah besar data ditransmisikan sekaligus. Data tersebut disimpan dalam cache secara lokal. Jumlah maksimum default dari catatan yang di-cache adalah 100. Beberapa operasi SCAN mungkin mengembalikan sejumlah besar data (ratusan atau puluhan ribu) melalui permintaan RPC. Kami menyarankan Anda menyesuaikan ukuran cache sesuai kebutuhan.
scan.setCaching(int caching) // Atur parameter ini ke 1000 jika operasi SCAN mungkin mengembalikan sejumlah besar data. Minta keluarga kolom tertentu atau nama kolom
ApsaraDB for HBase adalah database berorientasi kolom. Data disimpan berdasarkan keluarga kolom, di mana setiap keluarga kolom merupakan database terpisah. Kami menyarankan Anda menentukan keluarga kolom atau nama kolom saat melakukan kueri untuk mengurangi Input/Output (I/O).
Nonaktifkan caching saat Anda mengakses ApsaraDB for HBase secara offline
Saat mengakses ApsaraDB for HBase secara offline, seluruh data dibaca sekaligus. Dalam hal ini, caching tidak diperlukan. Kami menyarankan Anda menonaktifkan BlockCache untuk pembacaan offline.
scan.setBlockCache(false)
Optimasi Server
Permintaan penyeimbangan
Periksa status beban baca selama jam sibuk. Anda dapat melihat statusnya di konsol ApsaraDB for HBase. Jika terjadi hotspotting yang jelas, solusi akhirnya adalah mendesain ulang rowkey untuk menyeimbangkan beban kerja. Solusi perantara adalah membagi wilayah yang mengalami hotspotting.
Apakah BlockCache diatur dengan benar
BlockCache penting untuk performa baca sebagai cache baca. Jika banyak data diminta, kami menyarankan Anda menggunakan server dengan rasio inti-memori 1:4. Misalnya, mesin dengan 8 core dan 32 GB memori atau mesin dengan 16 core dan 64 GB memori. Anda dapat meningkatkan nilai BlockCache dan menurunkan nilai Memstore.
Anda dapat mengatur hfile.block.cache.size menjadi 0,5 dan mengatur hbase.regionserver.global.memstore.size menjadi 0,3 di konsol ApsaraDB for HBase, lalu klik Restart.
Jumlah HFiles
Selama operasi baca, HFiles perlu dibuka secara sering. Jumlah operasi I/O meningkat sebanding dengan jumlah HFiles, sehingga meningkatkan latensi baca. Untuk mengurangi efek ini, kami menyarankan Anda melakukan kompaksi utama selama jam non-puncak.
Apakah kompaksi mengonsumsi sejumlah besar sumber daya sistem
Kompaksi digunakan untuk menggabungkan beberapa HFiles yang lebih kecil menjadi satu HFile yang lebih besar. Operasi ini meningkatkan performa baca operasi baca selanjutnya, tetapi juga mengonsumsi sejumlah besar sumber daya. Biasanya, kompaksi minor tidak mengonsumsi banyak sumber daya sistem kecuali konfigurasinya tidak tepat. Hindari melakukan kompaksi utama selama jam puncak. Kami menyarankan Anda melakukan kompaksi utama selama jam non-puncak.
Apakah Bloomfilter diatur dengan benar
Bloomfilter digunakan untuk menyaring HFiles selama kueri guna menghindari operasi I/O yang tidak perlu. Bloomfilter dapat meningkatkan performa baca. Secara umum, saat membuat tabel, nilai default BLOOMFILTER diatur ke ROW.
Optimasi Platform
Apakah laju lokalisasi data terlalu rendah (Platform telah dioptimalkan oleh Alibaba Cloud.)
Jika Anda memiliki HFiles lokal, kami menyarankan Anda menggunakan Short-Circuit Local Read. Selama operasi restart atau ekspansi, ApsaraDB for HBase secara otomatis menggabungkan wilayah yang telah dipindahkan. Ini memastikan bahwa laju lokalisasi tidak terpengaruh secara negatif. Selain itu, melakukan kompaksi utama secara berkala membantu meningkatkan laju lokalisasi.
Short-Circuit Local Read (diaktifkan secara default)
Secara normal, Hadoop Distributed File System (HDFS) melakukan operasi baca melalui DataNode. Short-Circuit Local Read dapat diaktifkan untuk melewati DataNode dan memungkinkan klien membaca data lokal secara langsung.
Hedged Read (diaktifkan secara default)
Sistem memprioritaskan Short-Circuit Local Read untuk membaca data lokal. Namun, dalam beberapa kasus khusus, operasi baca lokal mungkin gagal sementara karena masalah disk atau jaringan. Operasi Hedged Read dikembangkan untuk menyelesaikan masalah ini. Prinsip dasar Hedged Read adalah sebagai berikut: ketika klien memulai permintaan baca lokal dan tidak ada hasil yang dikembalikan setelah periode waktu tertentu, klien akan mengirimkan permintaan yang sama ke DataNodes. Jika hasil dikembalikan, semua hasil berikutnya akan dibuang.
Nonaktifkan swap (dinonaktifkan secara default)
Saat memori fisik tidak mencukupi, sebagian ruang hard disk digunakan sebagai swap. Operasi ini dapat menyebabkan latensi tinggi. Swap dinonaktifkan secara default untuk ApsaraDB for HBase. Namun, menonaktifkan swap dapat menyebabkan anon-rss tinggi, dan operasi pengambilan halaman tidak dapat mengambil cukup halaman. Hal ini dapat menyebabkan kernel menjadi tidak responsif. Untuk mengatasi efek ini, ApsaraDB for HBase telah mengambil langkah-langkah isolasi yang relevan untuk menghindari situasi ini.