Hive nedir? Mimarlık ve Modları

İçindekiler:

Anonim

Bu eğitimde öğreneceksiniz-

  • Hive nedir?
  • Kovan Mimarisi
  • Farklı Kovan modları
  • Hive Server2 (HS2) nedir?

Hive nedir?

Hive, Hadoop Dağıtılmış Dosya Sistemi (HDFS) üzerine geliştirilmiş bir ETL ve Veri depolama aracıdır. Hive, aşağıdaki gibi işlemleri gerçekleştirmek için işi kolaylaştırır:

  • Veri kapsülleme
  • Anlık sorgular
  • Büyük veri kümelerinin analizi

Kovan'ın önemli özellikleri

  • Hive'da önce tablolar ve veritabanları oluşturulur, ardından veriler bu tablolara yüklenir.
  • Yalnızca tablolarda depolanan yapılandırılmış verileri yönetmek ve sorgulamak için tasarlanmış veri ambarı olarak Hive.
  • Yapılandırılmış verilerle uğraşırken, Map Reduce'un UDF'ler gibi optimizasyon ve kullanılabilirlik özellikleri yoktur, ancak Hive çerçevesi vardır. Sorgu optimizasyonu, performans açısından etkili bir sorgu yürütme yöntemini ifade eder.
  • Hive'ın SQL'den ilham alan dili, kullanıcıyı Map Reduce programının karmaşıklığından ayırır. Öğrenme kolaylığı için tablolar, satırlar, sütunlar ve şema gibi ilişkisel veritabanı dünyasından tanıdık kavramları yeniden kullanır.
  • Hadoop'un programlaması düz dosyalar üzerinde çalışır. Bu nedenle, Hive, belirli sorgularda performansı artırmak için verileri "bölümlemek" için dizin yapılarını kullanabilir.
  • Şema bilgilerini depolamak için kullanılan yeni ve önemli bir Hive bileşeni, yani Metastore. Bu Metastore tipik olarak ilişkisel bir veritabanında bulunur. Hive ile aşağıdaki gibi yöntemler kullanarak etkileşim kurabiliriz:
    • Web GUI
    • Java Veritabanı Bağlantısı (JDBC) arayüzü
  • Çoğu etkileşim, bir komut satırı arayüzü (CLI) üzerinden gerçekleşir. Hive, Hive Query Language (HQL) kullanarak Hive sorguları yazmak için bir CLI sağlar
  • Genel olarak, HQL sözdizimi çoğu veri analistinin aşina olduğu SQL sözdizimine benzer. Aşağıdaki Örnek sorgu, belirtilen tablo adında bulunan tüm kayıtları görüntüler.
    • Örnek sorgu : 'den * öğesini seçin
  • Hive, TEXTFILE, SEQUENCEFILE, ORC ve RCFILE (Record Columnar File) olmak üzere dört dosya formatını destekler .
  • Tek kullanıcı meta veri depolaması için Hive, derbi veritabanı kullanır ve birden fazla kullanıcı Meta Veri veya paylaşılan Meta Veri durumu için Hive, MYSQL kullanır.

MySQL'i veritabanı olarak ayarlamak ve Meta-veri bilgilerini saklamak için "HIVE ve MYSQL Kurulumu ve Konfigürasyonu" Eğitimi bölümüne bakın.

Hive ile ilgili bazı önemli noktalar:

  • HQL ve SQL arasındaki en büyük fark, Hive sorgusunun geleneksel veritabanı yerine Hadoop altyapısında yürütülmesidir.
  • Hive sorgu yürütmesi, otomatik olarak oluşturulan harita azaltma İşleri dizisi gibi olacaktır.
  • Hive, istemci sorguyu yürüttüğünde verilerin kolay alınması için bölüm ve kova kavramlarını destekler.
  • Hive, veri temizleme, filtreleme vb. İçin özel spesifik UDF'yi (Kullanıcı Tanımlı İşlevler) destekler. Programcıların gereksinimlerine göre Hive UDF'leri tanımlanabilir.

Hive Vs İlişkisel Veritabanları: -

Hive'ı kullanarak, İlişkisel Veritabanlarında elde edilemeyen bazı özel işlevleri gerçekleştirebiliriz. Peta bayt cinsinden büyük miktarda veri için, onu sorgulamak ve saniyeler içinde sonuç almak önemlidir. Ve Hive bunu oldukça verimli bir şekilde yapar, sorguları hızlı işler ve ikinci seferde sonuç üretir.

Şimdi Hive'ı bu kadar hızlı yapan şeyin ne olduğunu görelim.

Hive ve ilişkisel veritabanları arasındaki bazı temel farklar şunlardır;

İlişkisel veritabanları " OKUMADA Şema ve Yazmada Şema " dır . Önce bir tablo oluşturmak, ardından belirli tabloya veri eklemek. İlişkisel veritabanı tablolarında Eklemeler, Güncellemeler ve Değişiklikler gibi işlevler gerçekleştirilebilir.

Kovan, " Yalnızca OKUYUN Şema " dır . Dolayısıyla, güncelleme, değişiklikler vb. Gibi işlevler bununla çalışmaz. Çünkü tipik bir kümedeki Hive sorgusu birden çok Veri Düğümü üzerinde çalışır. Bu nedenle, verileri birden çok düğümde güncellemek ve değiştirmek mümkün değildir. (0.13'ün altındaki Hive sürümleri)

Ayrıca Hive, " Bir Kez Çok Yazma " kalıbını destekler. Bu, tabloyu ekledikten sonra tabloyu en son Hive sürümlerinde güncelleyebileceğimiz anlamına gelir.

NOT : Ancak, Hive'ın yeni sürümü güncellenmiş özelliklerle birlikte gelir. Hive sürümleri (Hive 0.14), yeni özellikler olarak Güncelle ve Sil seçenekleriyle geliyor

Kovan Mimarisi

Yukarıdaki ekran görüntüsü Apache Hive mimarisini ayrıntılı olarak açıklıyor

Kovan Temelde 3 temel parçadan oluşur

  1. Hive İstemcileri
  2. Hive Hizmetleri
  3. Hive Depolama ve Hesaplama

Kovan Müşterileri:

Hive, farklı türde uygulamalarla iletişim için farklı sürücüler sağlar. Thrift tabanlı uygulamalar için, iletişim için Thrift istemcisi sağlayacaktır.

Java ile ilgili uygulamalar için JDBC Sürücüleri sağlar. Her türlü uygulama dışında ODBC sürücüleri sağladı. Bu İstemciler ve sürücüler sırayla yeniden Hive hizmetlerinde Hive sunucusuyla iletişim kurar.

Kovan Hizmetleri:

Hive ile müşteri etkileşimleri, Hive Hizmetleri aracılığıyla gerçekleştirilebilir. Müşteri, Hive'da sorgu ile ilgili herhangi bir işlem gerçekleştirmek isterse, Hive Hizmetleri aracılığıyla iletişim kurması gerekir.

CLI, DDL (Veri tanımlama Dili) işlemleri için Hive hizmeti görevi gören komut satırı arayüzüdür. Tüm sürücüler, yukarıdaki mimari şemasında gösterildiği gibi Hive sunucusuyla ve Hive hizmetlerindeki ana sürücüyle iletişim kurar.

Hive hizmetlerinde bulunan sürücü, ana sürücüyü temsil eder ve her tür JDBC, ODBC ve diğer istemciye özel uygulamaları iletir. Sürücü, farklı uygulamalardan gelen bu istekleri daha ileri işlemler için meta depolamaya ve alan sistemlerine işleyecektir.

Kovan Depolama ve Hesaplama:

Meta mağaza, Dosya sistemi ve Job Client gibi Hive hizmetleri sırayla Hive depolama ile iletişim kurar ve aşağıdaki işlemleri gerçekleştirir

  • Hive'da oluşturulan tabloların meta veri bilgileri Hive "Meta depolama veritabanı" nda saklanır.
  • Sorgu sonuçları ve tablolara yüklenen veriler, HDFS üzerindeki Hadoop kümesinde saklanacaktır.

İş yürütme akışı:

Yukarıdaki ekran görüntüsünden Hadoop ile Hive'daki İş yürütme akışını anlayabiliriz

Hive'daki veri akışı şu şekilde davranır;

  1. Kullanıcı Arayüzünden Sorgu Yürütme (Kullanıcı Arayüzü)
  2. Sürücü planı almak için Compiler ile etkileşim halindedir. (Burada plan, sorgu yürütme ile ilgilidir) süreci ve bununla ilgili meta veri bilgi toplama
  3. Derleyici, yürütülecek bir iş için plan oluşturur. Meta veri talebi almak için Meta mağaza ile iletişim kuran derleyici
  4. Meta mağaza, meta veri bilgilerini derleyiciye geri gönderir
  5. Sorguyu yürütmek için önerilen planla Sürücü ile iletişim kuran derleyici
  6. Sürücü Yürütme planlarını Yürütme motoruna gönderme
  7. Yürütme Motoru (EE), sorguyu işlemek için Hive ve Hadoop arasında bir köprü görevi görür. DFS işlemleri için.
  • EE, tablolarda depolanan değerleri almak için önce Ad Düğümü ve ardından Veri düğümleriyle bağlantı kurmalıdır.
  • EE, istenen kayıtları Veri Düğümlerinden alacak. Tabloların gerçek verileri yalnızca veri düğümünde bulunur. Ad Düğümünden iken, yalnızca sorgu için meta veri bilgilerini alır.
  • Belirtilen sorgu ile ilgili veri düğümlerinden gerçek verileri toplar
  • Yürütme Motoru (EE), DDL (Veri Tanımlama Dili) işlemlerini gerçekleştirmek için Hive'da bulunan Meta mağaza ile iki yönlü iletişim kurar. Burada CREATE, DROP ve ALTERING tabloları ve veritabanları gibi DDL işlemleri yapılır. Meta mağaza, yalnızca veritabanı adı, tablo adları ve sütun adları hakkındaki bilgileri depolar. Bahsedilen sorgu ile ilgili verileri alacaktır.
  • Yürütme Motoru (EE) sırayla, sorguyu Hadoop dosya sisteminin üstünde yürütmek için Ad düğümü, Veri düğümleri ve iş izleyici gibi Hadoop arka plan yordamları ile iletişim kurar
  1. Sürücüden sonuçlar alınıyor
  2. Sonuçları Yürütme motoruna gönderme. Sonuçlar, veri düğümlerinden EE'ye getirildiğinde, sonuçları sürücüye ve kullanıcı arayüzüne (ön uç) geri gönderecektir.

Hive Yürütme motoru aracılığıyla Hadoop dosya sistemi ve arka plan yordamları ile sürekli iletişim halindedir. İş akışı diyagramındaki noktalı ok, Hadoop arka plan yordamları ile Yürütme motoru iletişimini gösterir.

Farklı Kovan modları

Hive, Hadoop'taki veri düğümlerinin boyutuna bağlı olarak iki modda çalışabilir.

Bu modlar,

  • Yerel mod
  • Harita küçültme modu

Yerel mod ne zaman kullanılır:

  • Hadoop, bir veri düğümüne sahip sahte modda kuruluysa, bu modda Hive'ı kullanırız
  • Veri boyutu, tek yerel makineyle sınırlı olarak daha küçükse, bu modu kullanabiliriz
  • Yerel makinede bulunan daha küçük veri kümelerinde işlem çok hızlı olacaktır

Harita küçültme modu ne zaman kullanılır:

  • Hadoop birden fazla veri düğümüne sahipse ve veriler farklı düğümler arasında dağıtılırsa, bu modda Hive'ı kullanırız
  • Büyük miktarda veri kümesinde performans gösterecek ve sorgu paralel olarak yürütülecektir.
  • Büyük veri kümelerinin daha iyi performansla işlenmesi bu mod aracılığıyla gerçekleştirilebilir.

Hive'da, bu özelliği Hive'ın hangi modda çalışabileceğini belirtecek şekilde ayarlayabiliriz? Varsayılan olarak, Harita Azaltma modunda çalışır ve yerel mod için aşağıdaki ayara sahip olabilirsiniz.

Hive yerel mod setinde çalışacak

SET mapred.job.tracker = yerel;

Hive 0.7 sürümünden itibaren, harita azaltma işlerini otomatik olarak yerel modda çalıştırmak için bir modu destekler.

Hive Server2 (HS2) nedir?

HiveServer2 (HS2), aşağıdaki işlevleri gerçekleştiren bir sunucu arabirimidir:

  • Uzak istemcilerin Hive'a karşı sorgu yürütmesini sağlar
  • Bahsedilen sorguların sonuçlarını alın

En son sürümden itibaren Thrift RPC'ye dayalı bazı gelişmiş özelliklere sahiptir;

  • Çok istemcili eşzamanlılık
  • Doğrulama

Özet:

Hive, Hadoop ekosisteminin üzerinde yer alan bir ETL ve veri ambarı aracıdır ve yapılandırılmış ve yarı yapılandırılmış verileri işlemek için kullanılır.

  • Hive, Hadoop ekosisteminde bulunan bir veritabanıdır ve DDL ve DML işlemlerini gerçekleştirir ve verilerin daha iyi sorgulanması ve işlenmesi için HQL gibi esnek sorgu dili sağlar.
  • Belirli sınırlamaları olan RDMS ile karşılaştırıldığında pek çok özellik sağlar.

Kullanıcı gereksinimlerini karşılamak için kullanıcıya özel mantık için.

  • Özel tanımlı komut dosyaları ve Kullanıcı tanımlı işlevler yazma ve dağıtma seçeneği sunar.
  • Ek olarak, depolamaya özgü mantık için bölümler ve kovalar sağlar.