Apa itu Hive? Arsitektur & Mode

Daftar Isi:

Anonim

Dalam tutorial ini, Anda akan belajar-

  • Apa itu Hive?
  • Arsitektur Sarang
  • Mode sarang yang berbeda
  • Apa itu Hive Server2 (HS2)?

Apa itu Hive?

Hive adalah ETL dan alat pergudangan Data yang dikembangkan di atas Hadoop Distributed File System (HDFS). Hive memudahkan pekerjaan untuk melakukan operasi seperti

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

Karakteristik penting dari Hive

  • Di Hive, tabel dan database dibuat terlebih dahulu, lalu data dimuat ke dalam tabel ini.
  • Sarang sebagai gudang data yang dirancang untuk mengelola dan membuat kueri hanya data terstruktur yang disimpan dalam tabel.
  • Saat menangani data terstruktur, Map Reduce tidak memiliki fitur pengoptimalan dan kegunaan seperti UDF, tetapi kerangka kerja Hive memilikinya. Pengoptimalan kueri mengacu pada cara eksekusi kueri yang efektif dalam hal kinerja.
  • Bahasa yang terinspirasi SQL dari Hive memisahkan pengguna dari kompleksitas pemrograman Map Reduce. Ini menggunakan kembali konsep yang sudah dikenal dari dunia database relasional, seperti tabel, baris, kolom dan skema, dll. Untuk kemudahan belajar.
  • Pemrograman Hadoop bekerja pada file datar. Jadi, Hive dapat menggunakan struktur direktori untuk "mempartisi" data guna meningkatkan kinerja pada kueri tertentu.
  • Komponen baru dan penting dari Hive yaitu Metastore yang digunakan untuk menyimpan informasi skema. Metastore ini biasanya berada dalam database relasional. Kita dapat berinteraksi dengan Hive menggunakan metode seperti
    • GUI web
    • Antarmuka Java Database Connectivity (JDBC)
  • Sebagian besar interaksi cenderung berlangsung melalui antarmuka baris perintah (CLI). Hive menyediakan CLI untuk menulis kueri Hive menggunakan Hive Query Language (HQL)
  • Secara umum, sintaks HQL mirip dengan sintaks SQL yang kebanyakan analis data kenal. Kueri Sampel di bawah ini menampilkan semua catatan yang ada dalam nama tabel yang disebutkan.
    • Contoh kueri : Pilih * dari
  • Hive mendukung empat format file yaitu TEXTFILE, SEQUENCEFILE, ORC dan RCFILE (Record Columnar File).
  • Untuk penyimpanan metadata pengguna tunggal, Hive menggunakan database derby dan untuk beberapa pengguna Metadata atau kasus Metadata bersama Hive menggunakan MYSQL.

Untuk mengatur MySQL sebagai database dan untuk menyimpan informasi Meta-data, periksa Tutorial "Instalasi dan Konfigurasi HIVE dan MYSQL"

Beberapa poin penting tentang Hive:

  • Perbedaan utama antara HQL dan SQL adalah kueri Hive dijalankan pada infrastruktur Hadoop daripada database tradisional.
  • Eksekusi kueri Hive akan menjadi seperti serangkaian peta yang dibuat secara otomatis mengurangi Pekerjaan.
  • Hive mendukung konsep partisi dan keranjang untuk memudahkan pengambilan data saat klien menjalankan kueri.
  • Hive mendukung UDF khusus khusus (Fungsi yang Ditentukan Pengguna) untuk pembersihan data, pemfilteran, dll. Menurut persyaratan pemrogram, seseorang dapat menentukan UDF Sarang.

Database Relasional Sarang Vs: -

Dengan menggunakan Hive, kita dapat melakukan beberapa fungsionalitas aneh yang tidak dicapai di Database Relasional. Untuk data dalam jumlah besar dalam peta-byte, penting untuk menanyakannya dan mendapatkan hasil dalam hitungan detik. Dan Hive melakukan ini dengan cukup efisien, memproses kueri dengan cepat dan menghasilkan hasil dalam waktu detik.

Mari kita lihat sekarang apa yang membuat Hive begitu cepat.

Beberapa perbedaan utama antara database Hive dan relasional adalah sebagai berikut;

Database relasional adalah " Schema on READ dan Schema on Write ". Pertama membuat tabel kemudian memasukkan data ke dalam tabel tertentu. Pada tabel database relasional, fungsi seperti Penyisipan, Pembaruan, dan Modifikasi dapat dilakukan.

Sarang adalah " Skema di BACA saja ". Jadi, fungsi seperti pembaruan, modifikasi, dll. Tidak berfungsi dengan ini. Karena kueri Hive di kluster tipikal berjalan di beberapa Node Data. Jadi tidak mungkin untuk memperbarui dan memodifikasi data di beberapa node. (Versi sarang di bawah 0.13)

Selain itu, Hive mendukung pola " BACA Banyak TULIS Sekali ". Artinya setelah menyisipkan tabel kita bisa mengupdate tabel di versi Hive terbaru.

CATATAN : Namun Hive versi baru hadir dengan fitur-fitur yang diperbarui. Versi sarang (Hive 0.14) hadir dengan opsi Perbarui dan Hapus sebagai fitur baru

Arsitektur Sarang

Tangkapan layar di atas menjelaskan arsitektur Apache Hive secara detail

Sarang Terdiri dari 3 bagian inti

  1. Klien sarang
  2. Layanan Sarang
  3. Penyimpanan dan Komputasi Sarang

Klien sarang:

Hive menyediakan driver yang berbeda untuk komunikasi dengan jenis aplikasi yang berbeda. Untuk aplikasi berbasis Thrift, ini akan menyediakan klien Thrift untuk komunikasi.

Untuk aplikasi terkait Java, ini menyediakan Driver JDBC. Selain semua jenis aplikasi yang disediakan driver ODBC. Klien dan driver ini pada gilirannya kembali berkomunikasi dengan server Hive di layanan Hive.

Layanan Sarang:

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

CLI adalah antarmuka baris perintah yang bertindak sebagai layanan Hive untuk operasi DDL (Data definition Language). Semua driver berkomunikasi dengan server Hive dan ke driver utama dalam layanan Hive seperti yang ditunjukkan pada diagram arsitektur di atas.

Driver yang ada di layanan Hive mewakili driver utama, dan ini mengkomunikasikan semua jenis JDBC, ODBC, dan aplikasi khusus klien lainnya. Pengemudi akan memproses permintaan tersebut dari aplikasi yang berbeda ke penyimpanan meta dan sistem lapangan untuk diproses lebih lanjut.

Penyimpanan dan Komputasi Sarang:

Layanan Hive seperti Meta store, sistem File, dan Klien Pekerjaan pada gilirannya berkomunikasi dengan penyimpanan Hive dan melakukan tindakan berikut

  • Informasi metadata dari tabel yang dibuat di Hive disimpan di Hive "database penyimpanan Meta".
  • Hasil kueri dan data yang dimuat dalam tabel akan disimpan di cluster Hadoop di HDFS.

Alur pelaksanaan pekerjaan:

Dari screenshot di atas kita dapat memahami alur eksekusi Job di Hive with Hadoop

Aliran data di Hive berperilaku dalam pola berikut;

  1. Menjalankan Kueri dari UI (Antarmuka Pengguna)
  2. Pengemudi berinteraksi dengan Compiler untuk mendapatkan rencana tersebut. (Di sini rencana mengacu pada eksekusi kueri) proses dan pengumpulan informasi metadata terkait
  3. Kompilator membuat rencana pekerjaan yang akan dijalankan. Compiler berkomunikasi dengan Meta store untuk mendapatkan permintaan metadata
  4. Penyimpanan meta mengirimkan informasi metadata kembali ke compiler
  5. Compiler berkomunikasi dengan Driver dengan rencana yang diusulkan untuk mengeksekusi query
  6. Pengemudi Mengirim rencana eksekusi ke mesin Eksekusi
  7. Execution Engine (EE) bertindak sebagai jembatan antara Hive dan Hadoop untuk memproses kueri. Untuk operasi DFS.
  • EE harus terlebih dahulu menghubungi Name Node dan kemudian ke node Data untuk mendapatkan nilai yang disimpan dalam tabel.
  • EE akan mengambil record yang diinginkan dari Data Nodes. Data sebenarnya dari tabel berada di node data saja. Sedangkan dari Name Node hanya mengambil informasi metadata untuk query tersebut.
  • Ini mengumpulkan data aktual dari node data yang terkait dengan kueri yang disebutkan
  • Execution Engine (EE) berkomunikasi dua arah dengan Meta store yang ada di Hive untuk melakukan operasi DDL (Data Definition Language). Di sini operasi DDL seperti CREATE, DROP dan ALTERING tabel dan database selesai. Meta store hanya akan menyimpan informasi tentang nama database, nama tabel dan nama kolom. Ini akan mengambil data yang terkait dengan kueri yang disebutkan.
  • Execution Engine (EE) pada gilirannya berkomunikasi dengan daemon Hadoop seperti node Nama, node Data, dan pelacak pekerjaan untuk mengeksekusi kueri di atas sistem file Hadoop
  1. Mengambil hasil dari pengemudi
  2. Mengirim hasil ke mesin Eksekusi. Setelah hasil diambil dari node data ke EE, hasil akan dikirim kembali ke driver dan ke UI (ujung depan)

Sarang terus-menerus berhubungan dengan sistem file Hadoop dan daemonnya melalui mesin Eksekusi. Panah putus-putus di diagram alur Pekerjaan menunjukkan komunikasi mesin Eksekusi dengan daemon Hadoop.

Mode sarang yang berbeda

Hive dapat beroperasi dalam dua mode bergantung pada ukuran node data di Hadoop.

Mode-mode ini adalah,

  • Mode lokal
  • Mode pengurangan peta

Kapan menggunakan mode Lokal:

  • Jika Hadoop diinstal dalam mode pseudo dengan memiliki satu node data, kami menggunakan Hive dalam mode ini
  • Jika ukuran data lebih kecil dalam hal terbatas pada mesin lokal tunggal, kita dapat menggunakan mode ini
  • Pemrosesan akan sangat cepat pada kumpulan data yang lebih kecil yang ada di mesin lokal

Kapan menggunakan mode pengurangan peta:

  • Jika Hadoop memiliki beberapa node data dan data didistribusikan ke node yang berbeda, kami menggunakan Hive dalam mode ini
  • Ini akan bekerja pada sejumlah besar kumpulan data dan kueri akan dieksekusi secara paralel
  • Pemrosesan kumpulan data besar dengan kinerja yang lebih baik dapat dicapai melalui mode ini

Di Hive, kita dapat mengatur properti ini untuk menyebutkan mode mana yang bisa digunakan Hive? Secara default, ini berfungsi pada mode Map Reduce dan untuk mode lokal Anda dapat memiliki pengaturan berikut.

Sarang untuk bekerja dalam set mode lokal

SET mapred.job.tracker = lokal;

Dari Hive versi 0.7 ini mendukung mode untuk menjalankan pekerjaan pengurangan peta dalam mode lokal secara otomatis.

Apa itu Hive Server2 (HS2)?

HiveServer2 (HS2) adalah antarmuka server yang melakukan fungsi berikut:

  • Memungkinkan klien jarak jauh untuk mengeksekusi kueri terhadap Hive
  • Ambil hasil dari kueri yang disebutkan

Dari versi terbaru itu memiliki beberapa fitur canggih Berdasarkan Thrift RPC seperti;

  • Konkurensi multi-klien
  • Autentikasi

Ringkasan:

Hive adalah ETL dan alat gudang data di atas ekosistem Hadoop dan digunakan untuk memproses data terstruktur dan semi terstruktur.

  • Hive adalah database yang ada di ekosistem Hadoop yang melakukan operasi DDL dan DML, dan menyediakan bahasa kueri yang fleksibel seperti HQL untuk kueri dan pemrosesan data yang lebih baik.
  • Ini menyediakan begitu banyak fitur dibandingkan dengan RDMS yang memiliki batasan tertentu.

Untuk logika khusus pengguna untuk memenuhi persyaratan klien.

  • Ini menyediakan opsi untuk menulis dan menyebarkan skrip yang ditentukan khusus dan fungsi yang ditentukan pengguna.
  • Selain itu, ia menyediakan partisi dan keranjang untuk penyimpanan logika khusus.