Merhabalar Hadoop ailesinin önemli bir üyesi olan Hive ile ilgili teorik seriye devam ediyorum.Genel olarak seri, öncelikle teorik ardından teknik olarak iki dala ayrılan bir yazı dizisi olacak.Teorik kısım Hive manifestosunun temel ve detay özelliklerinden oluşuyor.
Hive Nedir?
Apache Hive,Hadoop dosyalarında depolanan büyük veri kümelerini sorgulamak ve analiz etmek için Hadoop üzerine kurulmuş açık kaynaklı bir veri ambarı sistemidir.Hadoop’ta yapılandırılmış ve yarı yapılandırılmış verileri işler.
Başlangıçta karmaşık Map&Reduce işleri yazmamız gerekir, ancak şimdi Hive’ın yardımıyla yalnızca SQL sorguları göndermemiz yeterlidir.Hive esas olarak SQL konusunda rahat olan ve SQL paradigmasına alışmış kullanıcılara yöneliktir.
Hive, SQL’e benzeyen HiveQL (HQL) adı verilen dili kullanır.HiveQL, SQL benzeri sorguları otomatik olarak MapReduce işlerine dönüştürür.
Hive, Hadoop’un karmaşıklığını soyutlar,yalınlaştırır.Dikkat etmemiz gereken en önemli husus Hive için Java öğrenmemize gerek olmadığıdır.Zaten Hive varoluş amacı olarak Java’ya gerek duymadan SQL temelinde kodlarla büyük veri ile iletişim kurmaktır.
Hive genellikle workstation’larda çalışır ve SQL sorgumuzu Hadoop kümesinde çalıştırmak üzere bir dizi işe dönüştürür.Apache Hive, verileri tablolar halinde düzenler.Bu, yapıyı HDFS’de depolanan verilere eklemek için bir araç sağlar.
Hive Tarihçesi
Facebook’taki Veri Altyapısı Ekibi Hive’ı geliştirdi.Apache Hive aynı zamanda Facebook’taki gereksinimleri karşılamak için kullanılan teknolojilerden biridir.Facebook’taki tüm kullanıcılar arasında oldukça popülerdir.
Hive,çok çeşitli uygulamalar için yüzlerce kullanıcıyla cluster üzerinde binlerce işi çalıştırmak için kullanılıyor.
Neden Apache Hive?
Şimdi Hive’ın ihtiyacını inceleyelim.Facebook, Apache Hive’ın uygulanmasından önce birçok zorlukla karşı karşıya kalmıştı.Üretilen verinin boyutunun artması veya patlaması gibi zorluklar.Geleneksel RDBMS bu baskıyı kaldıramadı.
Sonuç olarak Facebook daha iyi seçenekler arıyordu.Bu sorunun üstesinden gelmek için Facebook başlangıçta MapReduce çözümünü kullanmayı denedi .Ancak programlama konusunda zorluk yaşaması ve SQL’de zorunlu bilgiye sahip olması onu pratik olmayan bir çözüm haline getiriyor.
Dolayısıyla Apache Hive, karşılaştıkları zorlukların üstesinden gelmelerine olanak sağladı.
Apache Hive ile artık aşağıdakiler gerçekleştirilebiliyor:
Şema esnekliği ve gelişimi
Tablolada Partititon ve Bucket özellikleri
Apache Hive tablolarının doğrudan HDFS’de tanımlanması (Buraya dikkat Hive bir veri depolama alanı değildir.Veri depolama özelliğini HDFS sağlar.)
JDBC/ODBC sürücüleri mevcuttur
Apache Hive, geliştiricileri anlık gereksinimler için karmaşık Hadoop MapReduce işleri yazmaktan kurtarır.Dolayısıyla Hive, verilerin özetlenmesini, analizini ve sorgulanmasını sağlar.
Hive çok hızlı ve ölçeklenebilir.Oldukça genişletilebilir.Apache Hive, SQL’e benzer olduğundan, SQL geliştiricilerinin Hive Sorgularını öğrenmesi ve uygulaması çok kolay hale gelir.
Hive, kullanıcının SQL sorgularını gönderebileceği bir arayüz sağlayarak MapReduce’un karmaşıklığını azaltır.Artık iş analistleri Apache Hive’ı kullanarak Büyük Verilerle oynayabilir ve analizler oluşturabilir.
Ayrıca HDFS ve HBase gibi çeşitli veri depolarında dosya erişimi sağlar.Apache Hive’ın en önemli özelliği Hive’ı öğrenmek için Java öğrenmemize gerek olmamasıdır.
Hive Mimarisi
Apache Hive’a giriş yaptıktan sonra şimdi Hive Mimarisinin ana bileşenini inceleyeceğiz.Apache Hive bileşenleri şunlardır:
Metastore
Tabloların her biri için şema ve konum gibi meta verileri depolar.Hive ayrıca partition meta verilerini de içerir.Bu, driver ‘ın cluster üzerinde dağıtılan çeşitli veri kümelerinin ilerlemesinin izlenmesine yardımcı olur.Verileri geleneksel bir RDBMS formatında saklar.Hive meta verileri, driver’ın verileri takip etmesine yardımcı olur ve son derece önemlidir.Yedekleme sunucusu, veri kaybı durumunda alabileceği verileri düzenli olarak kopyalar.
Driver
HiveQL ifadelerini alan bir denetleyici gibi davranır.Driver, oturumlar oluşturarak sorgu ifadesinin yürütülmesini başlatır.Yürütmenin yaşam döngüsünü ve ilerlemesini izler.Driver, HiveQL ifadesinin yürütülmesi sırasında oluşturulan gerekli meta verileri saklar.
Compiler
HiveQL sorgusunun derlenmesini gerçekleştirir.Bu, sorguyu bir yürütme planına dönüştürür.Plan görevleri içerir.Ayrıca çıktının sorgu tarafından çevrildiği şekliyle elde edilmesi için MapReduce tarafından gerçekleştirilmesi gereken adımları da içerir.
Optimizer
Optimize edilmiş DAG sağlamak için yürütme planında çeşitli dönüşümler gerçekleştirir.
Executor
Derleme ve optimizasyon tamamlandıktan sonra executor görevleri çalıştırır.Executor görevlerin pipeline hattına alınmasıyla ilgilenir.
CLI,UI ve Thrift Server
CLI (komut satırı arayüzü), harici bir kullanıcının Hive ile etkileşime girmesi için bir kullanıcı arayüzü sağlar.Hive’daki Thrift server, JDBC veya ODBC protokollerine benzer şekilde, harici istemcilerin bir ağ üzerinden Hive ile etkileşime girmesine olanak tanır.
Apache Hive Özellikleri
Apache Hive’ın pek çok özelliği vardır.Bunları tek tek inceleyelim.
- Hive, veri özetleme, sorgulama ve analiz işlemlerini çok daha kolay bir şekilde sağlar.
- Hive, verileri HDFS’de depolamadan işlemeyi mümkün kılan harici tabloları destekler.
- Apache Hive, Hadoop’un düşük seviyeli arayüz gereksinimini mükemmel şekilde karşılar.
- Performansı artırmak için verilerin tablo düzeyinde partition özelliğiyle destekler.
- Hive, mantıksal planları optimize etmek için kural tabanlı bir optimize ediciye sahiptir.
- HiveQL kullanmak herhangi bir programlama dili bilgisine ihtiyaç duymaz, temel SQL sorgusu bilgisi yeterlidir.
- Hadoop’ta yapılandırılmış verileri Hive kullanarak kolaylıkla işleyebiliriz.
- Hive’da sorgulama SQL’e benzediği için oldukça basittir.
- Hive kullanarak veri analizi için anlık sorgular da çalıştırabiliriz.
Apache Hive Sınırlamaları
Hive teknolojisinin aşağıdaki sınırlamaları vardır:
- Apache, gerçek zamanlı sorgular ve satır düzeyinde güncellemeler sunmaz.
- Hive ayrıca etkileşimli veri taraması için kabul edilebilir gecikme süresi sağlar.
- Çevrimiçi işlem işlemleri için iyi değildir.
- Apache Hive sorgularının gecikmesi genellikle çok yüksektir.
Sonuç
Sonuç olarak Hive, veri analizi için kullanılan Hadoop’un üzerine kurulmuş bir Veri Ambarı paketidir.Hive ayrıca , SQL benzeri sorguları otomatik olarak MapReduce işlerine çeviren HiveQL(HQL) adlı bir dil kullanır .
Sevgiler :)