Berbagi teknologi

Pengantar Hive dan arsitekturnya

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Apa itu sarang?

  • Gudang data berbasis Hadoop, cocok untuk beberapa aplikasi latensi tinggi (pengembangan offline), dapat memetakan file data terstruktur dan semi-terstruktur yang disimpan dalam file Hadoop ke dalam tabel database, dan menyediakan data seperti SQL berdasarkan tabel model, yang disebut Hive Query Language (HQL), untuk mengakses dan menganalisis kumpulan data besar yang disimpan dalam file Hadoop;
  • Inti dari Hive adalah mengubah HQL menjadi program MapReduce, dan kemudian mengirimkan program tersebut ke cluster Hadoop untuk dieksekusi;
  • Hive sendiri tidak menyimpan atau menghitung data. Ini sepenuhnya bergantung pada HDFS dan MapReduce. Tabel di Hive adalah tabel logis murni;

Apa itu gudang data?

  • Gudang data itu sendiri tidak "menghasilkan" data apa pun, dan datanya berasal dari sistem eksternal yang berbeda;
  • Pada saat yang sama, gudang data itu sendiri tidak perlu "mengkonsumsi" data apa pun, dan hasilnya terbuka untuk berbagai aplikasi eksternal;
  • Inilah sebabnya mengapa disebut "gudang" dan bukan "pabrik";

Arsitektur dan komponen sarang

Masukkan deskripsi gambar di sini

  • Toko meta: Biasanya disimpan di database relasional seperti Mysql/derby, metadata di Hive meliputi nama tabel, kolom dan partisi tabel beserta atributnya, atribut tabel (apakah tabel eksternal, dll.), direktori tempat data tabel berada, dll.;
  • Pengemudi : Driver, termasuk pengurai sintaksis, kompiler rencana, pengoptimal, dan pelaksana. Lengkapi pernyataan kueri HQL dari analisis leksikal, analisis sintaksis, kompilasi, pengoptimalan, dan pembuatan rencana kueri. Rencana kueri yang dihasilkan disimpan dalam HDFS dan selanjutnya dieksekusi oleh panggilan mesin eksekusi;
    • Pengurai (Pengurai SQL): Mengonversi string SQL menjadi pohon sintaksis abstrak AST, dan melakukan analisis sintaksis pada AST, seperti apakah semantik SQL sudah benar, apakah tabel ada, dan apakah bidang ada;
    • Kompiler (Rencana Fisik): Kompilasi AST untuk menghasilkan rencana eksekusi logis (DAG);
    • Pengoptimal (Pengoptimal Kueri): Optimalkan rencana eksekusi logis;
    • Eksekusi: Mengubah rencana eksekusi logis menjadi rencana fisik yang dapat dieksekusi, yaitu program MapReduce/Spark;

Proses eksekusi HQL

Masukkan deskripsi gambar di sini

  1. Buat sebuah permintaan: Memulai permintaan eksekusi dari UI ke Driver;
  2. Dapatkan rencana eksekusi: Driver mengirimkan permintaan pengguna ke kompiler untuk mendapatkan rencana eksekusi;
  3. Dapatkan metadata: Kompiler memperoleh metadata yang relevan dari penyimpanan Meta berdasarkan informasi tabel dan partisi yang relevan dalam pernyataan SQL;
  4. Kembalikan metadata: Penyimpanan meta mengembalikan metadata yang sesuai ke kompiler;
  5. Rencana eksekusi pengembalian: Parsing dan optimalkan SQL berdasarkan metadata tabel dan partisi untuk menghasilkan rencana eksekusi logis. Rencananya adalah grafik DAG, dan setiap tahap berhubungan dengan peta MapReduce atau operasi pengurangan;
  6. Jalankan rencana eksekusi: Kirim rencana eksekusi ke Mesin Eksekusi, yang akan mengirimkan rencana eksekusi logis ke Hadoop untuk dieksekusi dalam bentuk MapReduce;
  7. Hasil running yang didapat: Pengemudi mengumpulkan hasil yang berjalan dan mengirimkannya ke UI;