Hadoop'ta MapReduce nedir? ArchiYapı ve Diyagram

⚡ Akıllı Özet

MapReduce, büyük bir veri setini, her bir girdi bölümü üzerinde bir map fonksiyonu ve ardından gruplandırılmış ara değerler üzerinde bir reduce fonksiyonu çalıştırarak küçük bir sonuca dönüştüren Hadoop programlama modelidir.

  • 🔘 Dört aşama: Her iş, bölme ve haritalama şeklinde yürütülür.pingAnahtar-değer çiftlerinin her aşama arasında aktığı, karıştırma ve azaltma işlemleri gerçekleştirilir.
  • ☑️ Çalışılmış örnek: Üç satırlık metin, yedi kelime sayısına dönüşerek her aşamanın neye katkıda bulunduğunu tam olarak gösteriyor.
  • Bölünmüş bedenler: Her giriş bölümü için bir eşleme görevi çalışır ve bölüm boyutu normalde HDFS blok boyutuyla eşleşir.
  • 🧪 Ara veriler: Harita çıktısı HDFS yerine yerel diske yazılır, çünkü atılacak verilerin çoğaltılması israftır.
  • Koordinasyon: Bir işTracKer, iş ve görev planlamasını yapar.TracKers, periyodik kalp atışı sinyalleri aracılığıyla ilerlemeyi bildirir.
  • ⚠️ Sürüm notu: YARN, bu ikiliyi Hadoop 2.x'ten alınan bir ResourceManager, NodeManager'lar ve iş başına bir ApplicationMaster ile değiştirdi.

Hadoop'taki MapReduce mimarisi bir örnekle açıklanmıştır.

Hadoop'ta MapReduce nedir?

MapReduce, büyük miktarda veriyi işlemek için kullanılan bir yazılım çerçevesi ve programlama modelidir. MapReduce programları, Eşleme (Map) ve Azaltma (Reduce) olmak üzere iki aşamada çalışır. Eşleme görevleri, verileri bölme ve birleştirme işlemlerini içerir.ping Veri işleme sırasında, Reduce görevleri verileri karıştırır ve azaltır.

Hadoop'un Çeşitli dillerde yazılmış MapReduce programlarını çalıştırabilir: JavaYakut, Python, ve C++MapReduce programları doğaları gereği paraleldir, bu nedenle kümedeki birden fazla makine kullanarak büyük ölçekli veri analizi yapmak için çok kullanışlıdırlar.

Her aşamanın girdisi anahtar-değer çiftleridir. Ayrıca, her programcının iki fonksiyon belirtmesi gerekir: bir eşleme fonksiyonu ve bir indirgeme fonksiyonu.

Harita indirgeme ArchiBüyük Veride Yapı Örnekle Açıklanıyor

Tüm süreç, bölme, eşleme ve haritalama olmak üzere dört aşamadan geçer.pingKarıştırma ve azaltma.

Şimdi bu MapReduce eğitiminde, bir MapReduce örneğiyle konuyu anlayalım.

MapReduce işleminiz için aşağıdaki girdi verilerine sahip olduğunuzu varsayalım. büyük Veri Program:

Welcome to Hadoop Class
Hadoop is good
Hadoop is bad

Aşağıdaki diyagram tracBu üç çizgiyi, soldaki giriş bölmelerinden sağdaki nihai kelime sayımlarına kadar her aşamada takip edin.

MapReduce mimari diyagramı tracÜç giriş hattını bölme ve eşleme yoluylapingkarıştırma ve azaltma

MapReduce görevinin son çıktısı:

kötü 1
Sınıf 1
Tercih Etmenizin 1
Hadoop'un 3
is 2
için 1
Hoşgeldiniz 1

Büyük Veri ortamında MapReduce, verileri aşağıdaki aşamalardan geçirir.

Giriş Bölmeleri

Büyük Veri'de MapReduce işine giren veriler, girdi bölmeleri adı verilen sabit boyutlu parçalara ayrılır. Bir girdi bölmesi, tek bir eşleme işlemi tarafından kullanılan girdinin bir bölümüdür.

Haritaping

Bu, MapReduce programının yürütülmesindeki ilk aşamadır. Bu aşamada, her bir bölmedeki veriler bir haritaya aktarılır.ping Çıktı değerleri üreten fonksiyon. Örneğimizde, map fonksiyonunun görevi budur.ping Bu aşama, girdi bölümlerinden (girdi bölümleri hakkında daha fazla ayrıntı aşağıda verilmiştir) her kelimenin kaç kez geçtiğini saymak ve aşağıdaki biçimde bir liste hazırlamaktır: .

karıştırma

Bu aşama, Harita'nın çıktısını tüketir.ping Bu aşama, haritadaki ilgili kayıtları bir araya getirme görevini içerir.ping Faz çıkışı. Örneğimizde, aynı kelimeler ilgili frekanslarıyla birlikte gruplandırılmıştır.

Indirgen

Bu aşamada, Karıştırma aşamasından elde edilen çıktı değerleri toplanır. Bu aşama, Karıştırma aşamasındaki değerleri birleştirir ve tek bir çıktı değeri döndürür. Kısacası, bu aşama tüm veri setini özetler.

Örneğimizde, bu aşama Karıştırma aşamasından gelen değerleri bir araya getirir, yani her kelimenin toplam geçme sayısını hesaplar.

Harita indirgeme Archiayrıntılı olarak açıklanan doku

Aşağıdaki maddeler, bölme işlemlerinin, eşleme görevlerinin ve azaltma görevlerinin küme genelinde nasıl yerleştirildiğini ve depolandığını açıklamaktadır.

  • Her bir bölüm için bir eşleme görevi oluşturulur ve bu görev, bölümdeki her kayıt için eşleme işlevini yürütür.
  • Birden fazla bölme işlemine sahip olmak her zaman faydalıdır çünkü bir bölme işleminin süresi, tüm girdinin işlenmesi için gereken süreye kıyasla daha kısadır. Bölme işlemleri daha küçük olduğunda, paralel olarak işlendikleri için işlem yükü daha iyi dengelenir.
  • Ancak, çok küçük bölmeler olması da istenmeyen bir durumdur. Bölmeler çok küçük olduğunda, bölmeleri yönetmenin ve eşleme görevleri oluşturmanın getirdiği ek yük, toplam iş yürütme süresine baskın gelmeye başlar.
  • Çoğu iş için, bölme boyutunu bir parçanın boyutuna eşit yapmak daha iyidir. HDFS Hadoop 2.x ve sonrasında varsayılan olarak 128 MB olan (Hadoop 1.x'te 64 MB idi) ve tarafından kontrol edilen blok dfs.blocksize özelliği.
  • Haritalama görevlerinin yürütülmesi, çıktının HDFS'ye değil, ilgili düğümdeki yerel bir diske yazılmasıyla sonuçlanır.
  • Yerel diski HDFS'ye tercih etmenin nedeni, HDFS depolama işlemi sırasında gerçekleşen çoğaltmadan kaçınmaktır.
  • Harita çıktısı, nihai çıktıyı üretmek için görevlerin azaltılmasıyla işlenen ara çıktıdır.
  • İş tamamlandıktan sonra harita çıktısı atılabilir. Bu nedenle, çoğaltmayla HDFS'de depolamak aşırıya kaçıyor.
  • Düğüm arızası durumunda, harita çıktısı azaltma görevi tarafından tüketilmeden önce Hadoop, harita görevini başka bir düğümde yeniden çalıştırır ve harita çıktısını yeniden oluşturur.
  • Reduce görevleri veri yerelliği kavramına göre çalışmaz. Her map görevinin çıktısı reduce görevine beslenir. Map çıktısı, reduce görevinin çalıştığı makineye aktarılır.
  • Bu makinede çıktı birleştirilir ve ardından kullanıcı tanımlı azaltma işlevine aktarılır.
  • Haritalama çıktısının aksine, indirgeme çıktısı HDFS'de depolanır (ilk kopya yerel düğümde, diğer kopyalar ise harici düğümlerde depolanır). Bu nedenle, indirgeme çıktısının yazılması ağ bant genişliğini tüketir, ancak yalnızca normal bir HDFS yazma işlem hattının tükettiği kadar.

MapReduce Çalışmayı Nasıl Organize Ediyor?

Bu MapReduce eğitiminde, MapReduce'un nasıl çalıştığını öğreneceğiz.

Hadoop, işi görevlere ayırır. İki tür görev vardır:

  1. Harita görevleri (Bölmeler ve Harita)ping)
  2. Görevleri azaltmak (Yeniden düzenleme, Azaltma)

Map ve Reduce görevlerinin her ikisinin de yürütülmesini içeren tüm yürütme süreci, iki tür varlık tarafından kontrol edilir:

  1. İşTracker: bir yönetici gibi davranır ve gönderilen işin eksiksiz yürütülmesinden sorumludur.
  2. Çoklu GörevTracKers: Köle gibi davranırlar, her biri işin bir bölümünü yerine getirir.

Sisteme yürütülmek üzere gönderilen her iş için bir adet İş bulunur.TracNameNode üzerinde bulunan bir ker nesnesi vardır ve birden fazla Task mevcuttur.TracVeri düğümlerinde bulunan kers'ler.

Not: işTracKer ve GörevTracKer çifti, MapReduce sürüm 1'e (Hadoop 1.x) aittir. Hadoop 2.x'ten itibaren YARN, bu görevleri küme genelindeki bir ResourceManager, her düğümdeki bir NodeManager ve iş başına bir ApplicationMaster arasında bölüştürür; ancak eşleme, karıştırma ve azaltma aşamalarının kendileri değişmeden kalır.

Aşağıdaki diyagram, gönderilen bir işin görevlere nasıl bölündüğünü göstermektedir. tracKüme genelinde.

Bir işin haritalama ve azaltma görevlerine ayrıldığını gösteren diyagram. tracİş tarafından yönlendirilenTracKer ve GörevTrackiraz

  • Bir iş, birden fazla göreve bölünür ve bu görevler daha sonra bir kümedeki birden fazla veri düğümünde çalıştırılır.
  • Bu, işin sorumluluğudur. tracKer, farklı veri düğümlerinde çalışacak görevleri planlayarak etkinliği koordine eder.
  • Daha sonra, bireysel bir görevin yerine getirilmesi görev yöneticisi tarafından ele alınır. tracKer, işin bir bölümünü yürüten her veri düğümünde bulunur.
  • Görev tracKer'in sorumluluğu, iş ilerleme raporunu ilgili birime göndermektir. tracKer.
  • Ek olarak, görev tracKer, periyodik olarak Job'a bir 'kalp atışı' sinyali gönderir.Tracker'e sistemin mevcut durumu hakkında bilgi vermek amacıyla.
  • Dolayısıyla iş tracKer saklıyor tracHer bir işin genel ilerlemesinin k'sı. Görev başarısız olursa, iş tracKer bunu farklı bir göreve yeniden planlayabilir. tracKer.

SSS

YARN, Hadoop 2.x'ten itibaren bunu yaptı. Küme genelinde bir ResourceManager zamanlamayı yönetir, her düğümde bir NodeManager çalışır ve her iş için bir ApplicationMaster bulunur. tracGörevlerini yerine getirir. Haritalama ve indirgeme aşamaları değişmeden kalır.

Geçmiş iş geçmişine göre eğitilmiş modeller, çalışma süresini tahmin eder, bölme boyutlarını ve azaltıcı sayısını önerir ve sapmaları erken tespit eder. Ayrıca sayaç değerlerini de izleyerek, bir çalıştırma bitmeden önce alışılmadık derecede yavaş veya başarısız olan işleri işaretlerler.

Copilot, iskelet yapısını iyi bir şekilde ele alıyor: eşleyici ve indirgeyici imzaları, jenerikler, içe aktarmalar ve sürücü yapılandırma çağrıları. Hangi alanın grup olduğu gibi şema kararları da ele alınıyor.ping Önemli olan, verileri bilen bir geliştiriciye hala ihtiyaç duyulmasıdır.

Genellikle başlangıç ​​noktası, mevcut azaltma yuvalarının sayısının biraz altında olacak şekilde ayarlanır, böylece her azaltıcı tek bir dalga halinde çalışır. Çok az sayıda azaltıcı uzun kuyruklar oluştururken, çok fazla azaltıcı çok sayıda küçük çıktı dosyası üretir.

Birleştirici, ağ üzerinden geçmeden önce harita çıktısı üzerinde çalışan isteğe bağlı bir mini indirgeyicidir. Karıştırma trafiğini önemli ölçüde azaltır, ancak yalnızca indirgeme işlemi hem ilişkilendirici hem de değişmeli olduğunda kullanılabilir.

Spark MapReduce ara sonuçları bellekte tutar ve bir işi aşamaların yönlendirilmiş bir grafiği olarak ifade ederken, MapReduce aşamalar arasında ara çıktıyı diske yazar. Spark Bu nedenle yinelemeli işlemler için çok daha hızlıdır.

Bölümleyici, varsayılan olarak anahtarı indirgeyici sayısına göre modül alarak hangi ara anahtarın indirgeyiciye verileceğine karar verir. Bu karma işlemi tek bir indirgeyiciyi aşırı yüklediğinde özel bir bölümleyici yazılır.

Hadoop, her giriş bölümü için bir eşleme görevi oluşturur ve bir bölüm, tüm bir dosya yerine bir bayt aralığıdır. Büyük bir dosya birçok bölüm oluştururken, birçok küçük dosya küçük ve verimsiz eşleme görevleri oluşturur.

Bu yazıyı şu şekilde özetleyin: