3.1 BigData atamasining paydo bo'lish tarixi
Big Data atamasi nisbatan yaqinda paydo bo'lgan. Google Trends ko'rsatadi bu so'z birikmasini ishlatishning faol o'sishi 2011 yil boshlaridan boshlab:
Hozirgi paytda bu atamani ishlatmaydiganlar kam. Ayniqsa, marketingchilar bu terminni ko'pincha ma'nosiz ishlatishadi. Xo'sh, aslida Big Data nima? Men bu masalani tizimli ravishda yoritishga qaror qilganim sababli – tushunchani aniqlashtirish kerak.
Amaliyotimda quyidagi turli xil ta'riflarni ko'rdim:
- Big Data – bu 100GB (500GB, 1TB, kimga qanday yoqsa) dan ortiq ma'lumotlar.
- Big Data – bu ma'lumotlarni Excel'da qayta ishlash mumkin bo'lmaganda.
- Big Data – bu bitta kompyuterda qayta ishlash imkonsiz bo'lgan ma'lumotlar.
Va hatto shunday ta'riflar ham bor:
- Big Data – umuman barcha ma'lumotlar.
- Big Data yo'q, uni marketingchilar o'ylab topishgan.
Men Wikipedia ta'rifiga amal qilaman:
Katta ma'lumotlar (ingl. big data) — 2000-yillarning oxirida paydo bo'lgan, inson tomonidan qabul qilinadigan natijalarni olish uchun ulkan hajm va xilma-xillikdagi strukturalangan va strukturasiz ma'lumotlarni qayta ishlashning yondashuvlar, vositalar va usullaridan iborat bo'lib, uzluksiz o'sish sharoitida, ko'plab tugunlarga tarqatilish sharoitida, an'anaviy ma'lumotlar bazasini boshqarish tizimlariga alternativ bo'lgan Business Intelligence sinfidagi yechimlar.
Shunday qilib, Big Data deganda men nafaqat ma'lumotlarning aniq hajmini va hatto ma'lumotlarning o'zini tushunaman, balki ma'lumotlarni qayta ishlashning usullarini tushunaman, bu usullar ma'lumotlarni taqsimlanib qayta ishlashni ta'minlaydi. Ushbu usullarni ulkan ma'lumotlar to'plamlariga (masalan, internetdagi barcha sahifalar tarkibi kabi) va kichiklariga (masalan, ushbu ma'ruza tarkibi kabi) qo'llash mumkin.
Katta ma'lumotlar bilan ishlash usullarini talab qiladigan ma'lumotlar manbalarining ba'zi misollarini keltiraman:
- Internetda foydalanuvchi harakatlarining loglari
- Avtomobillardan GPS-signallarni transport kompaniyasiga yuborish
- Katta adron kollayderidagi sensorlardan olingan ma'lumotlar
- Rossiya Davlat Kutubxonasidagi raqamlashtirilgan kitoblar
- Bank mijozlari bilan barcha tranzaktsiyalar haqida ma'lumot
- Katta chakana savdo tarmog'ida amalga oshirilgan barcha xaridlar haqida ma'lumot va h.k.
Ma'lumotlar manbalari soni tez o'smoqda, bu esa ularni qayta ishlash texnologiyalarini tobora muhim qilmoqda.
3.2 Katta ma'lumotlar bilan ishlash prinsiplari
Big Data ta'rifidan kelib chiqib, bunday ma'lumotlar bilan ishlashning asosiy tamoyillarini shakllantirish mumkin:
1. Gorizontal kengayish. Ma'lumotlar qancha bo'lishi mumkinligi sababli – katta ma'lumotlarni qayta ishlashni ko'zda tutadigan har qanday tizim kengaytirilishi kerak. Ma'lumotlar hajmi 2 barobar oshdi – klasterdagi temirning miqdorini 2 barobarga oshirdi va hammasi ishlayveradi.
2. Rad etishga chidamlilik. Gorizontal kengayish tamoyili klasterda ko'p mashinalar bo'lishi mumkinligini anglatadi. Masalan, Yahoo-ning Hadoop-klasteri 42000 dan ortiq mashinaga ega (bu havolada turli tashkilotlar klasterlari hajmlarini ko'rsatadi). Bu ushbu mashinalarlarning bir qismi ishdan chiqishini anglatadi. Katta ma'lumotlar bilan ishlash usullari bunday nosozliklar imkoniyatini hisobga olishlari va ularga ahamiyatli ta'sirsiz bardoshliklari kerak.
3. Ma'lumotlar lokalizatsiyasi. Katta tarqatilgan tizimlarda ma'lumotlar ko'plab mashinalar bo'ylab taqsimlanadi. Agar ma'lumotlar jismoniy jihatdan bitta serverda bo'lsa, boshqa birida qayta ishlasa – ma'lumotlarni uzatish xarajatlari o'zini qayta ishlash xarajatlaridan oshib ketishi mumkin. Shuning uchun BigData yechimlari loyihalashtirishining eng muhim tamoyillaridan biri – ma'lumotlar lokalizatsiyasi tamoyili – imkon qadar xuddi shu mashinada saqlangan ma'lumotlarni qayta ishlashga harakat qilishimiz kerak.
Hozirgi zamonning barcha katta ma'lumotlar bilan ishlash vositalari bir yo'l yoki boshqa bu uchta tamoyilga amal qiladi. Ularga rioya qilish uchun – ma'lumotlarni ishlab chiqish vositalarini ishlab chiqish uchun biror usul, usul va paradigmalarni o'ylab topish kerak. Men bugungi ma'ruzada eng klassik usullardan birini ko'rib chiqaman.
3.3 MapReduce
MapReduce – Google tomonidan katta hajmdagi ma'lumotlarni kompyuter klasterlarida qayta ishlash uchun taklif qilingan taqsimlangan ma'lumotlarni qayta ishlash modeli. MapReduce quyidagi rasm bilan yaxshi tushuntiriladi:
MapReduce ma'lumotlar qandaydir yozuvlar ko'rinishida tashkil qilinganligini anglatadi. Ma'lumotlarni qayta ishlash 3 bosqichda amalga oshiriladi:
1. Map bosqichi. Ushbu bosqichda ma'lumotlar foydalanuvchi tomonidan aniqlangan map() funksiyasi yordamida dastlabki ishlanadi. Ushbu bosqichning ishi ma'lumotlarni dastlabki ishlash va filtrlashdan iborat. Ish funktsional dasturlash tillaridagi map operatsiyasiga juda o'xshash – foydalanuvchi funktsiyasi har bir kirish yozuviga qo'llaniladi.
Map() funksiyasi bir kirish yozuviga qo'llanib, bir nechta kalit-qiymat juftliklarini chiqaradi. Ko'p, ya'ni faqat bitta yozuv chiqarishi mumkin, hech narsa chiqarib bermasligi mumkin, yoki bir nechta kalit-qiymat juftliklarini chiqarishi mumkin. Kalit va qiymatda nima bo'lishi kerakligi foydalanuvchi tomonidan belgilanishi kerak, ammo kalit juda muhim narsa, chunki bir xil kalitga ega bo'lgan ma'lumotlar kelajakda bitta reduktsiya funktsiyasi nusxasiga tushadi.
2. Shuffle bosqichi. Foydalanuvchi uchun sezilmasdan o'tadi. Ushbu bosqichda map funksiyasining chiqishi "savatchalar bo'yicha ajratiladi" - har bir savat map bosqichining bitta kalitiga mos keladi. Keyinchalik ushbu savatlar reduce uchun kirish vazifasini bajaradi.
3. Reduce bosqichi. Shuffle bosqichida tashkil qilingan qiymatlar bilan har bir "savat" reduce() funksiyasiga kiradi.
Reduce funksiyasi foydalanuvchi tomonidan belgilanadi va alohida "savat" uchun yakuniy natijani hisoblaydi. Reduce funksiyasi tomonidan qaytarilgan barcha qiymatlar ko'pligi MapReduce vazifasining yakuniy natijasidir.
MapReduce haqida bir nechta qo'shimcha faktlar:
- Barcha map funktsiyasi ishlatishlari mustaqil bo'lib, parallel ishlashi mumkin, shu jumladan klasterdagi turli mashinalarda.
- Barcha reduce funktsiyasi ishlatishlari mustaqil bo'lib, parallel ishlashi mumkin, shu jumladan klasterdagi turli mashinalarda.
- Shuffle ichidagi parallel tartiblashni o'z ichiga oladi, shuning uchun u ham klasterning turli mashinalarida ishlashi mumkin. 1-3 punktlar gorizont kengayish tamoyilini amalga oshirishga imkon beradi.
- Odatda, map funksiyasi ma'lumotlarni saqlovchi mashinada qo'llaniladi – bu ma'lumotlarning tarmoq orqali uzatilishini kamaytirishga imkon beradi (ma'lumotlarning lokalizatsiyasi tamoyili).
- MapReduce har doim ma'lumotlarni to'liq tekshirishdir, hech qanday indekslar yo'q. Bu MapReduce tez javob talab qilinadigan holatlarda yomon qo'llaniladi.
3.4 MapReduce yordamida samarali hal qilinadigan vazifalar misollari
Word Count
Klassik vazifa – Word Count bilan boshlaymiz. Vazifa quyidagicha formulalanadi: katta hujjatlar korpusi mavjud. Vazifa – korpusda kamida bir marta uchragan har bir so'z uchun, u korpusda uchragan umumiy sonini hisoblash.
Yechimi:
Katta hujjatlar korpusimiz bor ekan – MapReduce vazifasi uchun bitta hujjat bitta kirish yozuvi bo'lsin. MapReduce'da biz faqat foydalanuvchi funktsiyalarini belgilay olishimiz mumkin, biz shunday qilamiz (python-like psevdokoddan foydalanamiz):
|
|
Map funksiya kirish hujjatni juftliklar to'plamiga (so'z, 1) aylantiradi, shuffle biz uchun sezilmasdan buni (so'z, [1,1,1,1,1,1]) juftligiga aylantiradi, reduce bu birliklarni jamlab, so'z uchun yakuniy javobni qaytaradi.
Reklama tizimi loglarini qayta ishlash
Ikkinchi misol Data-Centric Alliance haqiqiy amaliyotidan olingan.
Vazifa: quyidagicha ko'rinishdagi reklama tizimi csv-log mavjud:
<user_id>,<country>,<city>,<campaign_id>,<creative_id>,<payment></p>
11111,RU,Moscow,2,4,0.3
22222,RU,Voronezh,2,3,0.2
13413,UA,Kyiv,4,11,0.7
…
Rossiya shaharlarida reklama ko'rsatilishi o'rtacha narxini hisoblash kerak.
Yechimi:
|
|
Map funksiyasi bizga kerak bo'lgan yozuvni tekshiradi – kerak bo'lsa, faqat kerakli ma'lumotni (shahar va to'lov miqdori) qoldiradi. Reduce funksiyasi shahar bo'yicha yakuniy javobni hisoblaydi, ushbu shahardagi barcha to'lovlar ro'yxatiga ega.
GO TO FULL VERSION