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.

  • ???? Ne olduğunu: HDFS'de depolanan dosyalara tablolar, satırlar ve sütunlar ekleyen bir ETL ve veri ambarı aracı.
  • 🗂️ Metastore: Şema bilgileri, bir kullanıcı için Derby tarafından ve diğer kullanıcılar için de diğer bir kullanıcı tarafından desteklenen ilişkisel bir meta veri deposunda bulunur. MySQL Paylaşımlı erişim için.
  • 🆚 Bir RDBMS'ye karşı: Hive, okuma sırasında şema doğrulaması yapar, yatay ölçeklenebilir ve veritabanının ele aldığı satır düzeyindeki güncellemeler yerine büyük taramaları tercih eder.
  • 🏗️ Üç katman: Müşteriler, hizmetler ve depolama, mimariyi oluştururken, sürücü derleyiciyi, meta veri deposunu ve yürütme motorunu koordine eder.
  • 🔀 İki mod: Yerel mod, tek bir veri düğümü ve küçük dosyalar için uygundur, MapReduce modu ise yürütmeyi çok düğümlü bir küme genelinde yayar.
  • 🔌 HiveServer2: Thrift tabanlı HS2 arayüzü, uzaktan oturumlar için çoklu istemci eşzamanlılığı ve kimlik doğrulama özelliği ekler.

Hive mimarisi ve modları

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ı.

Apache Hive mimarisi diyagramı; istemcileri, hizmetleri, depolamayı ve hesaplamayı göstermektedir.

Hive esas olarak 3 temel bölümden oluşur:

  1. Hive istemcileri
  2. Kovan hizmetleri
  3. 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.

Hive iş yürütme akış diyagramı tracKullanıcı arayüzünden DataNodes'a bir sorgu gönderme

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.

  1. Kullanıcı arayüzünden (UI) sorgu çalıştırma
  2. 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.)
  3. 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.
  4. Meta veri deposu, meta veri bilgilerini derleyiciye geri gönderir.
  5. Derleyici, sorguyu yürütmek için önerilen planı sürücüye iletir.
  6. Sürücü, yürütme planlarını yürütme motoruna gönderir.
  7. 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.
  1. Sürücüden sonuçlar alınıyor.
  2. 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.

SSS

Hive, dağıtılmış işler aracılığıyla büyük tabloları tarayan bir toplu sorgu katmanıdır. HBase ise tek satırlarda milisaniyelik rastgele okuma ve yazma işlemleri için tasarlanmış bir NoSQL veri deposudur. Zıt erişim modellerini çözerler ve genellikle yan yana çalışırlar.

Hive, MapReduce, Apache Tez veya Apache üzerinde çalışır. SparkMapReduce'un kullanımı sonlandırıldı ve Hive 4.x varsayılan olarak Tez'i kullanıyor; bu da ara sonuçları aşamalar arasında diske yazmak yerine bellekte tutuyor.

Yönetilen bir tablo, Hive'a meta verilerin ve dosyaların sahipliğini verir, bu nedenle silin.ping Veri ambarı dizinindeki verileri siler. Harici bir tablo yalnızca meta verileri saklar ve bu tablo silinir.ping Bu işlem, altta yatan dosyalara dokunmaz.

Öğrenilen maliyet modelleri, tarama hacmini, birleştirme sırasını ve bölüm budamasını statik tahminlerden daha doğru bir şekilde tahmin etmek için yürütme istatistiklerini planlayıcıya geri besler. Bulut platformları, sıkıştırma ve bölüm düzeni önerileriyle aynı sinyalleri ortaya çıkarır.

Copilot, HiveQL birleştirmelerini, pencere fonksiyonlarını ve taslaklarını oluşturur. Java Yorumdan alınan UDF iskeletleri, tekrarlayan iş yükünü azaltır. Sütun adları, bölümleme anahtarları ve veri türlerinin öncelikle gerçek meta veri deposuyla karşılaştırılması gerekir.

Evet. Hive 0.14, UPDATE ve DELETE işlevlerini ekledi ve sonraki sürümler, işlem tabloları için tam ACID desteği sağladı. Hive 4.x, anlık görüntü izolasyonu ve şema evrimi ile Apache Iceberg tabloları aracılığıyla bunu daha da genişletiyor.

Üçünün de SQL sorguları aynı dosyalar üzerinden işleniyor. Hive, uzun süren toplu işlemleri tercih ediyor ve diğerlerinin okuduğu meta veri deposuna sahip. Spark SQL, karma işlem hatlarına uygundur; Trino ise birden fazla kaynaktan gelen etkileşimli sorguları hedefler.

Evet, büyük ölçüde katalog standardı olmaya devam eden Hive Metastore aracılığıyla. SparkTrino, Presto ve Flink'in hepsi okuma işlemi yapıyor. Hive'ın kendisi ise hâlâ planlanmış toplu dönüşümler ve veri ambarı yüklemeleri gerçekleştiriyor.

Bu yazıyı şu şekilde özetleyin: