Hive nedir? ArchiYapı ve Modlar

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
  • Devasa veri kümelerinin analizi

Hive'ın önemli özellikleri

  • Hive'da öncelikle tablolar ve veritabanları oluşturulmakta ve daha sonra bu tablolara veriler yüklenmektedir.
  • 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, Harita Azaltma, UDF'ler gibi optimizasyon ve kullanılabilirlik özelliklerine sahip değildir ancak Hive çerçevesinde bulunur. Sorgu optimizasyonu, performans açısından sorgu yürütmenin etkili bir yolunu ifade eder.
  • Hive'ın SQL'den esinlenen dili, kullanıcıyı Map Reduce programlamanı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. Dolayısıyla Hive, belirli sorgulardaki performansı artırmak amacıyla verileri "bölümlemek" için dizin yapılarını kullanabilir.
  • Hive'ın yeni ve önemli bir bileşeni, yani şema bilgilerini depolamak için kullanılan Metastore. Bu Metastore genellikle ilişkisel bir veritabanında bulunur. Aşağıdaki yöntemleri kullanarak Hive ile etkileşime girebiliriz:
    • Web GUI
    • Java Veritabanı Bağlantısı (JDBC) arayüzü
  • Çoğu etkileşim genellikle bir komut satırı arayüzü (CLI) üzerinden gerçekleşir. Hive, Hive Sorgu Dili'ni (HQL) kullanarak Hive sorguları yazmak için bir CLI sağlar
  • Genel olarak HQL sözdizimi şuna benzer: SQL Çoğu veri analistinin aşina olduğu sözdizimi. Aşağıdaki Örnek sorgu, belirtilen tablo adında bulunan tüm kayıtları görüntüler.
    • Örnek sorgu : Arasından * seçeneğini seçin
  • Hive dört dosya formatını destekler: TEXTFILE, SEQUENCEFILE, ORC ve RCFILE (Sütunlu Dosyayı Kaydet).
  • Tek kullanıcılı meta veri depolama için Hive, derby veritabanını kullanır ve birden fazla kullanıcılı Meta Veri veya paylaşılan Meta Veri durumu için Hive, MYSQL'i kullanır.

kurulum için MySQL veritabanı olarak ve Meta-veri bilgilerini kontrol etmek için depolamak için Öğretici “HIVE ve MYSQL Kurulumu ve Konfigürasyonu”

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 sorgusunun yürütülmesi, otomatik olarak oluşturulan harita azaltıcı İşler serisi gibi olacaktır.
  • Hive, istemci sorguyu yürüttüğünde verilerin kolayca alınması için bölüm ve paket kavramlarını destekler.
  • Hive, veri temizleme, filtreleme vb. için özel özel UDF'yi (Kullanıcı Tanımlı İşlevler) destekler. Programcıların gereksinimlerine göre Hive UDF'leri tanımlanabilir.

Hive ve İlişkisel Veritabanları

Hive'ı kullanarak İlişkisel Veritabanlarında elde edilemeyen bazı tuhaf işlevleri gerçekleştirebiliriz. Petabayt cinsinden büyük miktarda verinin saniyeler içinde sorgulanması ve sonuç alınması önemlidir. Ve Hive bunu oldukça verimli bir şekilde yapıyor, sorguları hızlı işliyor ve saniyeler içinde sonuç üretiyor.

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

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

İlişkisel veritabanları “READ'de Şema ve Yazmada Şema“. Önce bir tablo oluşturup ardından ilgili tabloya veri ekleme. İlişkisel veritabanı tablolarında Ekleme, Güncelleme ve Değişiklik gibi işlevler gerçekleştirilebilir.

Kovan “Yalnızca READ'deki şema“. Yani güncelleme, değişiklik vb. işlevler bununla çalışmaz. Çünkü tipik bir kümedeki Hive sorgusu birden fazla Veri Düğümü üzerinde çalışır. Bu nedenle birden fazla düğümdeki verileri güncellemek ve değiştirmek mümkün değildir. (0.13'ün altındaki Hive sürümleri)

Ayrıca Hive şunu destekliyor:ÇOK OKUYUN BİR KEZ YAZIN" model. 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 geliyor. Hive versiyonları (Hive 0.14) yeni özellikler olarak Güncelle ve Sil seçenekleriyle karşımıza çıkıyor

kovan Archidoku

kovan Archidoku

Yukarıdaki ekran görüntüsü şunları açıklıyor Apache Hive mimarisinin detayları

Kovan Temel Olarak 3 Temel Parçadan Oluşur

  1. Hive İstemcileri
  2. Kovan Hizmetleri
  3. Kovan Depolama ve Bilgi İşlem

Hive Müşterileri:

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

Her Ticaretçi İçin Mükemmellik Java ilgili uygulamalar için JDBC Sürücüleri sağlar. ODBC sürücüleri dışında her türlü uygulama sağlanır. Bu İstemciler ve sürücüler, Hive hizmetlerinde Hive sunucusuyla tekrar iletişim kurar.

Kovan Hizmetleri:

Hive ile müşteri etkileşimleri Hive Hizmetleri aracılığıyla gerçekleştirilebilir. İstemci Hive'da sorguyla ilgili herhangi bir işlem gerçekleştirmek istiyorsa Hive Hizmetleri aracılığıyla iletişim kurması gerekir.

CLI, DDL (Veri Tanımlama Dili) işlemleri için Hive hizmeti gibi davranan komut satırı arayüzüdür. Tüm sürücüler, yukarıdaki mimari diyagramı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 özgü uygulamalarla iletişim kurar. Sürücü, farklı uygulamalardan gelen bu istekleri daha ileri işlemler için meta depoya ve saha sistemlerine işleyecektir.

Hive Depolama ve Bilgi İşlem:

Meta deposu, Dosya sistemi ve İş İstemcisi gibi Hive hizmetleri sırayla Hive depolamasıyla iletişim kurar ve aşağıdaki eylemleri gerçekleştirir

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

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

İş Gerçekleştirme Akışı

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

Hive'daki veri akışı aşağıdaki kalıpta davranır;

  1. Kullanıcı Arayüzünden (Kullanıcı Arayüzü) Sorgu Yürütme
  2. Sürücü planı almak için Derleyici ile etkileşimde bulunuyor. (Burada plan, sorgu yürütme anlamına gelir) süreci ve bununla ilgili meta veri bilgilerinin toplanması
  3. Derleyici yürütülecek bir işin planını oluşturur. Derleyici meta veri isteği almak için Meta deposuyla iletişim kuruyor
  4. Meta deposu meta veri bilgilerini derleyiciye geri gönderir
  5. Derleyici, sorguyu yürütmek için önerilen planla Driver ile iletişim kuruyor
  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 saklanan değerleri almak için önce Ad Düğümüyle ve ardından Veri düğümleriyle iletişime geçmelidir.
  • EE, Veri Düğümlerinden istenen kayıtları getirecek. Tabloların gerçek verileri yalnızca veri düğümünde bulunur. Ad Düğümünden yalnızca sorguya ilişkin meta veri bilgilerini getirir.
  • Bahsedilen sorguyla 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 deposuyla çift yönlü iletişim kurar. Burada CREATE, DROP ve ALTERING tabloları ve veritabanları gibi DDL işlemleri yapılır. Meta deposu yalnızca veritabanı adı, tablo adları ve sütun adlarıyla ilgili bilgileri depolayacaktır. Bahsedilen sorguyla ilgili verileri getirecektir.
  • Yürütme Motoru (EE), sorguyu Hadoop dosya sisteminin üstünde yürütmek için Ad düğümü, Veri düğümleri ve iş izleyici gibi Hadoop arka plan programlarıyla iletişim kurar.
  1. Sürücüden sonuçlar alınıyor
  2. Sonuçların Yürütme motoruna gönderilmesi. Sonuçlar veri düğümlerinden EE'ye alındıktan sonra, sonuçlar sürücüye ve kullanıcı arayüzüne (ön uç) geri gönderilecektir.

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

Hive'ın farklı 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ılmalı:

  • Hadoop tek bir veri düğümüne sahip olarak sahte modda kuruluysa bu modda Hive kullanırız
  • Eğer veri boyutu tek yerel makine ile sınırlı olacak şekilde 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'ta birden fazla veri düğümü varsa ve veriler farklı düğümlere dağıtılıyorsa bu modda Hive'ı kullanırız
  • Büyük miktarda veri kümesi üzerinde çalışacak ve sorgu paralel olarak yürütülecek
  • Bu mod sayesinde büyük veri setlerinin daha iyi performansla işlenmesi sağlanabilir.

Hive'da, Hive'ın hangi modda çalışabileceğini belirtmek için bu özelliği ayarlayabiliriz. Varsayılan olarak, Map Reduce modunda çalışır ve yerel mod için aşağıdaki ayarı yapabilirsiniz.

Hive yerel modda çalışacak şekilde ayarlandı

SET mapred.job.tracker=yerel;

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

Hive Sunucusu2 (HS2) nedir?

HiveServer2 (HS2), aşağıdaki işlevleri gerçekleştiren bir sunucu arayüzüdür:

  • Uzak istemcilerin Hive'a karşı sorgu yürütmesine olanak tanır
  • 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 ekosistemi üzerinde çalışan, yapılandırılmış ve yarı yapılandırılmış verilerin işlenmesinde kullanılan bir ETL ve veri ambarı aracıdır.

  • Hive, Hadoop ekosisteminde bulunan, DDL ve DML işlemlerini gerçekleştiren, verilerin daha iyi sorgulanması ve işlenmesi için HQL gibi esnek sorgu dilleri sağlayan bir veritabanıdır.
  • Belirli sınırlamaları olan RDMS'ye kıyasla pek çok özellik sağlar.

İstemci gereksinimlerini karşılamak amacıyla 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.
  • Ayrıca depolamaya özgü mantıklar için bölümler ve paketler sağlar.