MapReduce նախագծման նախշերով - կարճ ներածություն

featured_img

MapReduce նախագծման նախշերով

Overview: Design օրինակը այժմ տարածված տերմին օգտագործվում է գրեթե բոլոր ոլորտներում ծրագրային ապահովման զարգացման. Նախշերով ոչինչ են, բայց որոշ ապացուցված եւ ստուգված նախագծման մեթոդներ օգտագործվում է լուծել գործարար խնդիրները. MapReduce է նոր տեխնոլոգիա տիրույթը, եւ այն ունի նաեւ իր սեփական դիզայներական նախշերով լուծելու տվյալները հաշվարկի խնդիրները.

In this article, Ես խոսել տարբեր նախագծային հրահանգների օգտագործվող MapReduce շրջանակներում.

Ներածություն: Քարտեզ Կրճատել, որն օգտագործվում է մշակել տվյալները, որոնք բնակվում են մի շարք համակարգիչների. Այն ապահովում է հստակ եւ տարբերակիչ սահմանները միջեւ, թե ինչ մենք կարող ենք, եւ այն, ինչ մենք չենք կարող. Սա ստիպում է մի շարք տարբերակներ, մենք պետք է հաշվի առնել, փոքրագույն. At the same time, մենք կարող ենք պարզել, թե ինչպես պետք է լուծել մի խնդիր սղության. Նախագծման նախշերով արդեն փորձարկվել են բազմաթիվ խնդիրների ժամանակ առ ժամանակ, եւ ցույց են տվել ճիշտ մակարդակը վերացարկում.

MapReduce դիզայն նախշերով զբաղեցնում է նույն դերը մի փոքր տարածության խնդիրների եւ լուծումների. Նրանք ապահովում է ընդհանուր շրջանակ է լուծել մեր տվյալների հաշվարկը առնչվող հարցեր, առանց կենտրոնանալով խնդրի տիրույթում. MapReduce նախագծման նախշերով նաեւ ընդհանուր լեզուն աշխատող թիմերի միասին MapReduce դիմումների.

MapReduce Դիզայն Pattern: Այժմ եկեք քննարկենք տարբեր դիզայնի մոտենում մեկ առ մեկ է հետեւյալ բաժնում.

հաշվարկման:

Հիմնախնդրի ձեւակերպում - Եկեք քննենք, որ մենք ունենք մի դեղ փաստաթղթերի, որտեղ յուրաքանչյուր փաստաթուղթը պարունակում է մի շարք պայմաններով. Այժմ մենք ունենք մի պահանջ է հաշվարկել շարք երեւույթների յուրաքանչյուր ժամկետի է փաստաթղթում.

Solution - Է հետեւյալ կոդը պատառներ մենք ունենք մի Mapper, որ պարզապես գրառումները '1' յուրաքանչյուր ժամկետով այն բախվում. The reducer Մականուն հատում ողջ ցանկի նման նորերը, ամփոփում նրանց եւ արտադրում արդյունքը.

Listing 1: Computing Code - 1

[Code]

դասի Mapper

մեթոդը Քարտեզ(docid id, դ Doc)

բոլորի համար ժամկետը T-ի Doc կցանկանայի do

արտադրել(ժամկետը T, հաշվել 1)

դասի Reducer

մեթոդը Կրճատել(ժամկետը T, հաշվում [c1, C2,…])

CNT = 0

բոլորի համար հաշվիչ C, [c1, C2,…] անել

CNT = CNT + գ

արտադրել(ժամկետը T, հաշվել CNT)

[/Code]

Թեեւ պարզ, սակայն վերը նշված կոդը ունի ակնհայտ թերություն է, որ բարձր գումարը կեղծ հաշվիչներ են արտանետվել են Mapper. Այժմ մենք կարող ենք նվազեցնել այս ամփոփող հաշվիչները յուրաքանչյուր փաստաթղթի համար.

Listing 2: Computing Code - 2

[Code]

դասի Mapper

մեթոդը Քարտեզ(docid id, դ Doc)

HArray = new AssociativeArray

բոլորի համար ժամկետը T-ի Doc կցանկանայի do

HArray{T} = HArray{T} + 1

բոլորի համար ժամկետային t-ի HArray do

արտադրել(ժամկետը T, հաշվել HArray{T})

[/Code]

Now, որպեսզի կուտակել հաշվիչներ բոլոր փաստաթղթերի հնարավորություն է տալիս ունեն Combiners -

Listing 3: Computing Code - 3

[Code]

դասի Mapper

մեթոդը Քարտեզ(docid id, դ Doc)

բոլորի համար ժամկետը Տեր-ին Doc կցանկանայի do

արտադրել(ժամկետը Տեր, հաշվել 1)

դասի Combiner

Մեթոդ Միավորել(ժամկետը Տեր, [c1, C2,…])

գումարը = 0

բոլորի համար հաշվիչ CNT ի [c1, C2,…] անել

գումարը = գումարը + CNT

արտադրել(ժամկետը T, հաշվել գումարը)

դասի Reducer

մեթոդը Կրճատել(ժամկետը T, հաշվում [c1, C2,…])

totalCnt = 0

բոլորի համար հաշվիչ CNT ի [c1, C2,…] անել

totalCnt = totalCnt + CNT

արտադրել(ժամկետը T, հաշվել totalCnt)

[/Code]

հավաքագրման:

Հիմնախնդրի ձեւակերպում -

Մենք ունենք մի շարք ապրանքների եւ որոշ գործառույթներ որոշ իրեր. Այժմ դա պահանջվում է պահպանել բոլոր այն իրերը, որոնք ունեն նույն արժեքը ֆունկցիայի կամ կատարել որեւէ այլ հաշվարկ, որը պահանջում է բոլոր այդպիսի տարրեր է մշակվում է մի խումբ.

Solution -

Մենք ունենք լուծում, որտեղ Mapper հաշվարկում տվյալ գործառույթը յուրաքանչյուր կետում եւ վերադարձնում արժեքը ֆունկցիայի որպես առանցքային եւ իրը, որպես դրա արժեքի. Դերը reducer է ստանա բոլոր խմբավորված կետերը եւ մշակել դրանք, կամ փրկել նրանց.

Filtering (grep), Վերլուծել ու Վավերացում:

Հիմնախնդրի ձեւակերպում -

Եկեք քննենք մենք ունենք մի շարք գրառումների, իսկ պահանջը պետք է հավաքել բոլոր գրառումները, որոնք համապատասխանում են որոշակի վիճակը կամ վերափոխել այս գրառումների մեջ որոշ այլ ներկայացուցչական ձեւաչափերով. Երկրորդ մասը, խնդրի ներառում խնդիրները, ինչպիսիք են տեքստային քերականական վերլուծություն եւ արդյունահանման արժեքների.

Solution -

Այս խնդիրների լուծումը բավական ուղիղ առաջ, - մենք ունենք մի mapper, որը տեւում է մեկ ռեկորդ է մի ժամանակ, եւ վերադարձնում այն ​​կետերը, որոնք բավարարում են չափանիշները.

Բաշխված առաջադրանքի կատարման:

Հիմնախնդրի ձեւակերպում -

Եկեք քննենք մենք ունենք մեծ հաշվողական խնդիրը, որը կարելի է բաժանել մի քանի մասերի, եւ արդյունքների բոլոր այդ մասերի պետք է համատեղել, որպեսզի ստանան վերջնական արդյունքը.

Solution -

Այս խնդիրների լուծումը պետք է պառակտել առանձնահատկությունները մեջ մի շարք հստակեցում, որոնք պահվում են որպես մուտքային տվյալներ համար mappers. Յուրաքանչյուր այդ mappers տեւում է մեկ հստակեցում է մի ժամանակ, որպես մուտքային տվյալներ եւ վերամշակում նրանց եւ արտադրում արդյունքները. Գործն է reducer է համատեղել բոլոր այդ արդյունքների եւ արտադրում է վերջնական արդյունքը.

Iterative հաղորդագրություն Անցնելով:

Հիմնախնդրի ձեւակերպում -

Եկեք քննենք մենք ունենք մի ցանց սուբյեկտների, եւ կա որոշակի հարբերություններ նրանց միջեւ. Մենք պարտավոր են հաշվարկել վիճակը յուրաքանչյուր անձի հիման վրա գույքի այլ անձի հարեւանությամբ. Այս պետությունը կարող է օգտագործվել է ներկայացնել մի հեռավորությունը այլ հանգույցներում, ինչը վկայում է, որ կա մի հարեւանը ունեցող որոշակի հատկությունները եւ բնութագրեր.

Solution -

Մենք ունենք մի ցանց, որը խանութներում մի շարք հանգույցների եւ յուրաքանչյուր հանգույց պարունակում է տեղեկատվություն մի ցուցակում հարակից հանգույցի վկայականների. Conceptually, որ MapReduce աշխատատեղեր են կատարվում է iterative ճանապարհով եւ յուրաքանչյուր բազմակրկնություն հանգույցը ուղարկում Հաղորդագրություններ իր հարեւանների. Եւ ապա յուրաքանչյուր հարեւանն նորացնում է իր վիճակը հիման վրա հաղորդագրության որ ստացել. Այս կրկնությունները դադարեցվում են որոշ պայմանների օրինակ. ֆիքսված առավելագույն թվով iterations. From the technical point of view, որ Mapper վերադարձնում հաղորդագրությունները յուրաքանչյուր հանգույցի, օգտագործելով ID- ն հարակից հանգույցի որպես առանցքային. Որպես արդյունք, այս բոլոր հաղորդագրություններից խմբավորված են ըստ մուտքային հանգույցի եւ հետեւաբար reducer կարող է recalculate պետությունը եւ rewrites հանգույց հետ նոր պետության.

Listing 4: Iterative Messaging փոխանցումներով

[Code]

դասի Mapper

մեթոդը Քարտեզ(id բույն, առարկել NOBJ)

արտադրել(id բույն, առարկել NOBJ)

է բոլոր ID Mid է NObj.OutgoingRelations do

արտադրել(id MID, հաղորդագրություն getMessage(NOBJ))

դասի Reducer

մեթոդը Կրճատել(id մ, [s1, S2,…])

M = Null

հաղորդագրություններ = []

բոլորի համար վրկ [s1, S2,…] անել

եթե IsObject(S) ապա

M = S

else // S է մի հաղորդագրություն

messages.add(S)

M.State = calculateState(ուղերձներ)

արտադրել(id մ, տարրը M)

[/Code]

Breadth Առաջին Որոնել (Սա այն դեպքն է ուսումնասիրություն):

Հիմնախնդրի ձեւակերպում -

Եկեք քննենք մենք ունենք գրաֆիկը եւ դա պահանջվում է հաշվարկել հեռավորությունը մեկ աղբյուրից հանգույցից բոլոր մյուս հանգույցների ներկա գրաֆիկի. Սա կոչվում է նաեւ մի շարք hops.

Solution -

Լուծումը, կարող է լինել, առաջին աղբյուր node emits 0 իր բոլոր հարեւանների հետ. Այնուհետեւ հարեւանները տարածեք այս հաշվիչը բանից հետո, երբ incrementing այն 1 յուրաքանչյուր hop.

տարբերակիչ արժեքներ:

Հիմնախնդրի ձեւակերպում -

Եկեք քննենք մենք ունենք մի շարք գրառումների, որոնք պարունակում ոլորտներում M եւ N. Պահանջվում է հաշվել ընդհանուր թիվը եզակի արժեքների դաշտային M յուրաքանչյուր ենթաբազմություն է նույն խմբում N.

Solution -

Որ լուծում է այս խնդիրը կարող է ուղղված երկու փուլով. Առաջին փուլում, որ Mapper արտադրում ապուշ հաշվիչներ յուրաքանչյուր զույգ M եւ N. Այնուհետեւ reducer հաշվում ընդհանուր թիվը դրսեւորումները յուրաքանչյուր զույգի. Նպատակն այս փուլում է պահպանել ինքնատիպությունը M արժեքների. Երկրորդ փուլում, զույգ խմբավորված են ըստ թիվ եւ ընդհանուր թվով ապրանքների հաշվարկվում են յուրաքանչյուր խմբի համար.

Summary: Այս հոդվածում մենք քննարկեցինք տարբեր դիզայներական մոտեցումներ, որոնք սովորաբար օգտագործվում է լուծել տվյալները հաշվարկի խնդիրները. MapReduce նախագծման նախշերով են շարունակաբար զարգանում, այնպես որ, մենք կտեսնենք ավելի շատ դիզայներական մոտեցումների մոտ ապագայում. Եկեք ամփոփել մեր քննարկում հետեւյալ փամփուշտներով –

  • Քարտեզ կրճատել, որն օգտագործվում է մշակել տվյալները, որոնք բնակվում է հյուրընկալող համակարգիչների.
  • Design patterns are being used to solve problems.
  • Որոշ լայնորեն կիրառվող MapReduce նախագծման նախշերով թվարկված են -
    • Հաշվարկման - հաշվառում եւ ամփոփելով
    • հավաքագրման
    • Ֆիլտրացման քերականական վերլուծություն եւ Վավերացում
    • Բաշխված խնդիրն կատարումը
    • Iterative հաղորդագրությունը փոխանցումներով
    • Breadth Առաջին Որոնել
    • Տարբերիչ Որոնել

 

 

 

============================================= ============================================== Գնեք լավագույն տեխնոլոգիական գրքերը Amazon- ում,en,Էլեկտրականություն CT շագանակագույն էլեկտրաէներգիա,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share