MapReduce, Apache Hadoop projesindeki bir işleme modülüdür. Hadoop, verileri depolamak ve işlemek için bir bilgisayar ağı kullanarak büyük verilerin üstesinden gelmek için oluşturulmuş bir platformdur.
Hadoop’u bu kadar çekici kılan şey, uygun fiyatlı adanmış sunucuların bir kümeyi çalıştırmak için yeterli olmasıdır. Verilerinizi işlemek için düşük maliyetli tüketici donanımı kullanabilirsiniz.
Hadoop yüksek oranda ölçeklenebilir. En az bir makineyle başlayabilir ve ardından kümenizi sonsuz sayıda sunucuya genişletebilirsiniz. Bu yazılım kitaplığının iki ana varsayılan bileşeni şunlardır:
- Harita indirgeme
- HDFS – Hadoop dağıtılmış dosya sistemi
Bu yazımızda iki modülden ilkinden bahsedeceğiz. Olacaksın öğrenmek MapReduce nedir, nasıl çalışır ve temel Hadoop MapReduce terminolojisi.
Hadoop MapReduce nedir?
Hadoop MapReduce’un programlama modeli, HDFS’de depolanan büyük verilerin işlenmesini kolaylaştırır.
Birden çok birbirine bağlı makinenin kaynaklarını kullanarak, MapReduce, büyük miktarda yapılandırılmış ve yapılandırılmamış veriyi etkili bir şekilde işler.
Spark ve diğer modern çerçevelerden önce bu platform, dağıtılmış büyük veri işleme alanındaki tek oyuncuydu.
MapReduce, bir Hadoop kümesindeki düğümler arasında veri parçaları atar. Amaç, bir veri setini parçalara ayırmak ve bu parçaları aynı anda işlemek için bir algoritma kullanmaktır. Birden çok makinede paralel işleme, petabaytlarca veriyi bile işleme hızını büyük ölçüde artırır.
Dağıtılmış Veri İşleme Uygulamaları
Bu çerçeve, dağıtılmış veri işleme için uygulamaların yazılmasına izin verir. Genellikle Java, çoğu programcının o zamandan beri kullandığı şeydir. Hadoop, Java tabanlıdır.
Ancak MapReduce uygulamalarını Ruby veya Python gibi başka dillerde de yazabilirsiniz. Bir geliştirici hangi dili kullanırsa kullansın, Hadoop kümesinin üzerinde çalıştığı donanım konusunda endişelenmenize gerek yoktur.
ölçeklenebilirlik
Hadoop altyapısı, ticari sınıf donanımların yanı sıra kurumsal düzeyde sunucular kullanabilir. MapReduce yaratıcılarının aklında ölçeklenebilirlik vardı. Daha fazla makine eklerseniz, bir uygulamayı yeniden yazmaya gerek yoktur. Basitçe küme kurulumunu değiştirin ve MapReduce hiçbir kesinti olmadan çalışmaya devam etsin.
MapReduce’u bu kadar verimli yapan şey, HDFS ile aynı düğümlerde çalışmasıdır. bu planlayıcı verilerin zaten bulunduğu düğümlere görevler atar. Bu şekilde çalışmak, bir kümedeki kullanılabilir iş hacmini artırır.
MapReduce Nasıl Çalışır?
Yüksek düzeyde, MapReduce girdi verilerini parçalara ayırır ve bunları farklı makinelere dağıtır.
Giriş parçaları, anahtar-değer çiftlerinden oluşur. Paralel eşleme görevleri, bir kümedeki makinelerde parçalanmış verileri işler. Eşleme çıktısı daha sonra azaltma aşaması için girdi görevi görür. Azaltma görevi, sonucu belirli bir anahtar/değer çifti çıktısında birleştirir ve verileri HDFS’ye yazar.
Hadoop Dağıtılmış Dosya Sistemi, genellikle MapReduce yazılımıyla aynı makine setinde çalışır. Çerçeve, verileri de depolayan düğümlerde bir iş yürüttüğünde, görevleri tamamlama süresi önemli ölçüde azalır.
Hadoop MapReduce’un Temel Terminolojisi
Yukarıda belirttiğimiz gibi MapReduce, Hadoop ortamındaki bir işleme katmanıdır. MapReduce, bir işle ilgili görevler üzerinde çalışır. Fikir, büyük bir talebi daha küçük birimlere bölerek ele almaktır.
JobTracker ve TaskTracker
Hadoop’un ilk günlerinde (sürüm 1), İş İzleyici Ve Görev İzleyici daemons, MapReduce’ta operasyonlar yürüttü. O sırada, bir Hadoop kümesi yalnızca MapReduce uygulamalarını destekleyebiliyordu.
A İş İzleyici uygulama isteklerinin bir kümedeki bilgi işlem kaynaklarına dağıtımını kontrol etti. MapReduce’un yürütülmesini ve durumunu izlediğinden, bir ana düğümde bulunuyordu.
A Görev İzleyici JobTracker’dan gelen istekleri işledi. Tüm görev izleyicileri, bir Hadoop kümesindeki bağımlı düğümlere dağıtıldı.
İPLİK
Daha sonra Hadoop sürüm 2 ve üzeri sürümlerde, YARN, ana kaynak ve planlama yöneticisi oldu. dolayısıyla adı Başka Bir Kaynak Yöneticisi. Yarn, bir Hadoop kümesinde dağıtılmış işleme için diğer çerçevelerle de çalıştı.
MapReduce İşi
A MapReduce işi MapReduce sürecindeki en üst iş birimidir. Haritalama ve Azaltma süreçlerinin tamamlaması gereken bir atamadır. Bir iş, daha hızlı yürütme için bir makine kümesi üzerinde daha küçük görevlere bölünür.
Görevler, görev işleme süresini haklı çıkaracak kadar büyük olmalıdır. Bir işi alışılmadık derecede küçük bölümlere ayırırsanız, bölümleri hazırlamak ve görevleri oluşturmak için gereken toplam süre, fiili iş çıktısını üretmek için gereken süreden daha ağır basabilir.
MapReduce Görevi
MapReduce işlerinin iki türü vardır görevler.
A Harita Görevi bir MapReduce uygulamasının tek bir örneğidir. Bu görevler, bir veri bloğundan hangi kayıtların işleneceğini belirler. Girdi verileri, bir Hadoop kümesindeki atanmış bilgi işlem kaynaklarında paralel olarak bölünür ve analiz edilir. Bir MapReduce işinin bu adımı, azaltma adımı için
A Görevi Azalt bir harita görevinin çıktısını işler. Harita aşamasına benzer şekilde, tüm azaltma görevleri aynı anda gerçekleşir ve bağımsız çalışırlar. Veriler, istenen çıktıyı sağlamak için toplanır ve birleştirilir. Nihai sonuç, MapReduce’un varsayılan olarak HDFS’de sakladığı azaltılmış bir
Not: Azalt aşaması her zaman gerekli değildir. Bazı MapReduce işleri, harita görevi çıktılarından alınan verilerin birleştirilmesini gerektirmez. Bu MapReduce Uygulamaları, sadece harita işleri.
Harita ve Küçültme aşamalarının her biri iki bölümden oluşur.
bu Harita ilk kısım bununla ilgilenir bölme bireysel harita görevlerine atanan giriş verilerinin sayısı. Sonra haritalama işlevi, çıktıyı ara anahtar-değer çiftleri biçiminde oluşturur.
bu Azaltmak sahnede bir karıştırma ve bir azaltma adımı vardır. karıştırma harita çıktısını alır ve ilgili anahtar-değer-listesi çiftlerinin bir listesini oluşturur. Daha sonra, azaltma MapReduce uygulamasının talep ettiği nihai çıktıyı üretmek için karıştırmanın sonuçlarını toplar.
Hadoop Haritalama ve Azaltma Birlikte Çalışmayı Nasıl Sağlar?
Adından da anlaşılacağı gibi, MapReduce giriş verilerini iki aşamada işleyerek çalışır – Harita Ve Azaltmak. Bunu göstermek için, her bir belgedeki kelimelerin geçiş sayısını sayan basit bir örnek kullanacağız.
Aradığımız son çıktı: Tüm belgelerde Apache, Hadoop, Class ve Track kelimelerinin toplamda kaç kez geçtiği.
Açıklama amacıyla, örnek ortam üç düğümden oluşur. Girdi, küme boyunca dağıtılan altı belge içerir. Burada basit tutacağız, ancak gerçek koşullarda sınır yoktur. Binlerce sunucuya ve milyarlarca belgeye sahip olabilirsiniz.
1. İlk olarak, harita aşamasıgiriş verileri (altı belge) bölmek ve küme boyunca dağıtılır (üç sunucu). Bu durumda, her harita görevi iki belge içeren bir bölmede çalışır. Haritalama sırasında, düğümler arasında iletişim yoktur. Bağımsız olarak performans gösterirler.
2. Ardından, harita görevleri bir
Bu işlem, tüm belgeler için tüm düğümlerde paralel görevlerde yapılır ve benzersiz bir çıktı verir.
3. Girdi bölme ve eşleme tamamlandıktan sonra, her harita görevinin çıktıları karıştırılmış. Bu, sürecin ilk adımı Aşamayı azalt. Dört kelimenin oluşum sıklığını aradığımız için, dört paralel Reduce görevi var. İndirgeme görevleri, harita görevleriyle aynı düğümlerde çalışabilir veya başka herhangi bir düğümde çalışabilir.
bu karıştırma adımı anahtarları garanti eder Apache, Hadoop, Sınıf, Ve İzlemek azaltma adımı için sıralanır. Bu süreç, değerleri şu şekilde anahtarlara göre gruplandırır:
4. İçinde adımı azalt Azaltma aşamasının dört görevinin her biri, son bir anahtar/değer çifti sağlamak için bir
Diyagramdaki örneğimizde, azaltma görevleri aşağıdaki bireysel sonuçları alır:
Not: MapReduce işlemi mutlaka ardışık değildir. Küçültme aşaması, tüm harita görevlerinin tamamlanmasını beklemek zorunda değildir. Bir harita çıktısı mevcut olduğunda, bir azaltma görevi başlayabilir.
5. Son olarak, içindeki veriler Aşamayı azalt tek bir çıktıda gruplandırılmıştır. MapReduce şimdi bize kelimelerin kaç kez olduğunu gösteriyor. Apache, Hadoop, Sınıf, Ve izlemek tüm belgelerde ortaya çıktı. Toplu veriler varsayılan olarak HDFS’de depolanır.
Burada kullandığımız örnek temel bir örnektir. MapReduce çok daha karmaşık görevleri yerine getirir.
Kullanım durumlarından bazıları şunları içerir:
- Apache günlüklerini sekmeyle ayrılmış değerlere (TSV) dönüştürme.
- Web günlüğü verilerindeki benzersiz IP adreslerinin sayısını belirleme.
- Karmaşık istatistiksel modelleme ve analiz gerçekleştirme.
- Mahout gibi farklı çerçeveler kullanarak makine öğrenimi algoritmaları çalıştırmak.
Hadoop Bölümleri Girdi Verilerini Nasıl Eşler?
Bölümleyici, harita çıktısını işlemekten sorumludur. MapReduce, verileri parçalara böldüğünde ve bunları harita görevlerine atadığında, çerçeve, anahtar/değer verilerini bölümlere ayırır. Bu süreç, nihai eşleyici görevi çıktısı üretilmeden önce gerçekleşir.
MapReduce, çıktıyı anahtara göre bölümlere ayırır ve sıralar. Burada, bireysel anahtarlar için tüm değerler gruplanır ve bölümleyici, her anahtarla ilişkili değerleri içeren bir liste oluşturur. Bölümleyici, tek bir anahtarın tüm değerlerini aynı indirgeyiciye göndererek harita çıktısının indirgeyiciye eşit dağılımını sağlar.
Not: Harita çıktı dosyalarının sayısı, farklı bölümleme anahtarlarının sayısına ve yapılandırılan indirgeyici sayısına bağlıdır. Bu indirgeyici miktarı, indirgeyici yapılandırma dosyasında tanımlanır.
Varsayılan bölümleyici, birçok kullanım durumu için iyi yapılandırılmıştır, ancak MapReduce’un verileri nasıl bölümlediğini yeniden yapılandırabilirsiniz.
Özel bir bölümleyici kullanıyorsanız, her bir küçültücü için hazırlanan veri boyutunun kabaca aynı olduğundan emin olun. Verileri eşit olmayan şekilde bölümlere ayırdığınızda, bir azaltma görevinin tamamlanması çok daha uzun sürebilir. Bu, tüm MapReduce işini yavaşlatır.
Çözüm
Büyük verileri işlemenin zorluğu, geleneksel araçların girdi verilerinin hacmi ve karmaşıklığıyla başa çıkmaya hazır olmamasıydı. Hadoop MapReduce burada devreye girdi.
MapReduce kullanmanın faydaları şunları içerir: paralel hesaplama, Hata yönetimi, hata toleransı, Kerestecilik, Ve raporlama. Bu makale, MapReduce’un nasıl çalıştığını ve temel kavramlarını anlamak için bir başlangıç noktası sağladı.