Apache Hive Mimarisi ve Komutları: Modlar, Özellikler ve Uygulamalar
Yayınlanan: 2021-06-30İçindekiler
Hive nedir?
Apache kovanı, dağıtılmış işleme ve veri analitiği için Facebook tarafından geliştirilen açık kaynaklı bir veri depolama aracıdır. Hadoop Dağıtılmış Dosya Sistemi (HDFS) üzerinde geliştirilmiştir. Hive, Hadoop'taki verilere yapı yansıtmak için bir mekanizma sağlar. Bu verileri sorgulamak için HiveQL (HQL) adlı SQL benzeri bir dil kullanılır. Hive'daki tablolarla ilişkisel bir veritabanındaki tablolar arasında bir benzerlik vardır. Kovan sorguları, SQL'e aşina olan herkes tarafından kolayca yazılabilir.
Hive'ın birkaç özelliği şunlardır:
- Şema bilgilerinin bir veritabanına ve işlenen verilerin HDFS'ye depolanması.
- OLAP için tasarlanmıştır.
- Sorgulama dili, SQL'e benzeyen HiveQL veya HQL'dir.
- Hızlı, tanıdık, ölçeklenebilir ve genişletilebilir.
Hive'ın Kullanım Alanları
- Apache Hive dağıtılmış depolama alanıdır.
- Kullanıcıların verileri kolayca çıkarmasını, dönüştürmesini ve yüklemesini sağlayan araçlar sağlanmıştır.
- Yapıyı sağlamak için çeşitli veri formatları sunulmaktadır.
- Hadoop Dağıtılmış Dosya Sisteminde (HDFS) depolanan dosyalara Hive tarafından erişilebilir.
Hive Komutları
Kovan komutları şunlardır :
- Veri Tanımlama Dili (DDL): Veritabanındaki tablolar ve diğer nesneler bu komutlar aracılığıyla oluşturulur ve değiştirilir.
- CREATE: Tablo veya Veritabanı oluşturmak için kullanılır.
- GÖSTER: Veritabanı, Tablo, Özellikler vb. göstermek için kullanılır.
- ALTER: Mevcut tablo üzerinde değişiklik yapmak için kullanılır.
- AÇIKLAMA: Tablo sütunlarını açıklar.
- TRUNCATE: Tablo satırlarını kalıcı olarak kesmek ve silmek için kullanılır.
- DELETE: Tablo verilerini siler, ancak geri yüklenebilir.
- Veri Manipülasyon Dili (DML): Veritabanındaki verileri almak, depolamak, değiştirmek, silmek, eklemek ve güncellemek için kullanılır.
- LOAD, INSERT İfadeleri için Sözdizimi
Verileri <LOCAL> inpath <file path> [tablename] tablosuna YÜKLE
- Verilerin yüklenmesinden sonra, verileri almak için veri işleme komutları kullanılır.
- Count toplama işlevi, bir tablodaki kayıtların toplam sayısını saymak için kullanılır.
- "create external" anahtar sözcüğü bir tablo oluşturmak için kullanılır ve tablonun oluşturulacağı konumu sağlar. HARİCİ tablo, depolanması için herhangi bir HDFS konumuna işaret eder.
- Veri Hive tablosunu yüklemek için ekleme komutları kullanılır. "Ekle üzerine yazma", mevcut verilerin üzerine yazmak için kullanılır ve "insert into", verileri mevcut bir veriye eklemek için kullanılır.
- Bir tablo, "partitioned by" komutuyla bölümlere, "clustered by" komutuyla da kovalara bölünür.
- Dinamik bölüm etkinleştirilmediğinden verilerin eklenmesi hatalara neden olur. Bu nedenle, Hive kabuğunda aşağıdaki parametreler ayarlanmalıdır.
kovan.exec.dynamic.partition=true olarak ayarlayın;
Dinamik bölümleri etkinleştirmek için varsayılan olarak false
kovan.exec.dynamic.partition.mode=nonstrict olarak ayarlayın;
- 'Tabloyu Bırak' komutu, bir tablo için verileri ve meta verileri siler
- Toplama: Sözdizimi:
Tablo adından sayıyı (DISTINCT kategorisi) seçin;
Komut, 'cate' tablolarının farklı kategorilerini sayacaktır.
- Gruplandırma: Sözdizimi:
Kategoriye göre txt kayıtları grubundan kategori, toplam( miktar) seçin
Sonuç kümesi bir veya daha fazla sütun halinde gruplandırılacaktır.
- Join Operation: Her sütun için ortak değerleri kullanarak iki tablodaki alanları birleştirmek için gerçekleştirin.
- Sol dış birleştirme: Tablo A ve B için, sol dış birleştirme, birleştirme koşulu "sağ" tabloda (B) eşleşen herhangi bir kayıt bulamasa bile, "sol" tablonun (A) tüm kayıtlarını içerecektir.
- Sağ Dış Birleştirme: “Sağ” tablodaki (B) her satır, birleştirilmiş tabloda en az bir kez görünecektir.
- Tam birleştirme: Birleştirilmiş tablo her iki tablodaki tüm kayıtları içerecektir Birleştirilmiş tablo her iki tablodaki tüm kayıtları içerecektir.
kovan mimarisi
Apache kovanı mimarisi Şekil 1'de gösterilmektedir .
Ana Bileşenlerin Listesi
Kovan mimarisinin ana bileşenleri şunlardır:
1. Kovan istemcisi
Java, Python, C++ vb. dillerde yazılan farklı uygulamalar, Hive tarafından sağlanan farklı sürücüler kullanılarak iletilir. Tercihe göre herhangi bir dilde yazılabilir. İstemciler ve sunucular sırayla Hive hizmetlerinde Hive sunucusuyla iletişim kurar.
Çoğunlukla üç türe ayrılırlar:
- Thrift İstemcisi: Bir Thrift istemcisinden bir istek sunmak için Apache Thrift'e dayanır. Thrift istemcisi, Thrift tabanlı uygulamalar için iletişim için kullanılacaktır.
- JDBC İstemcisi: JDBC, Java ile ilgili uygulamalar için sağlanır. Java uygulamaları, JDBC sürücüsü kullanılarak Hive'a bağlanır. Ayrıca Hive sunucusuyla iletişim kurmak için Thrift'i kullanır.
- ODBC İstemcisi: ODBC protokolüne dayalı uygulamaların ODBC sürücüleri aracılığıyla Hive'a bağlanmasına izin verilir. JDBC'ye benzer şekilde, Hive sunucusuyla iletişim kurmak için Thrift'i kullanır.
2. Kovan Hizmetleri
Hive hizmetleri, Hive'ın Müşterilerle etkileşimleri için araçlar sağlar. Müşteri tarafından gerçekleştirilmesi gereken sorguyla ilgili tüm işlemler, Hire hizmetleri aracılığıyla iletilmelidir. Veri Tanımlama Dili (DDL) işlemleri için CLI, Hive hizmeti olarak hareket eder.
Tüm sürücülerin Hive sunucusuyla ve ardından Hive hizmetlerinde ana sürücüyle iletişim kurması gerekir. Hive hizmetlerindeki sürücüler, Müşteriye özel uygulamalar ve her türlü JDBC, ODBC, vb. ile iletişim kuran ana sürücüyü temsil eder. Farklı uygulamalardan gelen talepler, sürücü tarafından daha sonra işlenecek olan metastore ve saha sistemlerine işlenir.
Hive tarafından sunulan hizmetler şunlardır:
- Beeline: Beeline, kullanıcının sorgularını sisteme gönderebileceği bir komut kabuğudur. HiveServer2 tarafından desteklenir. SQLLINE CLI tabanlı bir JDBC istemcisidir.
- Kovan Sunucusu 2: İstemcilerin kovana karşı sorguları yürütmesine izin verilir. HiveServer1'in halefi, birden çok istemciden birden çok sorgunun yürütülmesine izin verir. JDBC ve ODBC gibi açık API istemcileri için en iyi desteği sağlar.
- Hive Driver: Kullanıcı, HiveQL ifadelerini komut kabuğu aracılığıyla Hive sürücüsüne gönderir. Sorguyu derleyiciye gönderir ve sorgu için oturum tanıtıcıları oluşturur.
- Hive derleyicisi: Hive derleyicisi sorguyu geçirmek için kullanılır. Hive derleyicisi, metadepoda depolanan meta verileri kullanarak, farklı sorgu blokları ve ifadeleri üzerinde anlamsal analiz ve tür denetimi gerçekleştirir. Daha sonra DAG (Yönlendirilmiş Döngüsel Grafik) olan derleyici tarafından bir yürütme planı oluşturulur. DAG'nin her aşaması bir meta veri işlemidir, HDFS üzerinde işlemdir veya bir eşleme/küçültme işidir.
- Optimize Edici: Optimize edicinin ana rolü, yürütme planında dönüştürme işlemlerini gerçekleştirmektir. Görevleri bölerek verimliliği ve ölçeklenebilirliği artırır.
- Yürütme Motoru : Derleme ve optimizasyon adımlarının tamamlanmasından sonra derleyici tarafından oluşturulan yürütme planını yürüten yürütme motorunun rolüdür. Plan, bağımlılık sırasına göre Hadoop kullanılarak yürütülür.
- Metastore : Metastore, genellikle tabloların ve bölümlerin yapısıyla ilgili metadata bilgilerini depolayan ilişkisel bir veritabanıdır. Sütun ve sütun türlerinin bilgilerini de içeren merkezi bir depodur. Serileştirici ve seri hale getirici ile ilgili bilgiler, verileri depolayan HDFS dosyaları ile birlikte okuma/yazma işlemleri için gerekli olan Metastore'da da saklanır. Hive meta verilerini sorgulamak ve işlemek için Metastore tarafından bir Thrift arabirimi sağlanır.
Metastore iki modda yapılandırılabilir:
- Uzak: Bu mod Java dışı uygulamalar için kullanışlıdır ve uzak modda metastore bir Thrift hizmetidir.
- Gömülü: Bu modda, istemci, JDBC aracılığıyla metastore ile doğrudan etkileşim kurabilir.
- HCatalog: Hadoop için tablo ve depolama yönetimi katmanı HCatalog'dur. Izgarada veri okumak ve yazmak için Pig, MapReduce vb. gibi farklı veri işleme araçları mevcuttur. Hive metastore'unun üzerine inşa edilen Hive metastore'un tablo verileri, diğer veri işleme araçlarına maruz bırakılır.
- WebHCat: WebHCat, HCatalog için bir HTTP arabirimi ve REST API'dir. Hive meta veri işlemlerini gerçekleştirir ve Hadoop MapReduce (veya YARN), Pig, Hive işlerini çalıştırma hizmeti sunar.
3. İşleme ve Kaynak Yönetimi
Sorguların yürütülmesi, dahili bir MapReduce çerçevesi tarafından gerçekleştirilir.
MapReduce çerçevesi, büyük ticari donanım kümelerinde büyük miktarda veriyi işlemek için bir yazılım çerçevesidir. Veriler parçalara bölünür ve ardından harita azaltma görevleri tarafından işlenir.
4. Dağıtılmış Depolama
Hive hizmetleri, aşağıdaki eylemleri gerçekleştirmek için Hive deposuyla iletişim kurar:
- Hive "Meta depolama veritabanı", Hive'da oluşturulan tabloların meta veri bilgilerini tutar.
- HDFS'deki Hadoop kümesi, Sorgu sonuçlarını ve tablolara yüklenen verileri depolayacaktır.
Farklı Kovan Modları
Hive, verilerin boyutuna bağlı olarak iki modda çalışabilir.
- Yerel mod
Yerel Hive modu şu durumlarda kullanılır:
- Kurulan Hadoop'un bir veri düğümü vardır ve sözde modda kurulur.
- Tek bir yerel makinenin veri boyutu daha küçüktür.
- Mevcut daha küçük veri kümeleri nedeniyle yerel makinelerde hızlı işleme.
- Harita küçültme modu
Hive'ın Harita küçültme modu şu durumlarda kullanılır:
- Hadoop, farklı düğümler arasında dağıtılmış verilere sahip birden çok veri düğümüne sahiptir.
- Veri boyutu daha büyük ve sorgunun paralel yürütülmesi gerekiyor.
- Büyük veri kümeleri daha iyi performansla işlenebilir.
Kovanın Özellikleri
- Tablolar ve veritabanları oluşturulduktan sonra veriler tablolara yüklenir.
- Yalnızca tablolarda depolanan yapılandırılmış veriler Hive tarafından yönetilebilir ve sorgulanabilir.
- Hive çerçevesi, Harita Azaltma'da bulunmayan yapılandırılmış verilerle uğraşırken optimizasyon ve kullanılabilirlik özelliklerine sahiptir.
- Kullanım kolaylığı açısından, Hive SQL'den ilham alan dil, Map Reduce'nin karmaşık programlama diline kıyasla daha basit bir yaklaşımdır. Hive'da tanıdık tablolar, satırlar, sütunlar vb. kavramlar kullanılır.
- Sorguların performansını artırmak için Hive, bir dizin yapısı kullanarak verileri bölümleyebilir.
- Hive, ilişkisel bir veritabanında bulunan ve şema bilgilerini saklayan “Metastore” adı verilen önemli bir bileşen içerir. Hive ile etkileşim kurmak için iki yöntem kullanılabilir: Web GUI ve Java Veritabanı Bağlantısı (JDBC) arayüzü.
- Etkileşimlerin çoğu için bir komut satırı arabirimi (CLI) kullanılır. CLI, Hive Query Language (HQL) kullanarak Hive sorgularını yazmak için kullanılır.
- HQL sözdizimi, SQL sözdizimine benzer.
- Hive, dört dosya biçimini destekler; TEXTFILE, SEQUENCEFILE, ORC ve RCFILE (Kayıt Sütun Dosyası).
Çözüm
Apache Hive, Hive istemcileri, Hive hizmetleri, İşleme çerçevesi ve Kaynak Yönetimi ve Dağıtılmış Depolama gibi ana bileşenlerden oluşan açık kaynaklı bir veri ambarı aracıdır.
Yapıların ve yarı yapılandırılmış verilerin işlenmesi için Hadoop ekosisteminin üzerine inşa edilmiştir. Hive tarafından sağlanan kullanıcı arayüzü, kullanıcının sorgularını Hive Query Language (HQL) ile göndermesini sağlar. Bu, bir yürütme planı oluşturmak için derleyiciye iletilir. Plan nihayet yürütme motoru tarafından yürütülür.
Büyük Veri hakkında daha fazla bilgi edinmek istiyorsanız, çalışan profesyoneller için tasarlanmış ve 7+ vaka çalışması ve proje sağlayan, 14 programlama dili ve aracını kapsayan, pratik uygulamalı Büyük Veride Yazılım Geliştirme Uzmanlığı programında PG Diplomamıza göz atın çalıştaylar, en iyi firmalarla 400 saatten fazla titiz öğrenim ve işe yerleştirme yardımı.
upGrad'daki diğer Yazılım Mühendisliği Kurslarımıza göz atın.