MapReduce dizayn nümunələri - A qısa giriş

featured_img

MapReduce dizayn nümunələri

Baxış: Design model indi proqram inkişaf demək olar ki, bütün sahələrdə istifadə olunan ümumi termindir. Patterns heç bir şey, lakin bəzi sübut və test dizayn üsulları biznes problemləri həll etmək üçün istifadə. MapReduce yeni texnologiya domain və bu da data hesablama məsələləri həll etmək üçün öz dizayn nümunələri var.

In this article, Mən MapReduce çərçivəsində istifadə olunan müxtəlif dizayn nümunələri danışacaqlar.

Giriş: Map kompüter bir sıra yaşayır məlumatların emal üçün istifadə azaltmaq. Bu nə biz və nə biz bilməz arasında aydın və fərqli sərhədləri təmin. Bu nəzərə almaq lazımdır variantları sayı edir, az. At the same time, biz məhdudiyyətlər ilə bir problemi həll etmək üçün necə anlamaq olar. Design nümunələri zaman zaman bir çox problemlər test edilmişdir və abstraksiya doğru səviyyəsi göstərir.

MapReduce dizayn nümunələri problemlər və həllər kiçik məkanda eyni rolu tutur. Onlar bizim data hesablanması ilə bağlı məsələləri həll etmək üçün ümumi çərçivəni təmin, problem domen konsentrə olmadan. MapReduce dizayn nümunələri də MapReduce applications birlikdə komanda üçün ortaq bir dil təmin.

MapReduce Design Pattern: İndi müxtəlif dizayn müzakirə edək Uğurlar bir-bir yaxınlaşır.

hesablayıcı:

Problem bəyanat - Bizə hər sənəd baxımından bir sıra ehtiva edir sənədlər yığını var ki, hesab edək. İndi sənəd hər bir müddət halları sayı hesablamaq üçün şərti var.

Həll - Aşağıdakı kodu parçası, biz sadəcə qeydlər '1' hər bir müddət üçün qarşılaşdığı bir Mapper var. reduktor burada belə olanları siyahısı ərzində hareket, Onları yekunlaşdırır və nəticə çıxarır.

Listing 1: Kodu Computing - 1

[Code]

class Mapper

üsul Map(docid id, d doc)

doc bütün müddət t do D

buraxmaq(müddətli t, saymaq 1)

class Azaldan

üsul azaldır(müddətli t, sayar [C1, , C2…])

CNT = 0

bütün count c üçün [C1, , C2…] etmək

CNT = CNT + c

buraxmaq(müddətli t, CNT saymaq)

[/Code]

Simple baxmayaraq, lakin yuxarıda code dummy counters yüksək miqdarda Mapper yaydığı olunur aşkar çatışmamazlıqlara malikdir. İndi hər sənəd üçün counters cəmlənməsi ilə bu azalda bilər.

Listing 2: Kodu Computing - 2

[Code]

class Mapper

üsul Map(docid id, d doc)

Harray = Yeni AssociativeArray

doc bütün müddət t do D

Harray{t} = Harray{t} + 1

Harray bütün müddət t yoxdur

buraxmaq(müddətli t, Harray saymaq{t})

[/Code]

Now, kombayınlar var imkan verir bütün sənədlər counters toplamaq üçün -

Listing 3: Kodu Computing - 3

[Code]

class Mapper

üsul Map(docid id, d doc)

doc bütün müddət ter etmək D

buraxmaq(müddətli ter, saymaq 1)

class Birleştirici

metodu Combine(müddətli ter, [C1, , C2…])

məbləğ = 0

bütün count CNT üçün [C1, , C2…] etmək

məbləği = məbləği + CNT

buraxmaq(müddətli t, məbləği saymaq)

class Azaldan

üsul azaldır(müddətli t, sayar [C1, , C2…])

totalCnt = 0

bütün count CNT üçün [C1, , C2…] etmək

totalCnt = totalCnt + CNT

buraxmaq(müddətli t, totalCnt saymaq)

[/Code]

tutuşdurulması:

Problem bəyanat -

Biz maddələr bir sıra və bəzi maddələr bəzi funksiyası var. İndi funksiyası eyni dəyəri var ki, bütün maddələr saxlamaq və ya bir qrup emal üçün bütün belə maddələr tələb bəzi digər hesablanması yerinə yetirmək üçün tələb olunur.

Həll -

Biz Mapper hər bir maddə üçün verilir funksiyası hesablayır və əsas və onun dəyəri kimi maddə kimi funksiyası dəyər qaytarır həlli var. reduktor rolu bütün qruplaşdırılmış maddələr almaq və onları emal və ya onlara saxlamaq üçün.

Filtering (grep), Təhlil və Qiymətləndirmə:

Problem bəyanat -

bizə qeydlər bir sıra var və tələb bir şərt cavab verən bütün qeydlər toplamaq və ya digər nümayəndəliyi formatları bu qeydlər çevirmək üçün edir nəzərdən keçirək. dəyərlərin mətn təhlil və hasilatı - problemin ikinci hissəsi kimi vəzifələri daxildir.

Həll -

Bu problemin həlli olduqca düz irəli edir - biz bir-bir rekord edir və meyarlara uyğun maddələr qaytarır bir Mapper var.

Paylanmış Task icrası:

Problem bəyanat -

Bizə bu hissələr bütün çox hissələri və nəticələri bölmək olar böyük hesablama problem var nəzərdən keçirək yekun nəticə əldə etmək üçün birləşdirilmiş olmalıdır.

Həll -

Bu problemin həlli mappers üçün giriş data kimi saxlanılır dəqiqləşdirilməsi bir set texniki split edir. Bu mappers hər input data kimi bir-bir dəqiqləşdirilməsi edir və onları emal və nəticələr istehsal. reduktor iş Bu nəticələr bütün birləşdirmək və yekun nəticə çıxarır.

Iterativ Message keçən:

Problem bəyanat -

bizə şəxslərin şəbəkəsi var və onların arasında bəzi əlaqələr mövcuddur nəzərdən keçirək. Biz qonşuluq digər müəssisənin mülkiyyətə əsaslanan hər bir müəssisənin dövlət hesablamaq tələb olunur. Bu dövlət müəyyən xassələri və xüsusiyyətləri olan qonşu olduğunu bir göstəricisidir digər qovşaqlarının bir məsafə təmsil etmək üçün istifadə edilə bilər.

Həll -

Biz qovşaqlarının bir sıra mağazalar şəbəkəsi var və hər node bitişik node kimlikleri siyahısı məlumat ehtiva edir. konseptual, MapReduce iş iterativ şəkildə həyata keçirilir və hər iteration node qonşuları mesaj göndərir ki,. Və sonra hər qonşu qəbul mesaj əsasında dövlət yeniləyir. Bu tekrarlamalar bir vəziyyətdə e.g tərəfindən xitam verilir. tekrarlamalar sabit maksimal sayı. From the technical point of view, Mapper əsas kimi qonşu node ID istifadə edərək hər node üçün mesaj qaytarır. Nəticə olaraq, bu mesajların hamısı daxil olan node tərəfindən qruplaşdırılıb və bu səbəbdən reduktor dövlət hesablayır edə və yeni dövlət node rewrites olunur.

Listing 4: Iterativ mesajlaşma keçən

[Code]

class Mapper

üsul Map(id yuva, NOBJ etiraz)

buraxmaq(id yuva, NOBJ etiraz)

NObj.OutgoingRelations bütün id MID üçün nə

buraxmaq(id MID, mesaj getMessage(NOBJ))

class Azaldan

üsul azaldır(id m, [s1, , s2…])

M = null

messages = []

bütün s üçün [s1, , s2…] etmək

IsObject əgər(s) sonra

M = s

daha // bir mesaj

messages.add(s)

M.State = calculateState(messages)

buraxmaq(id m, maddə M)

[/Code]

Eni ilk axtarış (Bu case study edir):

Problem bəyanat -

bizə bir grafik və bu graph mövcud bütün digər qovşaqlarının bir mənbə node məsafə hesablamaq tələb olunur nəzərdən keçirək. Bu da mayaotu sayı adlanır.

Həll -

həll ola bilər, ilk qaynaq node radio 0 bütün qonşularına. Sonra qonşuları ilə incrementing sonra counter təbliğ 1 Hər hop üçün.

Distinctive Dəyərlər:

Problem bəyanat -

Bizə sahələri M və N olan qeydlər bir sıra nəzərdən keçirək. tələb eyni Group N hər alt sahəsində M unikal dəyərlər ümumi sayı saymaq deyil.

Həll -

Bu problemin həlli iki mərhələdə edilə bilər. Birinci mərhələdə, Mapper M və N hər bir cüt üçün dummy counters istehsal. Sonra reduktor hər bir cüt üçün hadisələr ümumi sayı sayar. Bu mərhələnin məqsədi M dəyərlərin unikallığı təmin etməkdir. İkinci mərhələdə, cüt N qruplaşdırılıb və maddələr ümumi sayı hər bir qrup üçün hesablanır.

Summary: Bu yazıda çox məlumat hesablama məsələləri həll etmək üçün istifadə olunur müxtəlif dizayn yanaşmalar müzakirə etdik. MapReduce dizayn nümunələri davamlı inkişaf edir, belə ki, biz yaxın gələcəkdə daha dizayn yanaşmalar görəcəksiniz. aşağıdakı güllə bizim müzakirə yekunlaşdırmaq edək –

  • Map kompüter bir ana yaşayır məlumatların emal üçün istifadə olunur azaltmaq.
  • Design nümunələri problemləri həll etmək üçün istifadə olunur.
  • Bəzi çox istifadə MapReduce dizayn nümunələri altında listelenen -
    • Hesablanması - hesablanması və cəmlənməsi
    • tutuşdurulması
    • Filtering sintaktik təhlili və Qiymətləndirmə
    • Paylanmış tapşırıq icra
    • Iterativ mesaj keçən
    • Eni ilk axtarış
    • Distinctive Axtarış

 

 

 

============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share