Merhabalar bu yazımda Hadoop ailesinin önemli bir üyesi olan Hive ile ilgili bir seri başlatmak istedim.Seri, ilk olarak teorik sonra teknik olarak iki dala ayrılan bir yazı dizisi olacak.Teorik kısım Hive manifestosunun temel ve detay özelliklerinden oluşuyor.O zaman teorik kısma büyük veri ile giriş yapalım.
‘Büyük Veri’ terimi, büyük veri kümeleri içeren koleksiyonlar için kullanılır. Geleneksel veri yönetim sistemlerinde Büyük Veriyi işlemek zordur .Bu nedenle Hadoop, ticari donanımlarda veri depolama ve işleme için devasa ölçeklendirme ve hata toleransı yetenekleri sağlar. Hive,Apache Hadoop’u temel alan bir veri ambarı altyapısıdır.
Hadoop
Hadoop , Büyük Verileri dağıtılmış bir sistemde depolamak ve işlemek için kullanılan açık kaynaklı bir framework ortamıdır. Biri MapReduce ve diğeri Hadoop Dağıtılmış Dosya Sistemi (HDFS) olmak üzere iki modül içerir .
MapReduce: Büyük dosyaları işlemek için paralel bir programlama modelidir.
HDFS: Hadoop Dağıtık Dosya Sistemi’nin bir parçasıdır, kullanılan framework, kullanılan veri kümelerini depolamak ve işlemek içindir. Hataya toleranslı bir dosya sistemi sağlar.
Hadoop ekosistemi, Hadoop modüllerine yardımcı olmak için kullanılan Sqoop, Pig ve Hive gibi farklı alt projeleri (araçları) içerir.
Sqoop: HDFS ve RDBMS arasında veri alıp vermek için kullanılır.
Pig: MapReduce işlemlerinde bir komut dosyası geliştirmek için kullanılan prosedürel bir dil platformudur.
Hive: MapReduce işlemlerini yapmak için SQL tipi scriptler geliştirmek için kullanılan bir platformdur.
MapReduce işlemlerini yürütmenin çeşitli yolları vardır:
Yapılandırılmış, yarı yapılandırılmış, ve yapılandırılmamış veriler için Java MapReduce programını kullanan geleneksel yaklaşım.
Pig kullanılarak Yapılandırılmış ve yarı süreçleri işlemek için MapReduce’a yönelik komut dosyası oluşturma yaklaşımı.
MapReduce’un işleyeceği Hive Sorgu Dili (HiveQL veya HQL)
Hive Nedir?
Hive, Hadoop’ta yapılandırılmış verileri işlemek için kullanılan bir veri ambarı altyapı aracıdır.Büyük Veriyi özetlemek için Hadoop’un üzerinde bulunur ,sorgulamayı ve analiz etmeyi kolaylaştırır.
Başlangıçta Hive, Facebook tarafından geliştirildi, daha sonra Apache Yazılım Vakfı onu ele aldı ve Apache Hive adı altında açık kaynak olarak daha da geliştirdi.
Hive Ne Değildir?
İlişkisel bir veritabanı değildir
OLTP için bir tasarım değildir
Gerçek zamanlı sorgular ve satır düzeyinde güncellemeler için bir dil değildir
Hive’ın Özellikleri:
- Şemayı bir veritabanında saklar ve işlenen verileri HDFS’ye kaydeder.
- OLAP için tasarlanmıştır.
- HiveQL olarak adlandırılan Hive Query adı verilen sorgulama için SQL tipi dili sağlar.
- ETL görevleri ve diğer analizler daha kolay.
Hive Sınırlamaları:
1.Alt sorguları desteklemez
2.Overwrite özelliğini destekler ancak Delete ve Update özelliklerini desteklemez
3.OLTP için tasarlanmamıştır
Hive’daki Veriler Şu Şekilde Düzenlenmiştir:
1.Veritabanları: Tablolar, view nesneleri, partitions, sütunlar vb. için adlandırma çakışmalarını önlemek için namespace fonksiyonları.Veritabanları aynı zamanda bir kullanıcı veya kullanıcı grubu için güvenliği sağlamak amacıyla da kullanılabilir.
2.Tablolar: Her tablonun HDFS’de karşılık gelen bir dizini vardır.Veriler serileştirilir ve bu dizinde dosyalar halinde saklanır.
3.Partitions: Her tablo bölünebilir, her bölünen parça verinin alt dizinler içindeki dağılımını belirler.
4.Buckets: Her partition’daki veriler, sütunun karma fonksiyonuna göre bucket nesnelerine bölünür.Her bucket, partition dizininde bir dosya olarak saklanır.
Hive bir veritabanı mıdır?
Bu aslında kritik bir sorudur.Birçok kişi Hive’ı bir veritabanı yönetim sistemi olarak görüyor. Ancak gerçek farklıdır. Apache Hive kendisi bir veritabanı değildir.Hive’ı HDFS’deki temel verilerin mantıksal görünümü olarak düşünebiliriz .Kendine ait herhangi bir veriyi depolayamaz. İşlenen verileri depolamak için her zaman HDFS tarafını kullanır. Yapabileceği tek şey, verilerin HDFS’de saklanabileceği yapıyı güçlendirmektir.
Artık Hive’ın bir veritabanı olmadığı açık. Peki meta verilerini, nesnelerini, kullanıcı ayrıntılarını vb. nasıl koruyacak ona bakalım.Hive öğrenmeye başladığımızda gelecek diğer kritik soru budur.Aşağıdaki Hive mimarisini incelerken bunu göreceğiz.
Metastore Nedir?
Hive, işlediği verileri veya meta verilerini de depolayamaz.Hive , meta verilerini korumak için başka bir RDBMS kullanır. Buna Hive metastore denir.Hive servisi her başlatıldığında, bu RDBMS’nin bağlantı ayrıntılarını almak ve tablolarını, bölümlerini vb. içeren tüm meta bilgilerini almak için “hive-site.xml” adlı bir yapılandırma dosyasını kullanır. Hive servisi yeniden başlatıldığında metastore’daki bilgiler yeniden yüklenecektir.
Hive Özellikleri
DB bağlantı ayrıntılarının yanı sıra konfigürasyon dosyasında ayarlanacak pek çok özellik vardır.Bu konfigürasyon özellikleri hive davranışına karar verecektir .Örneğin, özellikler Hive sorgularını özel bir kuyrukta daha fazla ayrıcalıkla çalıştıracak şekilde ayarlanabilir; özellikler Hive’ın dinamik bölümler oluşturmasını engelleyecek şekilde ayarlanabilir.
Hive Servisleri
HiveServer/Thrift Server
HiveServer, uzak bir istemcinin Hive’a istek göndermesine olanak tanıyan bir hizmettir.İstek Java, C++, Python gibi çeşitli programlama dillerinden gelebilir.HiveServer, Apache Thrift üzerine kurulu olduğundan, onu Thrift Server olarak da adlandırabiliriz.
Hive CLI
CLI, hive’ı bağlamak için en yaygın kullanılanıdır.Geliştiriciler sorgularını Hive CLI aracılığıyla Hive’a gönderebilir.Hive CLI’sine erişmek için istemci makinede Hive’ın kurulu olması gerekir.Kurulduktan sonra terminalden “hive”ı çalıştırarak Hive’a erişebilirsiniz.
Web Arayüz
Hive web arayüzü , Hive sorgularını göndermek ve yürütmek için kullanılan bir GUI’dir.Web arayüzünü çalıştırmak için makinenizde Hive’ın kurulu olmasına gerek yoktur.Bir geliştirici, birden çok sorguyu paralel olarak çalıştırmak için URL’yi birden çok pencerede açabilir.Hive Web Arayüzü’nün bir diğer avantajı da Hive şemasına ve tablolarına göz atabilmemizdir.
Hive Clients
Hive Thrift Client– Veri işleme için farklı programlama dilleri kullanarak Hive ile etkileşime geçmek için farklı türdeki istemci uygulamalarını destekler.
Hive Driver
Hive driver HWI veya CLI’den gönderilen talepleri alacaktır.Dahili olarak hive sürücüsünün üç farklı bileşeni vardır .Bunları tek tek kontrol edelim.
Compiler- Hive driver tarafından gönderilen sorguyu kontrol edecek ve analiz edecektir.
Optimizer-Optimizer, optimize edilmiş mantıksal planı MR görevleri biçiminde oluşturacaktır.
Executer-Aldığı sorguyu çalıştırır.
Süreç ve Kaynak Yönetimi
Hive, sorguları yürütmek için MapReduce framework ‘ünü kullanabilir.YARN, sorguları çalıştırmak için gerekli kaynağı almak üzere dengeleme yapacaktır.
Depolama
Hive’ın kendine ait bir depolama mekanizması yoktur.İşlenen verileri depolamak için HDFS’yi kullanır .Tablonun çıktı formatı ve sınırlayıcısı dosyanın yapısını belirleyecektir.Hive tarafından desteklenen girdi formatlarından bazıları metin, parquet ve JSON’dur.
Yazmaya başladığım Hive serisinin ilk parçası buraya kadardı, keşfe devam…
Sevgiler 😇