30
Hadoop Dr.İsmail İŞERİ

Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

HadoopDr.İsmail İŞERİ

Page 2: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

Hadoop Nedir ?

• Hadoop , büyük veri kümeleri ile birden fazla makinada paralel olarak işlem yapmamızı sağlayan Java ile yazılmış açık kaynak kodlu kütüphanedir .

• Hadoop büyük verileri birden fazla makinada saklar ve yönetir .

• RDBMS(Relational Database Management System) yani ilişkisel veri tabanı yönetim sistemlerinden farklı olarak verileri tek bir bilgisayarda tutmayıp gelen verileri -her birinin kendine ait işlemcisi ve rami- olan Node’lerde(küme) HDFS dosya sistemi ile denormalize bir şekilde veriyi saklayan ve işlenmesine olanak sağlayan açık kaynak kodlu kütüphanedir.

• Doug Cutting, Mike Cafarella ve takım arkadaşları geliştirdi. 2005.

• Öncesinde Google Map Reduce algoritmasını geliştiriyor.

• Doug ve ekibi buradan yola çıkarak Hadoop yapısını kuruyorlar

Page 3: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

HDFS Nedir?

• Sıradan sunucuların disklerini bir araya getirerek büyük ve sanal bir disk oluşturan dosya sistemidir.

• Bu sayede çok büyük boyuttaki dosyaları sistemde saklayabilir ve işlenmesine olanak sağlar.

Page 4: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak
Page 5: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

Hadoop Büyük Verileri Nasıl Saklar ? HDFS Nedir ?• Hadoop içerisinde büyük verileri sakladığımız bileşene HDFS (Hadoop

Distributed File System) denir .

• Büyük verileri HDFS sistemine yüklediğimiz zaman , Hadoop bu verileri bloklara ayırır .

Page 6: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

• Farklı bloklara ayrılan veriler Hadoop Cluster üzerinde farklı node lara dağılır . Şimdilik her bir node u farklı bir makina olarak düşünebiliriz . Alttaki şekilde görüldüğü gibi Input File içerisindeki bloklar farklı node lara dağıtılmıştır . Burada dikkat etmemiz gereken en önemli husulardan bir tanesi her bir blok çoklanarak kaydedilmiştir . Mesela 2 numaralı blok 3 farklı (Node A , Node B , Node D) node üzerine dağıtılmıştır. (Replication factor) Bunun asıl nedeni ise node lardan bir tanesi zarar gördüğünde veya sistemden çıktıgında veri kaybının yaşanmasını engellemek

Page 7: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak
Page 8: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

Hadoop verileri nasıl işler?

• Node’lerde yer alan verileri merkeze toplayıp işlemek yerine SQL diline yakın sorguları Node’lere dağıtarak Node’lerde gerekli işlemi gerçekleştirir. Çünkü her Node’nin kendisine ait işlemcisi ve rami vardır. Bunu yapmasının sebebi ise veriyi merkeze çekip trafik oluşturmamak.

Page 9: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

Hadoop Verileri Paralel Olarak Nasıl İşler ? MapReduce Nedir ?• Hadoop içerisinde büyük verileri paralel olarak işleyebileceğimiz

bileşene MapReduce denir .

• Veri kümeleri HDFS üzerinden yüklendikten sonra Map ve Reduce fazları işletilir .

• Bu kodlamaları Java , Pig ve Hive .. ile geliştirebiliriz

• Tüm verileri merkeze toplamadığımız için bütün işlemler ayrı ayrı Node’lerde yapılır. Bu işlemler bittikten sonra her Node’den dönen cevap alınır ve toplam sonuç oluşturulur. Bu işlemler bütüne Map-Reduce denir. Map-Reduce işlemlerinin nasıl gerçekleştiğini basitçe 6 adımda inceleyelim.

Page 10: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak
Page 11: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

Örnek olarak bir text dosyasının içerisindeki kelime sayısını bulan MapReduce programını inceleyelim .

MapReduce şu adımlardan oluşacaktır ;

•Spliting : Veriler 64 MB lık bloklara ayrılır . Bu değer değiştirilebilir

•Mapping : Burada her bir kelime key(word) ve value(1) şeklinde bölümlere ayrılır .

•Shuffling : Map işleminden çıkan sonuçları Reducer a yönlendirir . Amacımız word-count uygulaması oldugu için aynı

kelime grubu aynı Reducer a yönlendirilir .

•Reducing : Gelen sonuçlar üzerinden toplama işlemi yapılır ve sonuçlar istediğiniz kaynaklara yazılır (HDFS , SQL ,

NoSQL)

Page 12: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak
Page 13: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

1- Input : Veri girişlerinin yapıldığı adımdır.

2-Splitting : Gelen veriler bu aşamada işlemesi daha kolay olabilmesi için parçalara bölünür.

3-Mapping: Veriler bu aşamada ilgili düğümlerede dağıtılır ve kaç tane yedeği olacağı bu adımda belirtilir. Ve daha sonrasında ver ilgili düğümde işlenir.

4-Shuffling : Her düğümde verilerin sayma işlemi yapılır. Örneğin bir text dökumanını input olarak verdiysek ve sonuç olarak hangi kelimenin kaç defa geçtiğini arıyorsak bu aşamada kelime sayıları Node’lerde belirlenir.

5-Reducing: Her Node’den gelen sonuç bu aşamada toplanır.

6:Final Result: Sonuçlar artık elimizdedir. Bunun raporlamasını yapabiliriz.

Page 14: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

• Neden Hadoop?

• Çünkü veri çok fazla… Veriyi tek bir bilgisayarda RDBMS yöntemiyle tutamıyoruz. Veriyi işlemek bi yana verinin tutulması için bile HDFS dosyalama sistemine ihtiyaç vardır.HDFS ile verinin saklanması ve yedeklenmesi çözülürken büyük veriyi işleme problemi ortaya çıkmıştır. Bunun için Hadoop ekosistemi ve HDFS için araçlar geliştirilmiştir.

Page 15: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

• Temel Hadoop Bileşenleri Nedir?

• En temel Hadoop Bileşenleri HDFS, Map-Reduce ve YARN’dır.

• Hadoop’un dezavantajları var mıdır? Varsa nelerdir?

• Hadoop’un hiç tartışılmaz avantajları çok. Peki hiç mi dezavantajı yok? Var elbette…

• Hadoop veriyi kopyalayarak yedeklemeye ihtiyaç duyduğundan dolayı ihtiyaç duyulan alanı arttırıyor.

• Temel Hadoop bileşenlerinin klasik SQL sorgularına sahip olmaması bir eksiklik olarak görülebilir.

• Veriyi saklarken ağ üzerinde şifrelemediği için güvenlik anlamında yeterli değildir.

• Hadoop’un temel bileşenleri olan YARN, HDFS ve Map-Reduce yeterli değildir.

Page 16: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

Hadoop YARN (Yet Another Resource Negotiator)Mimarisi

Page 17: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

• YARN genel olarak MapReduce gibi dağıtık uygulamalarımız için kaynak yönetimini sağlar(ram,cpu).Fakat MapReduce kodları geliştirirken YARN’a doğrudan müdahe etmemize gerek yoktur.YARN arka planda resource yönetimini bizim için sağlar

Page 18: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

YARN’ın çalışma prensibine geçmeden önce genel terimlerden bahsedelim• ResourceManager Nedir?• ResourceManager, hadoop cluster içerisindeki kaynakları takip eder ve

uygulamaları yönetir• NodeManager Nedir?• NodeManager, hadoop cluster içerisinde bulunan her bir slave üzerinde

çalışan uygulamadır.Görevi ise kendisini ResourceManager’a tanıtmak ve belirli periyotlarda bulunduğu makine ile ilgili bilgi mesajı vermektir.Ayrıca bulunduğu makinadaki kaynakları(memory,vcore) yine ResourceManager’a bildirir.

• Container nedir ?• HDFS içerisinde uygulamaların çalıştığı,belirli bir kaynağa sahip

olan(ram,core) bileşendir.MapReduce job’ı bir yada birden fazla container içerisinde çalışabilir.

Page 19: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak
Page 20: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

Hadoop üzerinde bir uygulama nasıl çalışır?

Page 21: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak
Page 22: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

1. Öncelikle Client bir uygulamayı başlatır

2. Uygulama ResourceManager’a yönlendirilir

3. ResourceManager cluster üzerindeki kaynakları kontrol eder ve node içerisindeki ApplicationMaster’a bir yada birden fazla Container başlatması için bilgi verir.Çalıştırılan Container’lar farklı makinalar üzerinde bulunabilir.

4. ApplicationMaster ise uygun sayıda Container başlatarak, bu Container’lar içerisinde MapReduce uygulamalarının çalışmasını sağlar.

5. Daha sonra sonuçlar client’a bildirilir

Page 23: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

• Hadoop Bileşenleri Nelerdir? Ne için kullanılırlar?

• Bu bileşenleri size aktarırken kullanım alanlarına yönelik olarak aktaralım

Page 24: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak
Page 25: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

• Data Access: Pig, HiveData Storage: HBase, CassandraInterecation, Visualization, Execution, Development : HCatalog, Lucene, Hama, CrunchData Serialization: Avro, ThriftData Intelligence: Drill, MohoutData Integration: Sqoop, Flume, ChuwkaManagement: Ambari(Portal)Monitoring: ZookeeperOrchestration: Oozie

Page 26: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

Bunlardan bazılarına değinelim.

• Spark nedir?

• Spark denilince aklımıza gelen ilk şey In-Memory çalışıyor olmasıdır. Map-Reduce veriyi disk ile ram arasında götürüp getirdiği için Spark’a göre daha yavaştır çalışır. Spark HDFS’ye erişir ama dağıtık işleme modeli değil de kendi In-Memory modelini uygular. Python, R, Scala gibi arayüzleri destekleyerek SQL dilini kullanır.

• Güçlü yanları ise şu alanlardır;• Streaming veri işleme• Grafik veri işleme• Ölçeklenebilir/Dağıtık Machine Learning Algoritmaları

Page 27: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

• Hive nedir?

• Hive HQL olarak bilinen bir SQL’e çok benzer bir dil ile Hadoop sistemlerinde verilere erişim ve sorgulama gibi işlemleri gerçekleştirir. Gerçek zamanlı sorgulama yapamaz.

Page 28: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

• Pig: HDFS üzerindeki verinin işlenmesinden sorumludur. Karmaşık veri dönüşüm işlemlerini Java’ya ihtiyaç duymadan Latin gibi betik/script dili ile gerçekleştirmemizi sağlayan Hadoop bileşenidir. Yapısal olan ve yapısal olmayan veriler üzerinde çalışarak veriyi HDFS’de saklayabilir. Hadoop üzerindeki veriyi paralel bir şekilde işler. Peki bunu nasıl yapıyor?Pig, Latin dilini kullanıyor. Latin dilinde yazılmış görevleri otomatik olarak Java/Map-Reduce görevine çevirir. Kısa tabiriyle Pig, Latin Scriptleri YARN üzerinde çalışan Map-Reduce fonksiyonlarına çevirir. Böylece HDFS Node’leri üzerindeki veri işlenmiş olur.

Page 29: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

• HBase nedir?

• HDFS üzerinde çalışan bir NoSQL veritabanı yönetim sistemidir. SQL desteği sunmaz. Bir HBase sistemi bir grup tablolardan oluşurve tablolara erişmek için bu tablolarda birincil anahtar kullanılır.

• Sqoop nedir?

• Yapısal verilerin ETL(Extract/Transform/Load) ile Hadoop’a aktarılması için kullanılır. Bir komut satırı arayüzüne sahiptir.

• Ambari nedir?

• Hadoop Node’lerini yönetmek için kullanılan web arayüzüdür.

• Flume nedir?

• Streaming verilerin toplanması ve birleştirilmesi için kullanılır.

• Kafka nedir?

• Bir mesajlaşma servisidir. Veriyi Hadoop’a stream olarak aktarırı.

• HCatalog nedir?

• HDFS sisteminde kayıtlı olan her verinin konumunu ve şema bilgisini tutar. Pig Latin dili bu araç üzerinden HCatLoader(okuma) HCatStorer(Yazma) API’leri ile HCatalog tarafından yönetilen tablolara okuma yazma yapar.

Page 30: Hadoop - avys.omu.edu.tr · Hadoop Nedir ? •Hadoop , büyük veri kümeleri ilebirden fazla makinada paralel olarak işlem yapmamızı sağlayanJava ile yazılmış açık kaynak

Özet

• Genel olarak özetlemek gerekirse çok yüksek trafikte akan bir veriniz olduğu zaman (Örnek günlük 100 milyon + ) verileri HDFS üzerinde saklayabilir ve MapReduce ile verilerinizi analiz edebilirsiniz .

• Alternatif olarak diğer NoSQL (Mongo , ElasticSearch) saklama yöntemlerini yada Apache Spark gibi paralel veri işleme yöntemlerini tercih edebilirsiniz . Buna ihtiyaçlarınıza göre karar vermelisiniz . Her sistemin kendine göre artı ve eksileri vardır