Optimalkan Apache HBase dengan Apache Ambari di Microsoft Azure HDInsight
Apache Ambari adalah antarmuka web untuk mengelola dan memantau kluster Microsoft Azure HDInsight. Untuk pengenalan ke Ambari Web UI, lihat Kelola kluster Microsoft Azure HDInsight dengan menggunakan Apache Ambari Web UI.
Bagian berikut menjelaskan opsi konfigurasi untuk mengoptimalkan kinerja Apache Hive secara keseluruhan.
- Untuk memodifikasi parameter konfigurasi Apache Hive, pilih Apache Hive dari bar samping Layanan.
- Menuju ke tab Konfigurasi.
Atur mesin eksekusi Apache Hive
Apache Hive menyediakan dua mesin eksekusi: Apache Hadoop MapReduce dan Apache TEZ. Tez lebih cepat dari MapReduce. Kluster Linux HDInsight memiliki Tez sebagai mesin eksekusi default. Untuk mengubah mesin eksekusi:
Di tab Apache Hive Configs, ketik mesin eksekusi di kotak filter.
Nilai default properti Pengoptimalan adalah Tez.
Setel pemeta
Hadoop mencoba memisahkan(peta)satu file menjadi beberapa file dan memproses file yang dihasilkan secara paralel. Jumlah pemecar tergantung pada jumlah pemisahan. Dua parameter konfigurasi berikut mendorong jumlah pemisahan untuk mesin eksekusi Tez:
tez.grouping.min-size
: Batas bawah pada ukuran pemisahan yang dikelompokkan, dengan nilai default 16 MB (16.777.216 byte).tez.grouping.max-size
: Batas atas ukuran pemisahan yang dikelompokkan, dengan nilai default 1 GB (1.073.741.824 byte).
Sebagai pedoman kinerja, turunkan kedua parameter ini untuk meningkatkan latensi, tingkatkan lebih banyak throughput.
Misalnya, untuk mengatur empat tugas pemetaan untuk ukuran data 128 MB, Anda akan mengatur kedua parameter ke masing-masing 32 MB (33.554.432 byte).
Untuk mengubah parameter batas, navigasikan ke tab Konfigurasi pada layanan Tez. Perluas panel Umum, serta tempatkan parameter
tez.grouping.max-size
dantez.grouping.min-size
.Atur kedua parameter ke 33.554.432 bytes (32 MB).
Perubahan ini memengaruhi semua pekerjaan Tez di seluruh server. Untuk mendapatkan hasil yang optimal, pilih nilai parameter yang sesuai.
Setel peredam
Apache ORC dan Snappy sama-sama menawarkan performa tinggi. Namun, Apache Hive mungkin memiliki terlalu sedikit peredam secara default, menyebabkan hambatan.
Misalnya, Anda memiliki ukuran data input 50 GB. Data dalam format ORC dengan kompresi Snappy adalah 1 GB. Apache Hive memperkirakan jumlah peredam yang dibutuhkan sebagai: (jumlah byte yang dimasukkan ke mappers/hive.exec.reducers.bytes.per.reducer
).
Dengan pengaturan default, contoh ini adalah empat penekan.
Parameter hive.exec.reducers.bytes.per.reducer
menentukan jumlah byte yang diproses per peredam, secara default 1 GB. Nilai defaultnya adalah 64 MB. Menyetel nilai ini ke bawah meningkatkan paralelisme dan dapat meningkatkan kinerja. Menyetelnya terlalu rendah juga bisa menghasilkan terlalu banyak reducer, berpotensi mempengaruhi kinerja. Parameter ini didasarkan pada persyaratan data tertentu, pengaturan kompresi, dan faktor lingkungan lainnya.
Untuk memodifikasi parameter, navigasi ke tab Konfigurasi Apache Hive dan temukan parameter Data per Reducer pada halaman Pengaturan.
Pilih Edit untuk mengubah nilai menjadi 128 MB (134.217.728 byte), lalu tekan Enter untuk menyimpan.
Mengingat ukuran input 1.024 MB, dengan 128 MB data per peredam, ada delapan peredam (1024/128).
Nilai yang salah untuk parameter Data per Peredam dapat mengakibatkan sejumlah besar peredam, mempengaruhi kinerja kueri secara merugikan. Untuk membatasi jumlah maksimum pereda, atur
hive.exec.reducers.max
ke nilai yang sesuai. Nilai default adalah 1009.
Eksekusi paralel
Kueri Apache Hive dijalankan dalam satu atau beberapa tahap. Jika tahap independen dapat dijalankan secara paralel, tahap ini akan meningkatkan kinerja kueri.
Untuk mengaktifkan eksekusi kueri paralel, navigasi ke tab Konfigurasi Apache Hive
hive.exec.parallel
dan cari properti. Nilai defaultnya adalah false. Ubah nilai menjadi true, lalu tekan Enter untuk menyimpan nilai.Untuk membatasi jumlah pekerjaan yang akan dijalankan secara paralel, modifikasi properti
hive.exec.parallel.thread.number
. Nilai default adalah 8.
Aktifkan vektorisasi
Apache Hive memproses baris data menurut baris. Vektorisasi mengarahkan Apache Hive untuk memproses data dalam blok 1.024 baris daripada satu baris sekaligus. Vektorisasi hanya berlaku untuk format file ORC.
Untuk mengaktifkan eksekusi kueri yang divektorisasi, navigasi ke tab Konfigurasi Apache Hive dan cari parameter
hive.vectorized.execution.enabled
. Nilai default berlaku untuk Apache Hive 0.13.0 atau yang lebih baru.Untuk mengaktifkan eksekusi vektorisasi untuk sisi kurangi kueri, atur
hive.vectorized.execution.reduce.enabled
parameter ke true. Nilai defaultnya adalah false.
Aktifkan pengoptimalan berbasis biaya (CBO)
Secara default, Apache Hive mengikuti seperangkat aturan untuk menemukan satu rencana eksekusi kueri yang optimal. Pengoptimalan berbasis biaya (CBO) mengevaluasi beberapa rencana untuk menjalankan kueri. Selain itu, Apache Hive menetapkan biaya untuk setiap paket, lalu menentukan paket termurah untuk menjalankan kueri.
Untuk mengaktifkan CBO, navigasi ke Apache Hive>Configs>Settings dan temukan Enable Cost Based Optimizer, lalu alihkan tombol alih ke Nyala.
Parameter konfigurasi tambahan berikut meningkatkan kinerja kueri Apache Hive saat CBO diaktifkan:
hive.compute.query.using.stats
Ketika diatur ke true, Apache Hive menggunakan statistik yang disimpan di metastore-nya untuk menjawab kueri sederhana seperti
count(*)
.hive.stats.fetch.column.stats
Statistik kolom dibuat saat CBO diaktifkan. Apache Hive menggunakan statistik kolom, yang disimpan di metastore, untuk mengoptimalkan kueri. Mengambil statistik kolom untuk setiap kolom membutuhkan waktu lebih lama saat jumlah kolom tinggi. Saat diatur ke false, pengaturan ini menonaktifkan pengambilan statistik kolom dari metastore.
hive.stats.fetch.partition.stats
Statistik partisi dasar seperti jumlah baris, ukuran data, dan ukuran file disimpan di metastore. Jika diatur ke true, statistik partisi diambil dari metastore. Ketika salah, ukuran file diambil dari sistem file. Selain itu jumlah baris diambil dari skema baris.
Lihat posting blog Hive Cost Based Optimization di Analytics di Azure Blog untuk dibaca lebih lanjut
Aktifkan kompresi menengah
Tugas maps membuat file perantara yang digunakan oleh tugas perkecil. Kompresi menengah menyusutkan ukuran file perantara.
Pekerjaan Hadoop biasanya di-bottlenecked I/O. Memadatkan data dapat mempercepat I/O dan transfer jaringan secara keseluruhan.
Jenis kompresi yang tersedia adalah:
Format | Alat | Algoritma | Ekstensi File URL | Splittable? |
---|---|---|---|---|
Gzip | Gzip | DEFLATE | .gz |
No |
Bzip2 | Bzip2 | Bzip2 | .bz2 |
Ya |
LZO | Lzop |
LZO | .lzo |
Ya, jika diindeks |
Snappy | T/A | Snappy | Snappy | No |
Sebagai aturan umum, memiliki metode kompresi splittable bersifat penting, jika tidak, beberapa pemesan akan dibuat. Jika data input adalah teks, bzip2
adalah opsi terbaik. Untuk format ORC, Snappy adalah opsi kompresi tercepat.
Untuk mengaktifkan kompresi menengah, navigasikan ke tab Konfigurasi Apache Hive, lalu atur parameter
hive.exec.compress.intermediate
ke true. Nilai defaultnya adalah false.Catatan
Untuk memadatkan file menengah, pilih codec kompresi dengan biaya CPU yang lebih rendah, bahkan jika codec tidak memiliki output kompresi tinggi.
Untuk mengatur codec kompresi menengah, tambahkan properti kustom
mapred.map.output.compression.codec
kehive-site.xml
atau filemapred-site.xml
.Untuk menambahkan pengaturan kustom:
a. Navigasi ke Hive>Configs>Advanced>Custom hive-site.
b. Pilih Tambahkan Properti... di bagian bawah panel Situs Apache Hive kustom.
c. Di jendela Tambahkan Properti, masukkan
mapred.map.output.compression.codec
sebagai kunci dan sebagai nilaiorg.apache.hadoop.io.compress.SnappyCodec
.d. Pilih Tambahkan.
Pengaturan ini akan memadatkan file perantara menggunakan kompresi Snappy. Setelah properti ditambahkan, properti akan muncul di panel Situs Apache Hive kustom.
Catatan
Prosedur ini memodifikasi file
$HADOOP_HOME/conf/hive-site.xml
.
Padatkan output akhir
Output Apache Hive akhir juga dapat dikompresi.
Untuk mengompres output Apache Hive akhir, navigasikan ke tab Apache Hive Configs, lalu atur
hive.exec.compress.output
parameter ke true. Nilai defaultnya adalah false.Untuk memilih codec kompresi output, tambahkan
mapred.output.compression.codec
properti kustom ke panel Situs Apache Hive kustom, seperti yang diuraikan di langkah 3 bagian sebelumnya.
Aktifkan eksekusi spekulatif
Eksekusi spekulatif meluncurkan sejumlah tugas duplikat untuk mendeteksi dan menolak daftar pelacak tugas yang berjalan lambat. Sekaligus meningkatkan eksekusi pekerjaan secara keseluruhan dengan mengoptimalkan hasil tugas individu.
Eksekusi spekulatif tidak boleh diaktifkan untuk tugas MapReduce yang berjalan lama dengan input dalam jumlah besar.
Untuk mengaktifkan eksekusi spekulatif, navigasikan ke tab Konfigurasi Apache Hive, lalu atur parameter
hive.mapred.reduce.tasks.speculative.execution
ke true. Nilai defaultnya adalah false.
Menyelaraskan partisi dinamis
Apache Hive memungkinkan untuk membuat partisi dinamis saat memasukkan rekaman ke dalam tabel, tanpa mendefinisikan setiap partisi. Kemampuan ini adalah fitur yang kuat. Meskipun dapat mengakibatkan penciptaan sejumlah besar partisi. Dan sejumlah besar file untuk setiap partisi.
Agar Apache Hive melakukan partisi dinamis, nilai parameter
hive.exec.dynamic.partition
harus benar (default).Ubah mode partisi dinamis menjadi ketat. Dalam mode ketat, setidaknya satu partisi harus statis. Pengaturan ini mencegah kueri tanpa filter partisi di klausa WHERE, yaitu, mencegah kueri yang memindai semua partisi. Menuju ke tab Konfigurasi Apache Hive, lalu atur
hive.exec.dynamic.partition.mode
ke strict. Nilai defaultnya adalah nonstrict.Untuk membatasi jumlah partisi dinamis yang akan dibuat, ubah
hive.exec.max.dynamic.partitions
parameter. Nilai defaultnya adalah 5000.Untuk membatasi jumlah total partisi dinamis per node, modifikasi
hive.exec.max.dynamic.partitions.pernode
. Nilai defaultnya adalah 2000.
Aktifkan mode lokal
Mode lokal memungkinkan Apache Hive untuk melakukan semua tugas pekerjaan pada satu mesin. Atau kadang-kadang dalam satu proses. Pengaturan ini meningkatkan kinerja kueri jika data input kecil. Dan overhead peluncuran tugas untuk kueri mengkonsumsi persentase yang signifikan dari keseluruhan eksekusi kueri.
Untuk mengaktifkan mode lokal, tambahkan hive.exec.mode.local.auto
parameter ke panel Situs Apache Hive kustom, seperti yang dijelaskan di langkah 3 dari bagian Aktifkan kompresi menengah.
Atur MapReduce MultiGROUP BY tunggal
Saat properti ini diatur ke true, kueri MultiGROUP BY dengan tombol kelompokkan berdasarkan umum menghasilkan satu pekerjaan MapReduce.
Untuk mengaktifkan perilaku ini, tambahkan hive.multigroupby.singlereducer
parameter ke panel Situs Apache Hive Kustom seperti yang dijelaskan di langkah 3 bagian Aktifkan kompresi menengah.
Pengoptimalan Apache Hive Tambahan
Bagian berikut ini menjelaskan pengoptimalan terkait Apache Hive tambahan yang dapat Anda tetapkan.
Optimasi
Tipe gabungan default di Apache Hive adalah gabungan acak. Di Apache Hive, pemisah khusus membaca input dan memancarkan pasangan kunci/nilai gabungan ke file perantara. Hadoop mengurutkan dan menggabungkan pasangan ini dalam tahap acak. Tahap arbitrer ini adalah sesuatu yang bernilai tinggi. Memilih gabungan yang tepat berdasarkan data Anda dapat meningkatkan kinerja secara signifikan.
Jenis gabungan | Kapan | Bagaimana | Pengaturan Apache Hive | Komentar |
---|---|---|---|---|
Gabung Acak |
|
|
Tidak perlu pengaturan Apache Hive yang signifikan | Bekerja setiap saat |
Penggabungan Peta |
|
|
hive.auto.confvert.join=true |
Cepat, namun terbatas |
Urutkan Bucket Gabungan | Jika kedua tabel adalah:
|
Setiap proses:
|
hive.auto.convert.sortmerge.join=true |
Efisien |
Optimasi mesin eksekusi
Rekomendasi tambahan untuk mengoptimalkan mesin eksekusi Apache Hive:
Pengaturan | Disarankan | Asali HDInsight |
---|---|---|
hive.mapjoin.hybridgrace.hashtable |
True = lebih aman, lebih lambat; false = lebih cepat | salah |
tez.am.resource.memory.mb |
Batas atas 4-GB untuk sebagian besar | Disetel Otomatis |
tez.session.am.dag.submit.timeout.secs |
300+ | 300 |
tez.am.container.idle.release-timeout-min.millis |
20000+ | 10000 |
tez.am.container.idle.release-timeout-max.millis |
40000 | 20000 |
Langkah berikutnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk