Bagikan melalui


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.

  1. Untuk memodifikasi parameter konfigurasi Apache Hive, pilih Apache Hive dari bar samping Layanan.
  2. 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:

  1. Di tab Apache Hive Configs, ketik mesin eksekusi di kotak filter.

    Apache Ambari Search execution engine.

  2. Nilai default properti Pengoptimalan adalah Tez.

    Optimization - Apache Tez engine.

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).

  1. Untuk mengubah parameter batas, navigasikan ke tab Konfigurasi pada layanan Tez. Perluas panel Umum, serta tempatkan parameter tez.grouping.max-size dan tez.grouping.min-size.

  2. Atur kedua parameter ke 33.554.432 bytes (32 MB).

    Apache Ambari Tez grouping sizes.

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.

  1. Untuk memodifikasi parameter, navigasi ke tab Konfigurasi Apache Hive dan temukan parameter Data per Reducer pada halaman Pengaturan.

    Apache Ambari Data per Reducer.

  2. Pilih Edit untuk mengubah nilai menjadi 128 MB (134.217.728 byte), lalu tekan Enter untuk menyimpan.

    Ambari Data per Reducer - edited.

    Mengingat ukuran input 1.024 MB, dengan 128 MB data per peredam, ada delapan peredam (1024/128).

  3. 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.

  1. Untuk mengaktifkan eksekusi kueri paralel, navigasi ke tab Konfigurasi Apache Hivehive.exec.parallel dan cari properti. Nilai defaultnya adalah false. Ubah nilai menjadi true, lalu tekan Enter untuk menyimpan nilai.

  2. Untuk membatasi jumlah pekerjaan yang akan dijalankan secara paralel, modifikasi properti hive.exec.parallel.thread.number. Nilai default adalah 8.

    Apache Hive exec parallel display.

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.

  1. 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.

  2. Untuk mengaktifkan eksekusi vektorisasi untuk sisi kurangi kueri, atur hive.vectorized.execution.reduce.enabled parameter ke true. Nilai defaultnya adalah false.

    Apache Hive vectorized execution.

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.

HDInsight cost-based optimizer.

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(*).

    Apache Hive compute query using stats.

  • 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.

    Apache Hive stats set column stats.

  • 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.

    Hive stats set partition stats.

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.

  1. Untuk mengaktifkan kompresi menengah, navigasikan ke tab Konfigurasi Apache Hive, lalu atur parameter hive.exec.compress.intermediate ke true. Nilai defaultnya adalah false.

    `Hive exec compress intermediate`.

    Catatan

    Untuk memadatkan file menengah, pilih codec kompresi dengan biaya CPU yang lebih rendah, bahkan jika codec tidak memiliki output kompresi tinggi.

  2. Untuk mengatur codec kompresi menengah, tambahkan properti kustom mapred.map.output.compression.codec ke hive-site.xml atau file mapred-site.xml.

  3. 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 nilai org.apache.hadoop.io.compress.SnappyCodec.

    d. Pilih Tambahkan.

    `Apache Hive custom property add`.

    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.

  1. 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.

  2. 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.

    Apache Hive custom property add2.

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.

    `Hive mapred reduce tasks speculative execution`.

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.

  1. Agar Apache Hive melakukan partisi dinamis, nilai parameter hive.exec.dynamic.partition harus benar (default).

  2. 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.

  3. Untuk membatasi jumlah partisi dinamis yang akan dibuat, ubah hive.exec.max.dynamic.partitions parameter. Nilai defaultnya adalah 5000.

  4. 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.

Apache Hive exec mode local auto.

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.

Hive set single MapReduce MultiGROUP BY.

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
  • Pilihan default
  • Selalu berfungsi
  • Baca dari bagian salah satu tabel
  • Bucket dan pengurutan pada tombol Gabung
  • Mengirim satu bucket untuk masing-masing mengurangi
  • Gabung dilakukan di sisi Pengurangan
Tidak perlu pengaturan Apache Hive yang signifikan Bekerja setiap saat
Penggabungan Peta
  • Satu tabel dapat memenuhi memori
  • Membaca tabel kecil ke dalam tabel hash memori
  • Melakukan streaming melalui bagian dari file besar
  • Menggabungkan setiap rekaman dari tabel hash
  • Penggabungan dilakukan oleh mapper saja
hive.auto.confvert.join=true Cepat, namun terbatas
Urutkan Bucket Gabungan Jika kedua tabel adalah:
  • Mengurutkan hal yang sama
  • Melakukan bucket yang sama
  • Bergabung pada kolom yang diurutkan/disusun
Setiap proses:
  • Membaca bucket dari setiap tabel
  • Memproses baris dengan nilai terendah
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