Büyük Veride MapReduce'a Giriş Kılavuzu

Yayınlanan: 2022-09-21

MapReduce, uygulama oluşturmanın etkili, hızlı ve uygun maliyetli bir yolunu sunar.

Bu model, programcılara ve kuruluşlara birçok fayda sağlamak için paralel işleme, veri yerelliği vb. gibi gelişmiş kavramları kullanır.

Ancak piyasada o kadar çok programlama modeli ve çerçevesi mevcut ki seçim yapmak zorlaşıyor.

Ve Büyük Veri söz konusu olduğunda, hiçbir şeyi seçemezsiniz. Büyük veri yığınlarını işleyebilecek bu tür teknolojileri seçmelisiniz.

MapReduce bunun için harika bir çözüm.

Bu yazıda MapReduce'un gerçekte ne olduğunu ve nasıl faydalı olabileceğini tartışacağım.

Hadi başlayalım!

MapReduce Nedir?

MapReduce, Apache Hadoop çerçevesi içindeki bir programlama modeli veya yazılım çerçevesidir. Hata toleransı ve güvenilirlik ile binlerce düğümde (kümeler veya ızgaralar olarak adlandırılır) çok büyük verileri paralel olarak işleyebilen uygulamalar oluşturmak için kullanılır.

Bu veri işleme, verilerin depolandığı bir veritabanı veya dosya sisteminde gerçekleşir. MapReduce, büyük veri hacimlerine erişmek ve yönetmek için bir Hadoop Dosya Sistemi (HDFS) ile çalışabilir.

Bu çerçeve 2004 yılında Google tarafından tanıtıldı ve Apache Hadoop tarafından popüler hale getirildi. Java, C++, Python ve Ruby dahil olmak üzere farklı dillerde geliştirilmiş MapReduce programlarını çalıştıran Hadoop'ta bir işleme katmanı veya motorudur.

Bulut bilişimdeki MapReduce programları paralel olarak çalışır, bu nedenle büyük ölçeklerde veri analizi yapmak için uygundur.

apchaehadoopmapreduce

MapReduce, “harita” ve “azaltma” işlevlerini kullanarak bir görevi daha küçük, çoklu görevlere bölmeyi amaçlar. Her görevi eşleyecek ve ardından birkaç eşdeğer göreve indirgeyecek, bu da daha az işlem gücü ve küme ağında ek yük ile sonuçlanacak.

Örnek: Misafirlerle dolu bir eve yemek hazırladığınızı varsayalım. Yani tüm yemekleri kendiniz hazırlamaya çalışırsanız ve tüm işlemleri kendiniz yaparsanız, yoğun ve zaman alıcı bir hal alacaktır.

Ancak, görevleri aynı anda gerçekleştirebilecek başka bir kişiye farklı işlemler dağıtarak yemeği hazırlamanıza yardımcı olması için bazı arkadaşlarınızı veya meslektaşlarınızı (misafir değil) dahil ettiğinizi varsayalım. Bu durumda misafirleriniz henüz evdeyken yemeği çok daha hızlı ve kolay hazırlarsınız.

MapReduce, belirli bir görevi tamamlamanın daha hızlı ve daha kolay bir yolunu sağlamak için dağıtılmış görevler ve paralel işleme ile benzer şekilde çalışır.

Apache Hadoop, programcıların büyük dağıtılmış veri kümelerinde modelleri yürütmek için MapReduce'u kullanmasına ve kalıpları bulmak, tahminler yapmak, korelasyonları noktalamak ve daha fazlası için gelişmiş makine öğrenimi ve istatistiksel teknikler kullanmasına olanak tanır.

MapReduce'un Özellikleri

MapReduce'un ana özelliklerinden bazıları şunlardır:

  • Kullanıcı arabirimi: Her çerçeve yönü hakkında makul ayrıntılar sağlayan sezgisel bir kullanıcı arabirimi elde edeceksiniz. Görevlerinizi sorunsuz bir şekilde yapılandırmanıza, uygulamanıza ve ayarlamanıza yardımcı olacaktır.
Kullanıcı arayüzü
  • Yük: Uygulamalar, haritayı etkinleştirmek ve işlevleri azaltmak için Eşleştirici ve Düşürücü arayüzlerini kullanır. Eşleştirici, giriş anahtar/değer çiftlerini ara anahtar/değer çiftleriyle eşler. İndirgeyici, bir anahtarı diğer daha küçük değerlerle paylaşan ara anahtar/değer çiftlerini azaltmak için kullanılır. Üç işlevi yerine getirir - sırala, karıştır ve küçült.
  • Partitioner: Ara map-output tuşlarının bölünmesini kontrol eder.
  • Reporter: İlerlemeyi rapor etme, Sayaçları güncelleme ve durum mesajlarını ayarlama işlevidir.
  • Sayaçlar: Bir MapReduce uygulamasının tanımladığı global sayaçları temsil eder.
  • OutputCollector: Bu işlev, ara çıktılar yerine Eşleştirici veya Düşürücü'den çıktı verilerini toplar.
  • RecordWriter: Veri çıktısını veya anahtar/değer çiftlerini çıktı dosyasına yazar.
  • DistributedCache: Uygulamaya özel daha büyük, salt okunur dosyaları verimli bir şekilde dağıtır.
  • Veri sıkıştırma: Uygulama yazarı hem iş çıktılarını hem de ara harita çıktılarını sıkıştırabilir.
  • Hatalı kayıt atlama: Harita girdilerinizi işlerken birkaç hatalı kaydı atlayabilirsiniz. Bu özellik, sınıf – SkipBadRecords aracılığıyla kontrol edilebilir.
  • Hata Ayıklama: Kullanıcı tanımlı komut dosyalarını çalıştırma ve hata ayıklamayı etkinleştirme seçeneğine sahip olacaksınız. MapReduce'daki bir görev başarısız olursa, hata ayıklama komut dosyanızı çalıştırabilir ve sorunları bulabilirsiniz.

HaritaReduce Mimarisi

mimari

Bileşenlerine daha derine inerek MapReduce mimarisini anlayalım:

  • İş: MapReduce'daki bir iş, MapReduce istemcisinin gerçekleştirmek istediği asıl görevdir. Nihai görevi oluşturmak için bir araya gelen birkaç küçük görevden oluşur.
  • İş Geçmişi Sunucusu: Bir iş yürütülmeden önce veya sonra oluşturulan günlükler gibi bir uygulama veya görev hakkındaki tüm geçmiş verileri depolamak ve kaydetmek için bir arka plan programı işlemidir.
  • İstemci: Bir istemci (program veya API), yürütme veya işleme için bir işi MapReduce'a getirir. MapReduce'da, bir veya birden fazla istemci, işlenmek üzere sürekli olarak MapReduce Yöneticisine iş gönderebilir.
  • MapReduce Master: Bir MapReduce Master, bir işi birkaç küçük parçaya bölerek görevlerin aynı anda ilerlemesini sağlar.
  • İş Parçaları: Alt işler veya iş bölümleri, birincil işin bölünmesiyle elde edilir. Son görevi oluşturmak için en sonunda üzerinde çalışılır ve birleştirilirler.
  • Girdi verileri: Görev işleme için MapReduce'a beslenen veri kümesidir.
  • Çıktı verileri: Görev işlendikten sonra elde edilen nihai sonuçtur.

Bu mimaride gerçekte olan şey, istemcinin bir işi daha küçük, eşit parçalara bölen MapReduce Master'a göndermesidir. Bu, daha büyük görevler yerine daha küçük görevlerin işlenmesi daha az zaman aldığından işin daha hızlı işlenmesini sağlar.

Bununla birlikte, görevlerin çok küçük görevlere bölünmediğinden emin olun çünkü bunu yaparsanız, bölünmeleri yönetmek için daha büyük bir ek yük ile karşı karşıya kalmanız ve bunun için önemli ölçüde zaman kaybetmeniz gerekebilir.

Ardından, Harita ve Küçültme görevlerine devam etmek için iş parçaları kullanıma sunulur. Ayrıca, Harita ve Küçültme görevleri, ekibin üzerinde çalıştığı kullanım durumuna göre uygun bir programa sahiptir. Programcı, gereksinimleri karşılamak için mantık tabanlı kodu geliştirir.

mapreducemimari

Bundan sonra, giriş verileri Harita Görevine beslenir, böylece Harita bir anahtar/değer çifti olarak çıktıyı hızlı bir şekilde üretebilir. Bu verileri HDFS'de depolamak yerine, çoğaltma olasılığını ortadan kaldırmak için verileri depolamak için yerel bir disk kullanılır.

Görev tamamlandığında çıktıyı atabilirsiniz. Bu nedenle, çıktıyı HDFS'de depoladığınızda çoğaltma aşırıya kaçacaktır. Her harita görevinin çıktısı, azaltma görevine beslenecek ve harita çıktısı, azaltma görevini çalıştıran makineye sağlanacaktır.

Daha sonra çıktı birleştirilecek ve kullanıcı tarafından tanımlanan azaltma işlevine iletilecektir. Son olarak, azaltılmış çıktı bir HDFS'de depolanacaktır.

Ayrıca, süreç, nihai hedefe bağlı olarak veri işleme için birkaç Haritalama ve Küçültme görevine sahip olabilir. Harita ve Azaltma algoritmaları, zaman veya alan karmaşıklığını minimumda tutmak için optimize edilmiştir.

MapReduce öncelikle Harita ve Azaltma görevlerini içerdiğinden, onlar hakkında daha fazla bilgi edinmek önemlidir. Öyleyse, bu konular hakkında net bir fikir edinmek için MapReduce'un aşamalarını tartışalım.

MapReduce'un Aşamaları

Harita

Bu aşamada girdi verileri çıktı veya anahtar/değer çiftleriyle eşleştirilir. Burada anahtar, bir adresin kimliğine atıfta bulunabilirken, değer o adresin gerçek değeri olabilir.

harita-pahse

Bu aşamada yalnızca bir iki görev vardır – bölmeler ve haritalama. Bölmeler, ana işten ayrılan alt parçalar veya iş bölümleri anlamına gelir. Bunlara girdi bölmeleri de denir. Bu nedenle, bir girdi bölünmesi, bir harita tarafından tüketilen bir girdi yığını olarak adlandırılabilir.

Ardından, haritalama görevi gerçekleşir. Bir harita küçültme programı yürütülürken ilk aşama olarak kabul edilir. Burada, her bölmede bulunan veriler, çıktıyı işlemek ve oluşturmak için bir harita işlevine iletilecektir.

Map() işlevi, bir ara anahtar-değer çifti oluşturarak giriş anahtar-değer çiftleri üzerindeki bellek havuzunda yürütülür. Bu yeni anahtar/değer çifti, Reduce() veya Reducer işlevine beslenecek girdi olarak çalışacaktır.

Azaltmak

Eşleme aşamasında elde edilen ara anahtar/değer çiftleri, Azaltma işlevi veya Azaltıcı için girdi olarak çalışır. Haritalama aşamasına benzer şekilde, iki görev söz konusudur - karıştırma ve azaltma.

Böylece elde edilen anahtar/değer çiftleri sıralanır ve Redüktöre beslenmek üzere karıştırılır. Ardından, Redüktör, geliştiricinin yazdığı indirgeyici algoritmasına dayalı olarak, verileri anahtar/değer çiftine göre gruplandırır veya toplar.

Burada, bir çıkış değeri döndürmek için karıştırma aşamasından gelen değerler birleştirilir. Bu aşama tüm veri setini özetler.

indirgeme aşaması

Artık Harita ve Azaltma görevlerini yürütme sürecinin tamamı bazı varlıklar tarafından kontrol ediliyor. Bunlar:

  • İş İzleyici: Basit bir deyişle, bir iş izleyici, gönderilen bir işi tamamen yürütmekten sorumlu olan bir usta olarak hareket eder. İş izleyici, bir kümedeki tüm işleri ve kaynakları yönetir. Ayrıca, iş izleyici, belirli bir veri düğümünde çalışan Görev İzleyici'ye eklenen her haritayı zamanlar.
  • Çoklu görev izleyiciler: Basit bir deyişle, çoklu görev izleyicileri, Job Tracker'ın talimatını izleyerek görevi gerçekleştiren bağımlılar olarak çalışır. Eşleme ve Azaltma görevlerini yürüten kümedeki her düğüme ayrı ayrı bir görev izleyici dağıtılır.

Bir iş, bir kümeden farklı veri düğümlerinde çalışacak birkaç göreve bölüneceği için çalışır. İş İzleyici, görevleri planlayarak ve bunları birden çok veri düğümünde çalıştırarak görevi koordine etmekten sorumludur. Ardından, her bir veri düğümünde bulunan Görev İzleyici, işin bölümlerini yürütür ve her görevle ilgilenir.

Ayrıca, Görev İzleyiciler, iş izleyiciye ilerleme raporları gönderir. Ayrıca Task Tracker, Job Tracker'a periyodik olarak bir "kalp atışı" sinyali gönderir ve sistem durumunu bildirir. Herhangi bir arıza durumunda, bir iş izleyici, işi başka bir görev izleyicide yeniden zamanlayabilir.

Çıktı aşaması: Bu aşamaya ulaştığınızda, İndirgeyiciden üretilen son anahtar/değer çiftlerine sahip olacaksınız. Anahtar/değer çiftlerini çevirmek için bir çıktı biçimlendirici kullanabilir ve bunları bir kayıt yazıcısı yardımıyla bir dosyaya yazabilirsiniz.

MapReduce'u Neden Kullanmalı?

MapReduce'u büyük veri uygulamalarınızda neden kullanmanız gerektiğini açıklayan bazı avantajları:

Paralel İşleme

paralel işleme

Bir işi, MapReduce'da her düğümün aynı anda bu işin bir bölümünü ele aldığı farklı düğümlere bölebilirsiniz. Bu nedenle, daha büyük görevleri daha küçük olanlara bölmek karmaşıklığı azaltır. Ayrıca, farklı görevler tek bir makine yerine farklı makinelerde paralel olarak çalıştığından, verilerin işlenmesi önemli ölçüde daha az zaman alır.

Veri Konumu

MapReduce'da işlem birimini veriye taşıyabilirsiniz, tersi değil.

Geleneksel yöntemlerle veriler, işlenmek üzere işlem birimine getirildi. Ancak, verilerin hızlı büyümesiyle birlikte bu süreç birçok zorluğu da beraberinde getirmeye başladı. Bazıları daha yüksek maliyetli, daha fazla zaman alan, ana düğüme yük bindiren, sık görülen arızalar ve düşük ağ performansıydı.

Ancak MapReduce, tersine bir yaklaşım izleyerek bu sorunların üstesinden gelmeye yardımcı olur - verilere bir işlem birimi getirir. Bu şekilde, veriler, her düğümün depolanan verilerin bir bölümünü işleyebileceği farklı düğümler arasında dağıtılır.

Sonuç olarak, her bir düğüm, karşılık gelen veri parçasıyla paralel çalıştığı için maliyet etkinliği sunar ve işlem süresini azaltır. Ayrıca, her düğüm bu verilerin bir kısmını işlediğinden, hiçbir düğüme aşırı yüklenme olmaz.

Güvenlik

güvenlik haritası

MapReduce modeli daha yüksek güvenlik sunar. Küme güvenliğini artırırken uygulamanızı yetkisiz verilerden korumaya yardımcı olur.

Ölçeklenebilirlik ve Esneklik

MapReduce, yüksek düzeyde ölçeklenebilir bir çerçevedir. Binlerce terabaytlık verileri kullanarak uygulamaları birkaç makineden çalıştırmanıza olanak tanır. Ayrıca yapılandırılmış, yarı yapılandırılmış veya yapılandırılmamış ve herhangi bir formatta veya boyutta veri işleme esnekliği sunar.

Basitlik

MapReduce programlarını Java, R, Perl, Python ve daha fazlası gibi herhangi bir programlama dilinde yazabilirsiniz. Bu nedenle, veri işleme gereksinimlerinin karşılanmasını sağlarken herkesin program öğrenmesi ve yazması kolaydır.

MapReduce Kullanım Örnekleri

  • Tam metin indeksleme: MapReduce, tam metin indeksleme yapmak için kullanılır. Eşleştiricisi, tek bir belgedeki her kelimeyi veya tümceyi eşleyebilir. Ve Redüktör, eşlenen tüm öğeleri bir dizine yazmak için kullanılır.
  • Pagerank'i Hesaplama: Google, Pagerank'i hesaplamak için MapReduce'u kullanır.
  • Günlük analizi: MapReduce, günlük dosyalarını analiz edebilir. Eşleştirici, erişilen web sayfalarını ararken, büyük bir günlük dosyasını çeşitli parçalara veya bölmelere ayırabilir.

Günlükte bir web sayfası tespit edilirse, azaltıcıya bir anahtar/değer çifti beslenecektir. Burada web sayfası anahtar olacak ve “1” dizini değerdir. Redüktör'e bir anahtar/değer çifti verdikten sonra, çeşitli web sayfaları toplanacaktır. Nihai çıktı, her web sayfası için toplam isabet sayısıdır.

log analizi
  • Ters Web Bağlantısı Grafiği: Çerçeve ayrıca Ters Web Bağlantısı Grafiği'nde kullanım bulur. Burada Map(), URL hedefini ve kaynağı verir ve kaynaktan veya web sayfasından girdi alır.

Ardından, Reduce(), hedef URL ile ilişkili her kaynak URL'nin listesini toplar. Son olarak, kaynakların ve hedefin çıktısını verir.

  • Kelime sayımı: MapReduce, belirli bir belgede bir kelimenin kaç kez göründüğünü saymak için kullanılır.
  • Küresel ısınma: Kuruluşlar, hükümetler ve şirketler, küresel ısınma sorunlarını çözmek için MapReduce'u kullanabilir.

Örneğin , küresel ısınma nedeniyle okyanusun artan sıcaklık seviyesi hakkında bilgi edinmek isteyebilirsiniz. Bunun için dünya çapında binlerce veri toplayabilirsiniz. Veriler yüksek sıcaklık, düşük sıcaklık, enlem, boylam, tarih, saat vb. olabilir. Bu, MapReduce kullanarak çıktıyı hesaplamak için birkaç harita alacak ve görevleri azaltacaktır.

  • İlaç denemeleri: Geleneksel olarak, veri bilimcileri ve matematikçiler, bir hastalıkla savaşabilecek yeni bir ilaç formüle etmek için birlikte çalıştılar. Algoritmaların ve MapReduce'un yaygınlaştırılmasıyla, kuruluşlardaki BT departmanları yalnızca Süper Bilgisayarlar, Ph.D. tarafından ele alınan sorunları kolayca çözebilir. bilim adamları, vb. Artık bir ilacın etkinliğini bir grup hasta için inceleyebilirsiniz.
  • Diğer uygulamalar: MapReduce, aksi halde ilişkisel bir veritabanına sığmayacak olan büyük ölçekli verileri bile işleyebilir. Ayrıca veri bilimi araçlarını kullanır ve bunları daha önce yalnızca tek bir bilgisayarda mümkün olan farklı, dağıtılmış veri kümeleri üzerinde çalıştırmaya izin verir.

MapReduce'un sağlamlığı ve basitliğinin bir sonucu olarak, askeriyede, ticarette, bilimde vb. alanlarda uygulama bulur.

Çözüm

MapReduce, teknolojide bir atılım olduğunu kanıtlayabilir. Bu sadece daha hızlı ve daha basit bir süreç değil, aynı zamanda düşük maliyetli ve daha az zaman alıcıdır. Avantajları ve artan kullanımı göz önüne alındığında, endüstriler ve kuruluşlar arasında daha fazla benimsenmeye tanık olması muhtemeldir.

Ayrıca Büyük Veri ve Hadoop'u öğrenmek için en iyi kaynakları keşfedebilirsiniz.