Big data tahlili


participated in the most recent general election”)


Download 1.27 Mb.
bet54/71
Sana25.02.2023
Hajmi1.27 Mb.
#1229835
1   ...   50   51   52   53   54   55   56   57   ...   71
Bog'liq
A.X.Ruzmetov Qollanma

mylist = (“all counties in the US that participated in the most recent general election”)
map funktsiyasi yordamida howManyPeople funktsiyasini yarating. Shu bilan birga, faqat 50 mingdan ortiq aholisi bo‘lgan tumanlar tanlanadi:
map howManyPeople (mylist) = [ howManyPeople “county 1”;
howManyPeople “county 2”; howManyPeople “county 3”;
howManyPeople “county 4”; . . . ]
Endi aholisi 50 mingdan ortiq bo‘lgan barcha tumanlarning yangi ro‘yxatini yarating:
(no, county 1; yes, county 2; no, county 3; yes, county 4; ?, county nnn)
Funksiya asl ro‘yxatga o‘zgartirish kiritmasdan bajariladi. Bundan tashqari, chiqish ro‘yxatidagi har bir element “ha” yoki “yo‘q” biriktirilgan holda kirish ro‘yxatidagi mos keladigan element bilan taqqoslanganligini ko‘rishingiz mumkin. Agar tuman 50 mingdan ortiq odamning talablariga javob bersa, map funktsiyasi buni ijobiy javob bilan aniqlaydi. Aks holda, “yo‘q” ko‘rsatiladi.

Reduce funktsiyasini qo‘shish


map funktsiyasi singari, reduce ko‘p yillar davomida funktsional dasturlash tillarining xususiyati bo‘lib kelgan. Ba’zi tillarda bu “katlama” deb nomlanadi, ammo xatti-harakatlar aynan bir xil. Reduce funktsiyasi map funksiyasining natijasini oladi va dasturchi xohlagan tarzda ro‘yxatni qisqartiradi. reduce funktsiyasi uchun zarur bo‘lgan birinchi qadam bu qiymatni dastlabki qiymatni o‘z ichiga olgan “akkumulyator” ga qo‘yishdir. Akkumulyatorda dastlabki qiymatni saqlagandan so‘ng, reduce funktsiyasi keyinchalik ro‘yxatdagi har bir elementni qayta ishlaydi va butun ro‘yxat bo‘yicha kerakli operatsiyani bajaradi. Ro‘yxat oxirida reduce funktsiyasi natijalar ro‘yxatida qaysi operatsiyani bajarishni xohlaganingizga qarab qiymatni qaytaradi. reduce nimaga qodirligini bilish uchun map misoliga qaytsak.
Demokratik nomzod eng ko‘p ovoz olgan saylov okruglarini aniqlamoqchisiz deylik. Shuni esda tutingki, howManyPeople kirish ro‘yxatidagi har bir yozuvni ko‘rib chiqadi va aholisi 50,000 (ha) dan yuqori bo‘lgan aholisi bo‘lgan tumanlar va aholisi 50,000 (yo‘q) dan kam bo‘lgan mamlakatlarning chiqish ro‘yxatini ishlab chiqadi.
HowManyPeople map funktsiyasini chaqirgandan so‘ng, sizda quyidagi chiqish ro‘yxati qoladi:
(no, county 1; yes, county 2; no, county 3; yes, county 4; ?, county nnn)
Endi bu sizning reduce funktsiyangiz uchun kirish. U quyidagicha bo‘ladi:
countylist = (no, county 1; yes, county 2; no, county 3; yes, county 4; ?, county nnn)
reduce isDemocrat (countylist)
reduce funktsiyasi ro‘yxatdagi har bir elementni qayta ishlaydi va aholisi 50 mingdan ortiq bo‘lgan barcha tumanlarning ro‘yxatini qaytaradi, bu yerda ko‘pchilik demokratlarga ovoz bergan.
Endi tasavvur qiling, 50 mingdan ortiq aholisi bo‘lgan qaysi tumanlarda respublikachilarga ovoz bergan. Faqat reduce funktsiyasini qayta chaqirishingiz kerak, ammo operatorni isDemocrat-dan isRepublican-ga o‘zgartirasiz:
reduce isRepublican (countylist)
Bu saylovchilarning aksariyati respublikachilar nomzodlarini qo‘llab-quvvatlagan barcha saylov okruglari ro‘yxatini qaytaradi. Tumanlar ro‘yxatidagi narsalarni o‘zgartirmaganligingiz sababli, kerakli natijalarga erishguningizcha reduce funktsiyalarini bajarishda davom etishingiz mumkin. Masalan, mustaqil ko‘pchilikni qidirishingiz yoki aniq geografik mintaqalar bo‘yicha natijalarni aniqlashtirishingiz mumkin.

map va reduce ni bir joyga qo‘llash


Ba’zan chiqish ro‘yxatini tuzish kifoya. Huddi shunday, ba’zida ro‘yxatning har bir elementi bo‘yicha operatsiyalarni bajarish kifoya. Ko‘pincha, katta miqdordagi kirish ma’lumotlarini skanerlashingiz, ma’lumotlardan aniq elementlarni tanlashingiz va so‘ngra tegishli qismlardan biron bir qiymatni hisoblashingiz kerak. Kiritishni har doim ham nazorat qilolmaysiz, shuning uchun bu ishni buzmasdan bajarishingiz kerak - ushbu kiritish ro‘yxatini o‘zgartirishni xohlamaysiz, shunda uni yangi taxminlar va yangi ma’lumotlar bilan boshqacha ishlatishingiz mumkin.
Dasturiy ta’minot ishlab chiqaruvchilari dasturlarni algoritmlar asosida yaratadilar. Algoritm - bu umumiy maqsadga erishish uchun bajarilishi kerak bo‘lgan bir qator qadamlardan boshqa narsa emas. Bu pishirish retseptiga juda o‘xshaydi. Individual ingredientlardan (un, shakar, tuxum va boshqalar) boshlaysiz va kerakli natijaga (non) erishguningizcha bosqichma-bosqich ko‘rsatmalarga rioya qiling (kombinatsiya, xamir va pishirish). map va reduce funktsiyalari, shuningdek, samarali ishlash uchun algoritmni talab qiladi. Bu quyidagicha bo’lishi mumkin:

  • Ko‘p ma’lumot yoki yozuvlardan boshlang;

  • Ma’lumotlarni ko‘rib chiqing;

  • Qiziqarli narsalarni chiqarish va chiqish ro‘yxatini yaratish uchun map xususiyatidan foydalaning;

  • Keyingi ishlov berishda optimallashtirish uchun chiqish ro‘yxatini tartibga soling;

  • Natija to‘plamini hisoblash uchun reduce funktsiyasidan foydalaning;

  • Yakuniy natijani chiqaring.

Dasturchilar ushbu yondashuv yordamida barcha turdagi dasturlarni amalga oshirishi mumkin, ammo shu paytgacha misollar juda sodda bo‘lgan, shuning uchun MapReduce-ning haqiqiy qiymati aniq bo‘lmasligi mumkin. Juda katta kirishlar bo‘lganda nima bo‘ladi? Terabayt ma’lumot uchun Huddi shu algoritmdan foydalana olasizmi? Yaxshi yangilik - ha.
8.1-rasmda ko‘rsatilganidek, barcha jarayonlar mustaqil bo‘lib tuyuladi. Buning sababi shundaki, MapReduce-ning haqiqiy kuchi uning bo‘linish va zabt etish qobiliyatidir. Juda katta muammoni yechib oling va uni kichikroq, boshqariladigan bo‘laklarga bo‘lib, har bir bo‘lakni mustaqil ravishda boshqaring va keyin barchasini oxiriga qaytaring. Bundan tashqari, map funktsiyasi kommutativdir - boshqacha qilib aytganda, funktsiyani bajarish tartibi muhim emas.

8.1-Rasm. Mapreduceda ma’lumotlar oqimi.
Agar algebra haqida eslasangiz, unda biror narsa komutativ bo‘lganda, elementlarning tartibidan qat’i nazar, natija bir xil bo‘lishini eslashingiz mumkin. Masalan:

Yoki

Shunday qilib, MapReduce o‘z ishini tarmoqdagi turli xil mashinalarda bajarishi va barcha ishlar bir xil mashinada bajarilganidek bir xil natijaga erishishi mumkin. Shuningdek, u ichki yoki tashqi bir nechta ma’lumotlar manbalaridan foydalanishi mumkin. MapReduce o‘z ishini barcha ishlov berishlar bir xil muammolarni hal qilishini ta’minlash uchun noyob kalitni yaratish orqali kuzatadi. Ushbu kalit shuningdek, taqsimlangan vazifalar oxirida barcha chiqimlarni birlashtirish uchun ishlatiladi.
map va reduce funktsiyalaridan shu tarzda foydalanilganda, ular klasterda yagona ish sifatida ishlash uchun birgalikda harakat qilishadi. Barcha bo‘linish va zabt etish MapReduce mexanizmining bajarilish doirasi tomonidan shaffof tarzda amalga oshiriladi va barcha ishlar tarmoqdagi bir yoki bir nechta tugunlar o‘rtasida taqsimlanadi.
Narsalarning qanday ishlashini yaxshiroq tushunish uchun strukturaning ba’zi xususiyatlarini tushunishingiz kerak. Bu sizga yaxshi dasturlarni ishlab chiqishda yordam beradi va shuningdek, ishlash yoki samaradorlik uchun bajarilishini optimallashtiradi. MapReduce xatti-harakatlarining asosiy printsiplari quyidagilar:

  • Rejalashtirish: MapReduce ish joylari dasturning map va reduce uchun alohida vazifalarga bo‘linadi. Kesishni amalga oshirishdan oldin xaritalashni yakunlash kerakligi sababli, bu vazifalar klasterdagi tugunlar soniga qarab birinchi o‘ringa qo‘yilgan. Agar tugunlardan ko‘ra ko‘proq vazifangiz bo‘lsa, ish vaqti xaritadagi vazifalarni hammasi tugamaguncha boshqaradi. Keyin reduce vazifalari huddi shu xatti-harakatlar bilan bajariladi. Barcha reduce vazifalari muvaffaqiyatli bajarilgandan keyingina butun jarayon yakunlanadi.

  • Sinxronlash: Klasterda bir nechta jarayonlar bir vaqtning o‘zida ishlayotganida, ishlarni bir maromda ushlab turishingiz kerak. Sinxronlash mexanizmlari buni avtomatik ravishda amalga oshiradi. Chunki ish vaqti dastur nimani ko‘rsatayotganini va qisqartirayotganini biladi, nima qilinganligi va qachon bajarilishini kuzatib boradi. Butun xaritalash tugagandan so‘ng, qisqartirish boshlanadi. Oraliq ma’lumotlar tarmoq orqali ko‘chiriladi, chunki ular shuffle va sort deb nomlangan mexanizm yordamida yaratiladi. Bu ko‘rsatilgan barcha ma’lumotlarni yig‘adi va qayta ishlashga tayyorlaydi.

  • Kod Ma’lumotlarni joylashtirish: Eng samarali ishlov berish xaritalash funktsiyalari (kodi) ishlov beriladigan ma’lumotlar bilan bir xil kompyuterga joylashtirilganda sodir bo‘ladi. Jarayonni rejalashtiruvchi juda aqlli va bajarilishdan oldin kodni va unga tegishli ma’lumotlarni bitta tugunga joylashtirishi mumkin (yoki aksincha).

  • Avariya xatolarni boshqarish: halokat yuz berganda nima bo‘ladi? Umid qilamanmizki hech narsa. MapReduce mexanizmlarining aksariyati juda kuchli xatolarni boshqarish va xatolarga bardoshliligiga ega. MapReduce klasteridagi barcha tugunlar va har bir tugundagi barcha qismlar bilan biron bir vaqtda muvaffaqiyatsizlikka uchraydi. Mexanizm biror narsa noto‘g‘ri ekanligini tushunishi va kerakli tuzatishlarni kiritishi kerak. Masalan, xaritalash vazifalarining ba’zilari bajarilganidek qaytmasa, mexanizm ishni tugatish uchun vazifalarni boshqa tugunga tayinlashi mumkin. Mexanizm to‘liq bajarilmagan vazifani tanib oladigan va vazifani avtomatik ravishda boshqa tugunga tayinlaydigan tarzda ishlab chiqilgan.

MapReduce vazifalarini optimallashtirish


Joriy dastur kodini optimallashtirishdan tashqari, MapReduce ishlarining ishonchliligi va ishlashini yaxshilash uchun ba’zi optimallash usullaridan foydalanishingiz mumkin. Ular uchta toifaga bo‘linadi: apparat tarmoq topologiyasi, sinxronlash va fayl tizimi.

Download 1.27 Mb.

Do'stlaringiz bilan baham:
1   ...   50   51   52   53   54   55   56   57   ...   71




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling