İçindekiler:
- Büyük veriler için harita işlevi
- Harita fonksiyonu gibi,
- Bazen bir çıktı listesi üretmek yeterlidir. Aynı şekilde, bazen bir listenin her bir öğesi üzerinde işlemler yapmak yeterlidir. Çoğunlukla, büyük miktarlarda girdi verilerini incelemek, veriden belirli öğeleri seçmek ve sonra ilgili veriden değerli şeyler hesaplamak istiyorsunuz.
Video: Big Data Nedir? Nerelerde Kullanılır? 2024
MapReduce, büyük veri için ideal olan bir yazılım çerçevesidir; çünkü geliştiricilerin, dağılmış bir işlemci grubuna paralel olarak büyük miktarda yapılandırılmamış verileri işleyebilecek programlar oluşturabilmeleri sağlanmaktadır.
Büyük veriler için harita işlevi
map işlevi, birçok işlevsel programlama dilinin yıllardır bir parçası olmuştur. Harita, veri öğelerinin listelerini işlemek için çekirdek bir teknoloji olarak yeniden canlandı.
Fonksiyonel dillerdeki operatörler, verilerin yapısını değiştirmez; çıktıları olarak yeni veri yapıları yaratırlar. Orijinal verinin kendisi de değiştirilmemiş. Dolayısıyla harita fonksiyonunu muafiyetle kullanabilirsiniz, çünkü değerli depolanan verilerinize zarar vermez.
Fonksiyonel programlamanın diğer bir avantajı, verilerin akışını veya akışını açıkça yönetmek zorunda değildir. Bu, programcının, veri çıktısını ve yerleşimini açıkça yönetmesinden mahrum eder. Son olarak, verilere ilişkin işlemlerin sırası reçete edilmez.
Çözüm elde etmenin bir yolu girilen veriyi tanımlamak ve bir liste oluşturmaktır:
mylist = ("en son genel seçime katılan tüm ilçelerimizdir") > Haritayı işlevi
kullanarak howManyPeople işlevini oluşturun. Bu, yalnızca 50.000'den fazla kişiyi içeren ilçeleri seçer: harita nasılBirçokPeople (mylist) = [howNanyPeople "ilçe 1"; howManyPeople "ilçe 2"; howManyPeople "ilçe 3"; howManyPeople "ilçe 4"; …]
Şimdi nüfusu 50, 000'den büyük tüm ilçelerin yeni bir çıktı listesi üretiyoruz:
(Hayır, ilçe 1; evet, ilçe 2; hayır, ilçe 3; evet, ilçe 4;?, Ilçe nnn)
İşlev, özgün listede hiçbir değişiklik yapmadan yürütülür. Buna ek olarak, çıkış listesinin her öğesinin, giriş listesinin ilgili bir öğesine, evet veya hayır ekli eşleştirdiğini görebilirsiniz. İlçe, 50.000'in üzerinde kişinin gereksinimini karşıladıysa, harita işlevi bir evet ile tanımlar. Değilse, hayır belirtilir.
Harita fonksiyonu gibi,
azalma yıllarca işlevsel programlama dillerinin bir özelliğidir. Reduce işlevi, bir harita işlevinin çıktısını alır ve programcının istediği şekilde listeyi "azaltır". Azaltma işlevinin gerektirdiği ilk adım, bir başlangıç değerine sahip olan
biriktirici , adlı bir şeye yerleştirmektir. Akümülatörde bir başlangıç değeri depoladıktan sonra, azaltma işlevi daha sonra listenin her bir öğesini işler ve ihtiyaç duyduğunuz işlemi listede gerçekleştirir.
Demokrat adayın çoğunluğunun bulunduğu ilçeleri belirlemeniz gerektiğini varsayalım. HowManyPeople harita fonksiyonunun giriş listesinin her bir öğesine baktığını ve 50.000'den fazla kişinin (evet) sayıdaki ilçelerin çıktı listesini ve 50.000 kişiden daha az kişinin bulunduğu bir çıktı listesini (no) oluşturduğunu unutmayın.
(hayır, ilçe 1; evet, ilçe 2; hayır, ilçe 3; evet, ilçe 4;, county nnn)
Bu şimdi azaltma işlevi için bir giriştir.
countylist = (hayır, ilçe 1; evet, ilçe 2; hayır, ilçe 3; evet, ilçe 4;?, Ilçe nnn) azaltmak isDemocrat (countylist)
listenin her bir elemanı ve çoğunluğu Demokratik olan çoğunluk 50, 000'den büyük nüfusa sahip tüm ilçelerin bir listesini döndürür.
Büyük veri haritasını koymak ve birlikte azaltmak
Bazen bir çıktı listesi üretmek yeterlidir. Aynı şekilde, bazen bir listenin her bir öğesi üzerinde işlemler yapmak yeterlidir. Çoğunlukla, büyük miktarlarda girdi verilerini incelemek, veriden belirli öğeleri seçmek ve sonra ilgili veriden değerli şeyler hesaplamak istiyorsunuz.
Bu girdi listesini değiştirmek istemiyorsunuz, böylece yeni varsayımlar ve yeni verilerle farklı şekillerde kullanabilirsiniz.
Yazılım geliştiricileri algoritmalara dayalı uygulamaları tasarlarlar.
algoritması , hizmetin genel bir hedefe göre gerçekleştirilmesi gereken bir dizi adımdan başka bir şey değildir. Biraz öyle gözükebilir: Çok sayıda veya veri veya kayıtlarla başlayın.
-
Verileri yineleyin.
-
İlgilendiğiniz bir şeyi çıkarmak ve bir çıktı listesi oluşturmak için harita işlevini kullanın.
-
Daha sonraki işlemler için optimize etmek için çıktı listesini düzenleyin.
-
Bir sonuç kümesini hesaplamak için reduce işlevini kullanın.
-
Nihai çıktı üretin.
-
Programcılar bu yaklaşımı kullanarak her türlü uygulamayı uygulayabilir, ancak bu noktaya gelen örnekler çok basitti, bu nedenle MapReduce'un gerçek değeri belirgin olmayabilir. Son derece büyük girdi verileri olduğunda ne olur? Terabayt veri için aynı algoritmayı kullanabilir misin? İyi haber evet.
Bütün operasyonlar bağımsız görünüyor. Çünkü onlar öyle. MapReduce'un asıl gücü bölmek ve fethetmektir. Çok büyük bir problem çıkarın ve onu daha küçük, daha yönetilebilir parçalara bölün, her bir parçayı bağımsız olarak çalıştırın ve sonunda hepsini birlikte çekin. Ayrıca, harita fonksiyonu değiştirilebilir - diğer bir deyişle, bir fonksiyonun yürütülmesi sırası önemli değildir.
Böylece MapReduce, çalışmalarını bir ağdaki farklı makinelerde gerçekleştirebilir. Dahili veya harici, birden fazla veri kaynağından da yararlanabilir. MapReduce, tüm işlemenin aynı sorunu çözmeye yönelik olduğundan emin olmak için benzersiz bir anahtar oluşturarak çalışmalarını izler.Bu anahtar aynı zamanda tüm dağıtılmış görevlerin sonunda tüm çıktıyı bir araya getirmek için kullanılır.