2. Ishlash muhandisligi Hadoop va yarn. Gnu loyiha tashabbuskori Richard Stallman bulutli hisoblash xarajatlarni oshirish va axborotga egalik qilish muammolari sifatida tavsiflandi
Download 442.75 Kb.
|
n
- Bu sahifa navigatsiya:
- Yana qiziqarli Spark dasturi: K-klasterlash degani.
- Konteynerdagi Spark.
Oddiy Spark dasturi.
Biz ushbu identifikatsiya orqali ⇡ ga yaqinlikni hisoblaydigan ahamiyatsiz dasturni amalga oshirish uchun Spark-dan foydalanishni joriy qilamiz: Keyingi sahifadagi 8.3-rasmda va 11-sonli kitobda ko'rsatilgan dasturimiz har bir qiymat uchun 1i2 ni hisoblash uchun xarita operatsiyasidan va bu hisoblashlar natijalarini yig'ish uchun kamaytirish operatsiyasidan foydalanadi. P rogramma butun sonlarning bir o'lchovli majmuasini yaratadi, keyin biz ularni ikki bo'lakka bo'lingan RDD ga aylantiramiz. (Thearray katta emas, lekin biz bu misolni ikki yadroli Mac Mini-da ishlatdik.) Spark bilan hisoblash. Spark-da bo'limlar ishchilarga taqsimlanadi. Parallellik Spark operatorlarining hisoblash texnikasini har bir bo'limda parallel ravishda qo'llash, bundan tashqari, har bir ishchi uchun bir nechta iplardan foydalanish orqali erishiladi. Kamaytirish kabi amallar uchun ishning katta qismi har bir boʻlimda, keyin esa kerak boʻlganda boʻlimlar boʻylab bajariladi. Spark Python kutubxonasi lambda operatori yordamida anonim funksiya yaratish uchun Pythonning imkoniyatlaridan foydalanadi. Ushbu funksiyalar uchun kod ishlab chiqariladi va ular Spark ish rejalashtiruvchisi tomonidan har bir RDD bo'limida bajarilishi uchun ishchilarga yuborilishi mumkin. Bunday holda biz oddiy MapReduce hisob-kitobidan foydalanamiz. Yana qiziqarli Spark dasturi: K-klasterlash degani. Endi biz klasterlashning yanada qiziqarli misolini ko'rib chiqamiz [150]. Aytaylik, sizda tekislikda 10 000 nuqta bor va siz to'plamni ajratuvchi klasterlarning markazlari bo'lgan nuqtalarni bilmoqchisiz. Boshqacha qilib aytganda, har bir nuqta eng yaqin joylashgan markazga mos keladigan to'plamga tayinlanishi kerak. Bizning Sparksolution daftarimiz 12. Biz markazlashgan nuqtalarni ushlab turish uchun massivdan foydalanamiz. Biz ushbu massivni tasodifiy qiymatlar bilan ishga tushiramiz va keyin takrorlanuvchi MapReduce algoritmini qo'llaymiz va markazlar oldingi holatidan uzoqlashmaguncha ushbu ikki bosqichni takrorlaymiz: 1. Har bir nuqta uchun markazning eng yaqin joylashgan indeksini toping va nuqtani belgilang. eng yaqin markaz bilan bog'langan klasterga. 2. Har bir klaster uchun ushbu klasterdagi barcha nuqtalarning markaziy qismini hisoblang va kPointsdagi oldingi markazni o'sha yangi markaz bilan almashtiring. Biz birinchi navbatda berilgan nuqta uchun hisoblash uchun quyidagi funktsiyani aniqlaymiz, p eng yaqin bo'lgan kPointsdagi markazning indeksi. 10 000 nuqtamizning joylashuvi maʼlumotlar deb nomlangan massivda joylashgan. Biz yangi RDD sifatida kortejlar toʻplamini (j,(p,1)) yaratish uchun quyidagi xarita ifodasidan foydalanamiz, bunda j maʼlumotlardagi har bir p uchun eng yaqin markazning indeksi hisoblanadi. Tup les of form (p,1) dan bu tarzda foydalanish MapReduce idiomidagi xabardir. Form kortejlarini olish uchun biz har bir j uchun barcha kortejlar yig'indisini (p, 1) hisoblashni xohlaymiz. Buning uchun biz quyidagi kabi reduceByKey operatsiyasidan foydalanamiz. 1 lar yig'indisi bizning to'plamdagi jtuplelar sonidir, shuning uchun biz markazni hisoblashimiz mumkin, bu to'plar yig'indisini shu songa bo'lish orqali. Bu sizekning RDDidir va biz uni to'plashimiz va keyingi iteratsiya uchun kPoints sifatida foydalanishimiz mumkin. To'liq kod endi iteratsiyada quyidagicha. Xulosa qilib aytadigan bo'lsak: Bizda xarita bor, undan so'ng kalitni qisqartirish, keyin boshqa xarita va nihoyat, yangi nuqtalar qiymatlarini o'qish-bosib chiqarish tsikliga qaytaradigan to'plam mavjud. Har bir Spark operatsiyasi RDD joylashgan yadrolar klasterida bajariladi. Aslida, P ython dasturining vazifasi Spark dvigateli tomonidan bajariladigan agrafni kompilyatsiya qilishdir. Biz ushbu misol standartSpark iboralarining ayrimlarini tasvirlash uchun moʻljallanganligini va bu bestk-means algoritmi emasligini taʼkidlaymiz. Spark-da juda yaxshi amalga oshirilgan mashinalarni o'rganish kutubxonasi mavjud. Konteynerdagi Spark. Noutbukda Spark-ning konteynerlashtirilgan versiyasini ishga tushirish juda oddiy. Shuningdek, siz Spark-ni ko'p yadroli masofaviy VM-da osongina ishga tushirishingiz mumkin: VMhas Docker to'xtab qolgan ekan, siz 87-betdagi 6.2-bo'limda tasvirlangan protsedurani bajarishingiz mumkin, lekin Jupyter-ning boshqa versiyasi bilan. Noutbuk 12 sifatida taqdim etilgan “k-means” misolini ishlab chiqishda biz 10 Gb xotira va yadrolari 0, 1, 2 va 3 boʻlgan xost-drayv/vol1/dockerdatali akonteynerdan foydalandik. Biz bu konteynerni quyidagicha yaratdik. Download 442.75 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling