Apa itu Hive? Architekstur & Mode

⚡ Ringkasan Cerdas

Hive adalah lapisan SQL dari ekosistem Hadoop, yang mengubah pernyataan HiveQL menjadi pekerjaan terdistribusi yang membaca data terstruktur yang sudah ada di HDFS, sehingga analis dapat melakukan kueri pada tabel berukuran petabyte tanpa perlu menulis kode MapReduce sendiri.

  • 🐝 Apa itu: Sebuah alat ETL dan data warehousing yang menambahkan tabel, baris, dan kolom di atas file yang tersimpan di HDFS.
  • ️ Metastore: Informasi skema tersimpan dalam metastore relasional, yang didukung oleh Derby untuk satu pengguna dan oleh MySQL untuk akses bersama.
  • 🆚 Menentang RDBMS: Hive memvalidasi skema saat membaca, melakukan penskalaan horizontal, dan lebih mengutamakan pemindaian besar daripada pembaruan tingkat baris yang ditangani oleh basis data.
  • ️ Tiga lapisan: Klien, layanan, dan penyimpanan membentuk arsitektur, dengan driver yang mengoordinasikan compiler, metastore, dan mesin eksekusi.
  • 🔀 Dua mode: Mode lokal cocok untuk satu node data dan file berukuran kecil, sedangkan mode MapReduce menyebarkan eksekusi ke seluruh klaster multi-node.
  • 🔌 HiveServer2: Antarmuka HS2 berbasis Thrift menambahkan konkurensi multi-klien dan otentikasi untuk sesi jarak jauh.

Arsitektur dan mode Hive

Apa itu Hive?

Hive adalah alat ETL dan gudang data yang dikembangkan di atas Hadoop Distributed File System (HDFS). Hive mempermudah pekerjaan untuk melakukan operasi seperti

  • Enkapsulasi data
  • Kueri ad-hoc
  • Analisis kumpulan data yang sangat besar

Karakteristik penting dari Hive

Poin-poin di bawah ini menjelaskan apa yang membedakan Hive dari program MapReduce biasa.

  • Di Hive, tabel dan database dibuat terlebih dahulu, lalu data dimuat ke dalam tabel tersebut.
  • Hive adalah gudang data yang dirancang untuk mengelola dan melakukan kueri hanya pada data terstruktur yang disimpan dalam tabel.
  • Saat menangani data terstruktur, MapReduce tidak memiliki fitur optimasi dan kemudahan penggunaan seperti UDF, tetapi kerangka kerja Hive memilikinya. Optimasi kueri mengacu pada cara eksekusi kueri yang efektif dalam hal kinerja.
  • Bahasa Hive yang terinspirasi dari SQL memisahkan pengguna dari kompleksitas pemrograman MapReduce. Bahasa ini menggunakan kembali konsep-konsep yang sudah dikenal dari dunia basis data relasional, seperti tabel, baris, kolom, dan skema, untuk memudahkan pembelajaran.
  • Pemrograman Hadoop bekerja pada file datar. Jadi, Hive dapat menggunakan struktur direktori untuk “pemisahan” data untuk meningkatkan kinerja pada kueri tertentu.
  • Komponen penting dari Hive adalah metastore, yang digunakan untuk menyimpan informasi skema. Metastore ini biasanya berada di dalam basis data relasional. Kita dapat berinteraksi dengan Hive menggunakan metode seperti
    • GUI web
    • Java Antarmuka Konektivitas Basis Data (JDBC).
  • Sebagian besar interaksi cenderung terjadi melalui antarmuka baris perintah (CLI). Hive menyediakan CLI untuk menulis kueri Hive menggunakan Bahasa Kueri Hive (HQL).
  • Secara umum, sintaks HQL mirip dengan SQL Sintaks yang sudah dikenal oleh sebagian besar analis data. Contoh kueri di bawah ini menampilkan semua catatan yang ada di tabel dengan nama yang disebutkan.
    • Contoh kueri : Pilih * dari
  • Hive mendukung empat format file, yaitu: FILE TEKS, FILE URUTAN, ORC dan RCFILE (Rekam File Kolom).
  • Untuk penyimpanan metadata pengguna tunggal, Hive menggunakan basis data Derby, dan untuk metadata multi-pengguna atau bersama, Hive menggunakan MySQL.

Untuk pengaturan MySQL Sebagai basis data dan untuk menyimpan informasi metadata, lihat tutorial tentang mengkonfigurasi metastore Hive dengan MySQL, yang merupakan kelanjutan dari Panduan instalasi Hive.

Beberapa poin penting tentang Hive:

  • Perbedaan utama antara HQL dan SQL adalah bahwa kueri Hive dieksekusi pada infrastruktur Hadoop, bukan pada basis data tradisional.
  • Eksekusi kueri Hive adalah serangkaian perintah yang dihasilkan secara otomatis. PetaKurangi pekerjaan.
  • Hive mendukung konsep partisi dan bucket untuk memudahkan pengambilan data saat klien menjalankan kueri.
  • Hive mendukung kustomisasi UDF (fungsi yang ditentukan pengguna) untuk pembersihan data, penyaringan, dan pekerjaan serupa. Sesuai dengan kebutuhan programmer, seseorang dapat mendefinisikan UDF Hive.

Database Relasional Hive Vs

Hive melakukan fungsi yang tidak dapat dilakukan oleh basis data relasional. Ketika data mencapai petabyte, mengembalikan hasil dalam hitungan detik sangat penting, dan Hive melakukannya dengan efisien. Perbedaan utamanya adalah sebagai berikut.

Basis data relasional adalah “skema saat membaca dan skema saat menulis”Pertama, sebuah tabel dibuat, kemudian data dimasukkan ke dalam tabel tersebut. Pada tabel basis data relasional, fungsi-fungsi seperti penyisipan, pembaruan, dan modifikasi dapat dilakukan.

Sarang lebah adalah “skema hanya baca”Jadi, fungsi-fungsi seperti pembaruan dan modifikasi tidak berfungsi pada rilis awal, karena kueri Hive dalam klaster tipikal berjalan di beberapa DataNode, yang membuat pembaruan dan modifikasi data di beberapa node menjadi tidak mungkin (versi Hive di bawah 0.13).

Hive juga mendukung “Banyak membaca, sekali menulis” pola, sehingga pada versi terbaru sebuah tabel dapat diperbarui setelah penyisipan.

CATATAN: Versi Hive yang lebih baru hadir dengan fitur-fitur yang diperbarui. Hive 0.14 memperkenalkan UPDATE dan DELETE sebagai fitur baru, dan rilis selanjutnya menambahkan dukungan penuh untuk transaksi ACID.

Tabel di bawah ini meringkas perbandingan tersebut.

Aspek Basis data relasional Sarang Apache
Validasi skema Saat menulis Saat dibaca
Volume data tipikal Gigabyte hingga terabyte Terabyte hingga petabyte
Beban kerja OLTP tingkat baris membaca dan menulis Analisis batch pemindaian penuh
Bahasa kueri SQL HQL, sebuah dialek yang terinspirasi oleh SQL.
Execution Mesin basis data Pekerjaan klaster terdistribusi

Sarang lebah Architekstur

Diagram di bawah ini menjelaskan Apache Arsitektur Hive secara detail.

Diagram arsitektur Apache Hive yang menunjukkan klien, layanan, penyimpanan, dan komputasi.

Hive pada dasarnya terdiri dari 3 bagian inti:

  1. Klien Hive
  2. Layanan sarang lebah
  3. Penyimpanan dan komputasi Hive

Klien Sarang

Hive menyediakan berbagai driver untuk berkomunikasi dengan berbagai jenis aplikasi. Untuk aplikasi berbasis Thrift, Hive menyediakan klien Thrift untuk komunikasi.

Untuk Java Untuk aplikasi terkait, ia menyediakan driver JDBC. Untuk jenis aplikasi lain, ia menyediakan driver ODBC. Klien dan driver ini kemudian berkomunikasi dengan server Hive dalam layanan Hive.

Layanan Sarang

Interaksi klien dengan Hive dilakukan melalui layanan Hive. Jika klien ingin melakukan operasi terkait kueri di Hive, klien harus berkomunikasi melalui layanan Hive.

CLI bertindak sebagai layanan Hive untuk operasi DDL. Semua driver berkomunikasi dengan server Hive dan driver utama dalam layanan Hive, seperti yang ditunjukkan pada diagram arsitektur di atas.

Driver dalam layanan Hive adalah driver utama: ia berkomunikasi dengan JDBC, ODBC, dan aplikasi khusus klien lainnya, kemudian meneruskan permintaan mereka ke metastore dan sistem file untuk diproses lebih lanjut.

Penyimpanan dan Komputasi Hive

Layanan Hive seperti metastore, sistem file, dan klien pekerjaan selanjutnya berkomunikasi dengan penyimpanan Hive dan melakukan tindakan berikut:

  • Informasi metadata tentang tabel yang dibuat di Hive disimpan di Hive. basis data metastore.
  • Hasil kueri dan data yang dimuat ke dalam tabel disimpan di klaster Hadoop pada HDFS.

Alur eksekusi pekerjaan

Diagram di bawah ini tracsatu kueri dari antarmuka pengguna ke DataNodes dan kembali.

Diagram alur eksekusi pekerjaan Hive tracmengirimkan kueri dari antarmuka pengguna ke DataNodes.

Dari diagram di atas, kita dapat memahami alur eksekusi pekerjaan di Hive dengan Hadoop. Alur data di Hive berperilaku dalam pola berikut.

  1. Menjalankan kueri dari UI (antarmuka pengguna)
  2. Driver berinteraksi dengan compiler untuk mendapatkan rencana. (Di sini, rencana mengacu pada proses eksekusi query dan pengumpulan informasi metadata terkait.)
  3. Compiler membuat rencana untuk pekerjaan yang akan dieksekusi. Compiler berkomunikasi dengan metastore untuk mendapatkan permintaan metadata.
  4. Metastore mengirimkan informasi metadata kembali ke kompiler.
  5. Compiler berkomunikasi dengan driver dengan rencana yang diusulkan untuk mengeksekusi kueri.
  6. Pengemudi mengirimkan rencana eksekusi ke mesin eksekusi.
  7. Mesin eksekusi (EE) bertindak sebagai jembatan antara Hive dan Hadoop untuk memproses kueri, termasuk operasi DFS:
    • EE pertama-tama menghubungi NameNode dan kemudian DataNode untuk mendapatkan nilai-nilai yang tersimpan dalam tabel.
    • EE mengambil data yang diinginkan dari DataNode. Data tabel sebenarnya hanya berada di data node; dari NameNode, ia hanya mengambil metadata untuk kueri.
    • Sistem ini mengumpulkan data aktual dari node data yang terkait dengan kueri yang disebutkan.
    • EE berkomunikasi dua arah dengan metastore untuk melakukan operasi DDL (bahasa definisi data) seperti BUAT, HAPUS, dan UBAH pada tabel dan basis data. Metastore hanya menyimpan nama basis data, tabel, dan kolom.
    • EE kemudian berkomunikasi dengan daemon Hadoop seperti NameNode, DataNode, dan job. tracker untuk mengeksekusi kueri di atas sistem file Hadoop.
  1. Mengambil hasil dari driver.
  2. Mengirim hasil ke mesin eksekusi. Setelah hasil diambil dari node data ke EE, EE mengirimkan hasil tersebut kembali ke driver dan ke UI (antarmuka pengguna).

Hive tetap terhubung dengan sistem file Hadoop dan daemon-daemonnya melalui mesin eksekusi. Panah putus-putus pada diagram menunjukkan komunikasi tersebut.

Mode Hive yang berbeda

Hive dapat beroperasi dalam dua mode tergantung pada ukuran node data di Hadoop. Mode-mode tersebut adalah:

  • Mode lokal
  • Mode MapReduce

Kapan menggunakan mode lokal?

  • Jika Hadoop diinstal dalam mode pseudo-distributed dengan satu node data, kita menggunakan Hive dalam mode ini.
  • Jika ukuran data cukup kecil sehingga terbatas pada satu mesin lokal, kita dapat menggunakan mode ini.
  • Pemrosesan akan sangat cepat pada kumpulan data lebih kecil yang ada di mesin lokal

Kapan menggunakan mode MapReduce?

  • Jika Hadoop memiliki beberapa node data dan data didistribusikan di berbagai node, kita menggunakan Hive dalam mode ini.
  • Algoritma ini bekerja pada sejumlah besar data dan kueri dieksekusi secara paralel.
  • Pemrosesan kumpulan data besar dengan kinerja lebih baik dapat dicapai melalui mode ini

Di Hive, kita dapat mengatur properti untuk menentukan mode kerja Hive. Secara default, Hive bekerja dalam mode MapReduce, dan untuk mode lokal, Anda dapat menggunakan pengaturan berikut:

SET mapred.job.tracker=local;

Mulai dari versi Hive 0.7 dan seterusnya, Hive mendukung mode yang menjalankan pekerjaan MapReduce dalam mode lokal secara otomatis. Pada Hive 4.x, mesin default-nya adalah Apache Tez, sehingga properti ini berlaku untuk jalur MapReduce lama.

Apa itu Sarang Server2 (HS2)?

HiveServer2 (HS2) adalah antarmuka server yang menjalankan fungsi-fungsi berikut:

  • Memungkinkan klien jarak jauh untuk menjalankan kueri terhadap Hive
  • Mengambil hasil dari kueri tersebut.

Versi terkini menambahkan fitur-fitur canggih berdasarkan Thrift RPC, seperti:

  • Konkurensi multi-klien
  • Otentikasi

HS2 berada di balik Beeline dan setiap sesi JDBC atau ODBC, itulah sebabnya HS2 menggantikan CLI Hive untuk pengguna tunggal. Operator dan fungsi bawaan HiveQL Referensi adalah langkah selanjutnya yang wajar.

Pertanyaan Umum Demo Slot

Hive adalah lapisan kueri batch yang memindai tabel besar melalui pekerjaan terdistribusi. HBase adalah penyimpanan NoSQL yang dibangun untuk pembacaan dan penulisan acak dalam hitungan milidetik pada baris tunggal. Keduanya memecahkan pola akses yang berlawanan dan sering berjalan berdampingan.

Hive berjalan di atas MapReduce, Apache Tez, atau Apache. SparkMapReduce sudah usang dan Hive 4.x secara default menggunakan Tez, yang menyimpan hasil sementara di memori alih-alih menuliskannya ke disk di antara tahapan.

Tabel terkelola memberikan kepemilikan metadata dan file kepada Hive, jadi hapusping Ini menghapus data dari direktori gudang data. Tabel eksternal hanya menyimpan metadata, dan menghapusping Hal ini tidak mengubah file-file yang mendasarinya.

Model biaya yang dipelajari memberikan statistik eksekusi kembali ke perencana untuk memprediksi volume pemindaian, urutan penggabungan, dan pemangkasan partisi dengan lebih akurat daripada perkiraan statis. Platform cloud menampilkan sinyal yang sama sebagai rekomendasi pemadatan dan tata letak partisi.

Copilot membuat draf penggabungan HiveQL, fungsi jendela, dan Java Kerangka UDF dari sebuah komentar, yang mempersingkat pekerjaan boilerplate. Nama kolom, kunci partisi, dan tipe data masih perlu diperiksa terlebih dahulu terhadap metastore yang sebenarnya.

Ya. Hive 0.14 menambahkan UPDATE dan DELETE, dan rilis selanjutnya memberikan dukungan ACID penuh untuk tabel transaksional. Hive 4.x memperluas ini melalui tabel Apache Iceberg dengan isolasi snapshot dan evolusi skema.

Ketiganya mengekspos SQL pada file yang sama. Hive lebih menyukai pekerjaan batch yang panjang dan memiliki metastore yang dibaca oleh yang lain. Spark SQL cocok untuk pipeline campuran; Trino menargetkan kueri interaktif di beberapa sumber.

Ya, sebagian besar melalui Hive Metastore, yang tetap menjadi standar katalog. SparkTrino, Presto, dan Flink semuanya dapat membaca. Hive sendiri masih melayani transformasi batch terjadwal dan pemuatan gudang data.

Ringkaslah postingan ini dengan: