Apache Hadoop 3.0
Uzun zamandır 2.x sürümüyle devam eden Hadoop projesinde 13 Aralık 2017 tarihinde yeni sürüm olan Hadoop 3.0 yayınlandı. Bu yeni sürümde ne gibi özellikler olduğunu bu yazıda özetlemeye çalışacağız;
Java Update: Bütün proje minimum Java sürümü Java 8 olacak şekilde derlendi. Dolayısı ile Hadoop 3.0 kullanmak isteyenlerin Java sürümünü de yükseltmesi gerekecek.
HDFS Erasure Coding: Yeni sürümün en önemli özelliği olan Erasure Coding, dosyaların varsayılan 3 kopyasını tutma (replication) özelliğine göre önemli miktarda yer kazanımı sağlayan yeni bir yöntemdir. Reed-Solomon (10,4) gibi standart kodlamalar ile aynı miktarda veri sadece 1.4 kat fazla yer kaplayarak yedekli olarak saklanabilmektedir.
Bu özellik yer kullanımını azaltmasına rağmen uzak sunuculardaki verilerin ağ üzerinden okutulmasında ve verilerin yeniden oluşturulmasında sisteme ekstra yük getirdiği için daha ziyade az sıklıkla erişilen “soğuk” verileri saklamakta kullanılması tavsiye edilmektedir. Detaylara buradan erişebilirsiniz.
YARN Timeline Service v.2: YARN içerisindeki Timeline servisinde yapılan değişiklik ile iki önemli problem giderilmeye çalışılmıştır; Ölçeklenebilirliği ve dayanıklılığı arttırmak. Şu anda alpha aşamasındadır, geliştirilmesi devam etmektedir.
Shell Script Rewrite: Bildiğiniz üzere Hadoop içerisindeki bir çok işlem shell betikleri ile yapılmaktadır. Bu sürümde mevcut olan bütün betikler yeniden yazılıp uzun zamandır sıkıntı yaratan birçok problem giderilmiş ve yeni özellikler eklenmiştir. Geriye dönük uyumluluk açısından bazı problemler sözkonusu olabileceği için dikkat etmek gerekir.
Shaded Client Jars: 2.x sürümündeki istemci kütüphanesi (hadoop-client) birçok farklı kütüphanenin de classpath üzerinde bulunmasını gerektiriyordu. Bu sebeple versiyon uyumsuzluklarından kaynaklı problem yaşanıyordu. Bu problemleri çözmek için gerekli tüm kütüphaneler tek jar içerisine toplandı.
Support for Opportunistic Containers and Distributed Scheduling: Yeni bir kavram olan ExecutionType tanıtıldı. Artık uygulamalar kaynaklara daha yüksek erişim hakkına sahip Guaranteed tipinde veya Opportunistic tipinde olabilecekler. Uygulamar bu tiplere göre NodeManager üzerinde sıraya sokulacaklar. Herhangi bir Guaranteed uygulama yoksa Opportunistic uygulamalar çalışacaklar ancak herhangi bir Guaranteed uygulama gelmesi durumunda öncelik bunlara geçecek. Bu sayede kaynakların önceliklendirilerek daha iyi yönetilmesi amaçlanmaktadır.
MapReduce Task-level Native Optimization: Shuffle yoğun MapReduce uygulamalarında %30 veya daha fazla performans sağlayan bir optimizasyon eklendi.
Support for more than 2 NameNodes: İlk yüksek erişilebilir NameNode geliştirmesi sadece bir aktif NameNode olmasına izin veriyordu. Diğer NameNode’lar pasif olarak bekletiliyordu. Yeni geliştirme ile birden fazla NameNode’un problem yaşaması tolere edilebiliyor. Örneğin üç NameNode ve beş tane JournalNode ile kümenin iki node kaybetmeye kadar toleranslı olması sağlanabilecek.
Default ports of multiple services have been changed: Mevcut portlar (32768-61000) bazen başka uygulamalarla çakışmaya sebep olduğu için değiştirildi.
Support for new filesystem connectors: Microsoft Azure Data Lake ve Aliyun Object Storage System gibi Hadoop uyumlu yeni dosya sistemleri eklendi.
Intra-datanode Balancer: Bir DataNode üzerinde birden fazla disk olabilir. Normal bir yazma işlemi sırasında diskler eşit olarak doldurulur. Bununla birlikte yeni bir disk ekleme veya değiştirme DataNode içerisinde önemli dengelenme problemlerine sebep olur. Yeni eklenen bu özellik ile DataNode bazında disklerin eşit şekilde dengelenmesini sağlar. Bu özellik hdfs diskbalancer cli üzerinden elle tetiklenir.
Reworked daemon and task heap management: MR uygulamlarının hafıza yönetimini kolaylaştıran yeni geliştirmeler yapıldı.
S3Guard: Consistency and Metadata Caching for the S3A filesystem client: Amazon S3 için kullanılan S3A istemcisine eklenen yeni bir özellik sayesinde dosya ve dizin metadata’sı DynamoDB üzerinde isteğe bağlı olarak saklanabilecek.
HDFS Router-Based Federation: HDFS Federation (Birden fazla HDFS sisteminin birlikte çalışması) erişimini kolaylaşıran RCP tabanlı yeni bir yönlendirme sistemi eklendi.
API-based configuration of Capacity Scheduler queue configuration: Capacity Scheduler kuyruğunun programatik olarak yönetilmesini sağlayan bir REST arayüzü eklendi.
YARN Resource Types: YARN kaynak yönetim modeli CPU ve bellek dışındaki diğer kaynakların da tarafından yönetilebilmesini sağlayacak şekilde genelleştirildi. Örneğin, küme yöneticisi GPU’lar, yazılım lisansları veya lokal depolama alanı gibi kaynakları tanımlayabilir. YARN görevleri daha sonra bu kaynakların durumuna göre planlanabilir.
Kaynak: https://hadoop.apache.org/docs/r3.0.0/
Big Data Teknolojilerine Hızlı Giriş AWS ile Big Data