MapReduce sadece bir böl ve yönet uygulamasından başka bir şey midir?


26

Bir problemi bireysel problemler bağımsız olarak çözülene kadar küçüklere bölmek ve sonra orijinal soruyu cevaplamak için bunları birleştirmek, bölmek ve fethetmek için algoritma tasarım tekniği olarak bilinir . [Bkz: CLR ile Algoritmalara Giriş]

Son zamanlarda, özellikle çok büyük veri kümeleri alanındaki hesaplama problemlerini çözmek için bu yaklaşım, bölmek ve fethetmek yerine MapReduce olarak adlandırılmıştır .

Sorum şu şekilde: MapReduce, bölünme ve fethetme yaklaşımına dayanan tescilli bir çerçeveden başka bir şey veya başka bir açıdan benzersiz kılan detaylar var mı?


Böl ve ele geçir, bir algoritma sınıfıdır. MapReduce bu sınıfın bir örneğidir.
Martin Spamer

Yanıtlar:


28

MapReduce mimarisini soruyorsanız, o zaman bu sadece bir bölme ve fethetme tekniğidir. Bununla birlikte, yararlı herhangi bir MapReduce mimarisi, sorun kümesini etkin bir şekilde "bölmek", "fethetmek" ve son olarak "azaltmak" için başka altyapı dağlarına sahip olacaktır. Büyük bir MapReduce dağıtımıyla (işlem düğümlerinin 1000'i), bu işi bölümlere ayırmak, bir şeyi hesaplamak ve son olarak tüm sonuçları toplamak için önemsiz olan bu adımlar. Yük dengeleme, ölü düğüm tespiti, ara durumu kaydetme (uzun süren problemler için) gibi şeyler kendi başlarına zor problemlerdir.


1
“Verimli bir şekilde“ bölmek ”,“ fethetmek ”ve son olarak“ sorunu azaltmak ”- bu yanıltıcıdır:“ harita ”adımı bir D&C çözücüsü gerektirmez (veriler tamamen bağımsız olduğu için), sadece parçaları dağıtabilirsiniz bir çeşit zamanlayıcı kullanarak işin; azaltma aşaması D&C gerektirir.
Konrad Rudolph

4
“Sadece” kelimesi bu bağlamda yanıltıcıdır.

Belirtildiği gibi, bu cevap sadece yanıltıcı değil, tamamen yanlış. MapReduce kesinlikle değil "sadece bir bölmek ve fethetmek tekniği".
Jerry Coffin,

10

MapReduce böl ve fethet algoritmaları uygulanması için bir çerçeve son derece ölçeklenebilir bir şekilde otomatik olarak bilgisayarların bir keyfi büyük kümedeki düğümler birimleri İşsiz dağıtarak, ve birim-of-the çalışmalarını yeniden dağıtarak bireysel düğümlerin hatalarını otomatik taşıma başka bir düğüme

Bu çok karmaşık bir kavram değil, çok kullanışlı bir altyapı parçası.


10

MapReduce, çoğu bölme ve fethetme sisteminden oldukça temel bir şekilde ayrışıyor, ancak o kadar basit ki, birçok insan onu neredeyse özlüyor. Bunun gerçek dehası ara sonuçları etiketlemektir.

Tipik (önceki) bir böl ve yönet sisteminde, çalışmayı seri olarak bölüştürür, iş paketlerini paralel olarak yürütür ve ardından bu çalışmanın sonuçlarını seri olarak yeniden birleştirirsiniz.

MapReduce'da, işi seri olarak bölüp, iş paketlerini paralel olarak yürütüyorsunuz ve sonuçları hangi sonuçların diğer sonuçlarla gideceğini belirtmek için etiketliyorsunuz. Birleştirme daha sonra aynı etikete sahip tüm sonuçlar için seridir, ancak farklı etiketlere sahip sonuçlar için paralel olarak gerçekleştirilebilir.

Önceki sistemlerin çoğunda, birleştirme adımı en önemsiz işler dışındaki herkes için bir tıkanıklık haline geldi. MapReduce sayesinde olabilir görevlerin doğası tüm birleştirilmesi seri yapılması gerektiriyorsa yine de. Bununla birlikte, görev sonuçların bir dereceye kadar paralel olarak birleştirilmesine izin veriyorsa, MapReduce bu olasılıktan yararlanmak için basit bir yol sunar. Diğer çoğu sistem iki şeyden birini yapar: ya bazı birleştirmeler için gerekli olabileceğinden tüm birleştirmeyi seri olarak gerçekleştirir ya da belirli bir görevin paralel birleştirmesini statik olarak tanımlar. MapReduce, birleştirme aşamasında mümkün olduğu kadar paralel olarak otomatik olarak programlamak için yeterli veri sağlarken, yine de (eşleme adımında hata yapmadığınızı varsayarak) tutarlılığın korunmasını sağlar.

Ayrıca, MapReduce'da, tüm adımların özyinelemeli olabileceği açıktır, bu yüzden büyük bir görevi paralel olarak gerçekleştirilebilecek 5 küçük göreve bölen büyük bir görevi kıran bir ilk haritalama adımına sahip olabilirim - dönüş) bir dizi daha küçük paralel görevle eşleştirilir vb.

Bu, pek çok makineden yararlanmak için büyük bir görevi hızlı bir şekilde parçalara ayırmak için hem haritalama hem de azaltma taraflarında bir ağaç yapısına yol açar.


7

MapReduce olduğu değil birçok örneklerde Öyle görünüyor olsa da, sadece bir bölmek ve fethetmek tekniği.

Haritalama adımında, bire çok ilişki kurmak isteyebilirsiniz. Böylece basitçe davalara ayrılmıyorsunuz.

Harita ve küçültme arasında (uygulamaya bağlı olarak) bir sıralama veya bir karma adım vardır. Bu operasyonun verimliliği, genel kaynak gereksinimleri için son derece önemlidir. Uygulama programcısı için detayları görünmez, ancak bu adım çerçevenin kalbidir.

Azaltma işlemi bir tür birleşimidir. Bir fetih olarak düşünülebilecek, ancak pratikte “daha ​​sonra kullanım için veri yayınlama” ya da “verileri bir veri deposuna kaydetme” eğilimi vardır. (Büyük veri kümeleriniz varsa, giriş ve son sonuçlar da dahil olmak üzere her şeyin dağıtılmasını istediğinize dikkat edin. Bu nedenle dağıtılmış bir anahtar / değer deposu hem girdi almak hem de çıktıyı depolamak için bir anlam ifade eder.)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.