Hive nedir? ArchiYapı ve Modlar
⚡ Akıllı Özet
Hive, Hadoop ekosisteminin SQL katmanıdır ve HiveQL ifadelerini, HDFS üzerinde zaten bulunan yapılandırılmış verileri okuyan dağıtılmış işlere dönüştürür; böylece analistler, MapReduce kodunu kendileri yazmak zorunda kalmadan petabayt boyutundaki tabloları sorgulayabilirler.

Hive nedir?
Hive, Hadoop Dağıtılmış Dosya Sistemi (HDFS) üzerine geliştirilmiş bir ETL ve veri ambarı aracıdır. Hive, aşağıdaki gibi işlemleri gerçekleştirmeyi kolaylaştırır:
- Veri kapsülleme
- Anlık sorgular
- Devasa veri kümelerinin analizi
Hive'ın önemli özellikleri
Aşağıdaki noktalar, Hive'ı sıradan bir MapReduce programından ayıran özellikleri açıklamaktadır.
- Hive'da öncelikle tablolar ve veritabanları oluşturulmakta ve daha sonra bu tablolara veriler yüklenmektedir.
- Hive, yalnızca tablolarda depolanan yapılandırılmış verileri yönetmek ve sorgulamak için tasarlanmış bir veri ambarıdır.
- Yapılandırılmış verilerle çalışırken, MapReduce'un UDF'ler gibi optimizasyon ve kullanılabilirlik özellikleri yoktur, ancak Hive çerçevesi bunlara sahiptir. Sorgu optimizasyonu, performans açısından sorgu yürütmenin etkili bir yolunu ifade eder.
- Hive'ın SQL'den esinlenen dili, kullanıcıyı MapReduce programlamasının karmaşıklığından kurtarır. Öğrenmeyi kolaylaştırmak 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 programlama dili düz metin dosyaları üzerinde çalışır. Bu nedenle Hive, dizin yapılarını kullanabilir. “bölünme” Belirli sorgularda performansı iyileştirmek için veri.
- Hive'ın önemli bir bileşeni, şema bilgilerini depolamak için kullanılan metastore'dur. Bu metastore genellikle ilişkisel bir veritabanında bulunur. Hive ile etkileşim kurmak için şu yöntemleri kullanabiliriz:
- Web GUI
- Java Veritabanı Bağlantısı (JDBC) arayüzü
- Çoğu etkileşim komut satırı arayüzü (CLI) üzerinden gerçekleşir. Hive, Hive Sorgu Dili (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 bir 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, bunlar şunlardır: TEXTFILE, SEQUENCEFILE, ORC ve RCFILE (Sütunlu Dosyayı Kaydet).
- Tek kullanıcılı meta veri depolaması için Hive, Derby veritabanını kullanırken, çok kullanıcılı veya paylaşımlı meta veriler için Hive farklı bir veritabanı kullanır. MySQL.
kurulum için MySQL Veritabanı olarak ve meta veri bilgilerini depolamak için, ilgili eğitime göz atın. Hive metastore'u yapılandırmak MySQLBu da şunun devamı niteliğindedir: Hive kurulum kılavuzu.
Hive ile ilgili bazı önemli noktalar:
- HQL ile SQL arasındaki en büyük fark, Hive sorgusunun geleneksel bir veritabanı yerine Hadoop altyapısı üzerinde yürütülmesidir.
- Hive sorgu yürütmesi, otomatik olarak oluşturulan bir dizi işlemden oluşur. Harita indirgeme Meslekler.
- Hive, istemci sorguyu çalıştırdığında verilerin kolayca alınabilmesi için bölümleme ve kova kavramlarını destekler.
- Hive özelleştirmeyi destekler UDF'ler (kullanıcı tanımlı fonksiyonlar) Veri temizleme, filtreleme ve benzeri işlemler için. Programcıların gereksinimlerine göre Hive UDF'leri tanımlanabilir.
Hive ve İlişkisel Veritabanları
Hive, ilişkisel veritabanlarının yapamadığı işlevleri yerine getirir. Veriler petabayt boyutuna ulaştığında, sonuçların saniyeler içinde döndürülmesi önemlidir ve Hive bunu verimli bir şekilde yapar. Başlıca farklar şunlardır:
İlişkisel veritabanları şunlardır: “Okuma sırasında şema ve yazma sırasında şema”Öncelikle bir tablo oluşturulur, ardından bu tabloya veri eklenir. İlişkisel veritabanı tablolarında ekleme, güncelleme ve değiştirme gibi işlemler gerçekleştirilebilir.
Hive “sadece okunabilir şema”Dolayısıyla, güncelleme ve değiştirme gibi işlevler ilk sürümlerde çalışmıyordu, çünkü tipik bir kümedeki bir Hive sorgusu birden fazla DataNode üzerinde çalışıyordu ve bu da verilerin birden fazla düğümde güncellenmesini ve değiştirilmesini imkansız hale getiriyordu (Hive 0.13'ün altındaki sürümler).
Hive ayrıca şunları da destekler: “Çok oku, bir kere yaz” Bu sayede, son sürümlerde bir tabloya veri eklendikten sonra tablo güncellenebiliyor.
NOT: Hive'ın daha yeni sürümleri güncellenmiş özelliklerle birlikte gelir. Hive 0.14, UPDATE ve DELETE özelliklerini yeni özellikler olarak tanıttı ve daha sonraki sürümler tam ACID işlem desteği ekledi.
Aşağıdaki tablo karşılaştırmayı özetlemektedir.
| Görünüş | İlişkisel veritabanı | Apaçi Kovanı |
|---|---|---|
| Şema doğrulaması | Yazma üzerine | Okundu |
| Tipik veri hacmi | Gigabayttan terabayta | Terabayttan petabayta |
| İş yoğunluğu | Satır düzeyinde OLTP okuma ve yazma işlemleri | Tam tarama toplu analizi |
| Sorgu dili | SQL | HQL, SQL'den esinlenilmiş bir lehçedir. |
| infaz | Veritabanı motoru | Dağıtılmış küme işleri |
kovan Archidoku
Aşağıdaki diyagram şunu açıklamaktadır: Apache Hive mimarisinin detayları.
Hive esas olarak 3 temel bölümden oluşur:
- Hive istemcileri
- Kovan hizmetleri
- Hive depolama ve hesaplama
Hive İstemcileri
Hive, farklı uygulama türleriyle iletişim için farklı sürücüler sunar. Thrift tabanlı uygulamalar için ise iletişim amacıyla bir Thrift istemcisi sağlar.
Her Ticaretçi İçin Mükemmellik Java İlgili uygulamalar için JDBC sürücüleri sağlar. Diğer tüm uygulama türleri için ise ODBC sürücüleri sağlar. Bu istemciler ve sürücüler, Hive servislerindeki Hive sunucusuyla iletişim kurar.
Kovan Hizmetleri
İstemcilerin Hive ile etkileşimleri Hive servisleri aracılığıyla gerçekleştirilir. İstemci Hive'da sorguyla ilgili herhangi bir işlem yapmak istiyorsa, Hive servisleri aracılığıyla iletişim kurmalıdır.
CLI, DDL işlemleri için Hive servisi görevi görür. Yukarıdaki mimari diyagramda gösterildiği gibi, tüm sürücüler Hive sunucusu ve Hive servislerindeki ana sürücü ile iletişim kurar.
Hive servislerindeki sürücü, ana sürücüdür: JDBC, ODBC ve diğer istemciye özgü uygulamalarla iletişim kurar, ardından isteklerini daha fazla işleme için meta veri deposuna ve dosya sistemine iletir.
Kovan Depolama ve Bilgi İşlem
Metastore, dosya sistemi ve iş istemcisi gibi Hive hizmetleri, sırasıyla Hive depolama alanıyla iletişim kurar ve aşağıdaki işlemleri gerçekleştirir:
- Hive'da oluşturulan tablolara ilişkin meta veri bilgileri Hive'da saklanır. metastore veritabanı.
- Sorgu sonuçları ve tablolara yüklenen veriler Hadoop kümesinde saklanır. HDFS.
İş yürütme akışı
Aşağıdaki diyagram tracBu, kullanıcı arayüzünden DataNodes'a ve geri dönüşe kadar tek bir sorgudur.
Yukarıdaki diyagramdan, Hadoop ile Hive'da iş yürütme akışını anlayabiliriz. Hive'daki veri akışı aşağıdaki şekilde gerçekleşir.
- Kullanıcı arayüzünden (UI) sorgu çalıştırma
- Sürücü, planı almak için derleyiciyle etkileşime girer. (Burada plan, sorgu yürütme sürecini ve ilgili meta veri bilgilerinin toplanmasını ifade eder.)
- Derleyici, yürütülecek iş için planı oluşturur. Derleyici, meta veri isteğini almak için meta veri deposuyla iletişim kurar.
- Meta veri deposu, meta veri bilgilerini derleyiciye geri gönderir.
- Derleyici, sorguyu yürütmek için önerilen planı sürücüye iletir.
- Sürücü, yürütme planlarını yürütme motoruna gönderir.
- Yürütme motoru (EE), DFS işlemleri de dahil olmak üzere sorguyu işlemek için Hive ve Hadoop arasında bir köprü görevi görür:
- EE, tablolarda saklanan değerleri almak için önce NameNode ile, ardından DataNode'larla iletişime geçer.
- EE, istenen kayıtları DataNode'lardan alır. Gerçek tablo verileri yalnızca veri düğümlerinde bulunur; NameNode'dan yalnızca sorguya ait meta verileri alır.
- Bu, belirtilen sorguyla ilgili veri düğümlerinden gerçek verileri toplar.
- EE, DDL (veri tanımlama dili) işlemleri gerçekleştirmek için metastore ile çift yönlü iletişim kurar; örneğin: OLUŞTUR, SİL ve DEĞİŞTİR Tablolar ve veritabanları üzerinde. Metastore yalnızca veritabanı, tablo ve sütun adlarını saklar.
- EE ise sırasıyla NameNode, DataNodes ve iş gibi Hadoop servisleriyle iletişim kurar. tracHadoop dosya sistemi üzerinde sorguyu çalıştırmak için kullanılan ker.
- Sürücüden sonuçlar alınıyor.
- Sonuçlar yürütme motoruna gönderiliyor. Sonuçlar veri düğümlerinden yürütme motoruna alındıktan sonra, yürütme motoru sonuçları sürücüye ve kullanıcı arayüzüne (ön uç) geri gönderir.
Hive, yürütme motoru aracılığıyla Hadoop dosya sistemi ve onun arka plan süreçleriyle iletişim halinde kalır. Şemadaki noktalı ok bu iletişimi göstermektedir.
Hive'ın farklı modları
Hive, Hadoop'taki veri düğümlerinin boyutuna bağlı olarak iki modda çalışabilir. Bu modlar şunlardır:
- Yerel mod
- MapReduce modu
Yerel modu ne zaman kullanmalı?
- Hadoop, tek bir veri düğümüyle sözde dağıtılmış modda kurulmuşsa, bu modda Hive'ı kullanırız.
- Veri boyutu tek bir yerel makineyle sınırlı kalacak kadar küçükse, bu modu kullanabiliriz.
- Yerel makinede bulunan daha küçük veri kümelerinde işlem çok hızlı olacaktır
MapReduce modu ne zaman kullanılır?
- Hadoop'un birden fazla veri düğümü varsa ve veriler farklı düğümler arasında dağıtılmışsa, bu modda Hive'ı kullanırız.
- Büyük miktarda veri üzerinde işlem yapar ve sorgu paralel olarak yürütülür.
- Bu mod sayesinde büyük veri setlerinin daha iyi performansla işlenmesi sağlanabilir.
Hive'da, Hive'ın hangi modda çalışması gerektiğini belirten bir özellik ayarlayabiliriz. Varsayılan olarak MapReduce modunda çalışır ve yerel mod için aşağıdaki ayarı kullanabilirsiniz:
SET mapred.job.tracker=local;
Hive 0.7 sürümünden itibaren, MapReduce işlerini otomatik olarak yerel modda çalıştıran bir modu desteklemektedir. Hive 4.x'te varsayılan motor Apache Tez'dir, bu nedenle bu özellik eski MapReduce yoluna uygulanır.
Hive Sunucusu2 (HS2) nedir?
HiveServer2 (HS2), aşağıdaki işlevleri yerine getiren bir sunucu arayüzüdür:
- Uzak istemcilerin Hive'a karşı sorgu yürütmesine olanak tanır
- Bu sorguların sonuçlarını getirir.
Mevcut sürümler, Thrift RPC'ye dayalı olarak aşağıdaki gibi gelişmiş özellikler ekler:
- Çok istemcili eşzamanlılık
- Doğrulama
HS2, Beeline'ın ve her JDBC veya ODBC oturumunun arkasında yer alır; bu nedenle tek kullanıcılı Hive CLI'nin yerini almıştır. HiveQL operatörleri ve yerleşik fonksiyonlar Referans, doğal olarak atılacak bir sonraki adımdır.


