AMALIY MASHG‘ULOT- 6 - Rivojlantirish vazirligi muhammad al xorazmiy nomidagi toshkent axborot texnologiyalari universiteti

AMALIY MASHG‘ULOT- 6
Mavzu: Hadoop-da ma'lumotlarni tahlil qilish
Ishning maqsadi: o'rganish Hadoop'da parallel ishlov berishning afzalliklari .
Hadoop biz uchun ochadigan parallel ishlov berishning afzalliklaridan foydalanish uchun so'rovni ¬MapReduce ishi sifatida ko'rsatishimiz kerak . Mahalliy, kichik miqyosdagi testlardan so'ng, biz bu ishni kompyuter klasterida bajarishimiz kerak.
Xarita va konvolyutsiya
MapReduce qanday ishlaydi ma'lumotlarni qayta ishlashni ikki bosqichga bo'lishga asoslangan: xaritalash bosqichi (xarita) va konvolyutsiya bosqichi (kamaytirish ). Har bir bosqich kirish va chiqish ma'lumotlari sifatida kalit-qiymat juftliklaridan foydalanadi, ularning turlari dasturchi tomonidan tanlanadi. Dasturchi ikkita funktsiyani ham belgilaydi: xaritalash funktsiyasi va konvolyutsiya funktsiyasi.
Displey funktsiyasi oddiy. Biz yil va havo haroratini ajratib olamiz, chunki bizni faqat shu maydonlar qiziqtiradi. Bunday holda, displey funktsiyasi ¬faqat ma'lumotlarni yig'ish funktsiyasi o'z vazifasini bajarishi uchun foydalanishga tayyorlaydi: har bir yil uchun maksimal haroratni aniqlash. Displey funktsiyasi keraksiz yozuvlarni istisno qilish uchun juda mos keladi: etishmayotgan, shubhali yoki noto'g'ri harorat qiymatlari bu erda filtrlanadi.
Xaritalash funktsiyasi qanday ishlashi haqida tasavvurga ega bo'lish uchun bir necha qator kiritishni ko'rib chiqing (joyni tejash uchun foydalanilmagan ustunlar ellips bilan ko'rsatilgan):
MapReduce dasturi Java tilida
Shunday qilib, biz MapReduce dasturi qanday ishlashini aniqladik . Keyingi qadam uning dastur kodi shaklida ifodalanishi bo'lishi kerak. Bizga kerak: displey funktsiyasi, yig'ish funktsiyasi va ishni bajarish kodi. Xaritalash funktsiyasi mavhum xarita () usulini e'lon qiladigan Mapper sinfi bilan ifodalanadi . Xarita usulini amalga oshirish 2.3 ro'yxatda ko'rsatilgan .
Mapper sinfi parametrlangan; uning to'rt turdagi parametrlari ¬xaritalash funktsiyasining kirish kaliti, kirish qiymati, chiqish kaliti va chiqish qiymatining turlarini belgilaydi. Joriy misolda kiritish tugmasi uzun butun sonning ofsetidir, kirish qiymati matn qatori, chiqish tugmasi yil va chiqish qiymati havo harorati (butun son). O'rnatilgan Java turlaridan foydalanish o'rniga Hadoop tarmoqni ketma-ketlashtirish uchun optimallashtirilgan mahalliy baza turlarini taqdim etadi. Ular paketida org. apache.hadoop.io. Bizning misolimiz LongWritable turlaridan foydalanadi. (Java Long tipidagi analog), Matn (Javaga String o'xshash) va IntWritable ( Java Integer ga o'xshash ).
map () usuli kalit va qiymatni oladi . Kirish satrini o'z ichiga olgan matn qiymati Java turiga aylantiriladi String , undan keyin substring () usuli bizni qiziqtirgan ustunlarni chiqaradi.
map ( ) usuli ham Kontekst namunasini taqdim etadi chiqish ma'lumotlarini yozish uchun ¬. Bizning holatda yil matn ob'ekti sifatida yoziladi. (chunki u faqat kalit sifatida ishlatiladi) va harorat IntWritable turiga joylashtirilgan . Chiqish faqat harorat qiymati mavjud bo'lsa va sifat kodi harorat ma'lumotlarining haqiqiyligini ko'rsatsa yoziladi.
Oldingi holatda bo'lgani kabi, to'rtta rasmiy parametr kirish va chiqish ma'lumotlarining turlarini belgilaydi - bu safar konvolyutsiya funktsiyasi uchun. Birlashtirish funksiyasining kirish turlari displey funksiyasining chiqish turlariga mos kelishi kerak : Matn va IntWritable . Konvolyutsiya funksiyasining chiqish turlari Matn va IntWritable - yil va maksimal harorat uchun, haroratlarni sanab o'tish va elementlarni joriy topilgan maksimal bilan taqqoslash yo'li bilan aniqlanadi.
Ish ob'ekti vazifaning spetsifikatsiyasini shakllantiradi va uni amalga oshirishni boshqarish imkonini beradi ¬. Bu ishni Hadoop klasterida bajarayotganda kod JAR fayliga qadoqlangan (qaysi Hadoop klaster bo'ylab taqsimlanadi). JAR fayl nomini aniq ko'rsatish o'rniga ¬biz sinfni Job sinfining setJarByClass () usuli va Hadoop ga o'tkazishimiz mumkin. belgilangan sinfni o'z ichiga olgan JAR faylini topadi .
Job ob'ektini yaratgandan so'ng ma'lumotlarni kiritish va chiqarish yo'llari ko'rsatilgan (yoki oddiyroq aytganda, kiritish va chiqish yo'llari). Kirish yo'li -FileInputFormat ob'ektida statik addInputPath () usulini chaqirish orqali aniqlanadi ; u bitta faylni, katalogni (bu holda kirish berilgan katalogdagi barcha fayllardan iborat) yoki naqshni belgilashi mumkin. Nomidan ko'rinib turibdiki, addInputPath () usuli bir nechta yo'llardan kirish kiritish uchun qayta-qayta chaqirilishi mumkin. Chiqish yo'li (faqat bitta bo'lishi mumkin) FileOutputFormat ob'ektining statik setOutputPath () usuli bilan o'rnatiladi . U konvolyutsiya funksiyalarining chiqish fayllari yoziladigan katalogni belgilaydi. Ishni boshlashdan oldin katalog mavjud bo'lmasligi kerak, aks holda Hadoop ogohlantirish xabarini chiqaradi va ishni bajarmaydi. Bu -mumkin bo'lgan ma'lumotlar yo'qolishining oldini olish uchun amalga oshiriladi (uzoq davom etgan ishning natijasini tasodifan boshqa ma'lumotlar bilan qayta yozish juda asabiylashadi).
Keyin xaritalash va qisqartirish turlari setMapperClass () va se - tReducerClass () usullari bilan o'rnatiladi .
setOutputKeyClass () va setOutputValueClass () usullari xaritaning chiqish turlarini nazorat qiladi va ko'pincha bir xil bo'lgan funktsiyalarni kamaytiradi (bizning holatimizda bo'lgani kabi) . Agar turlar bir-biridan farq qiladigan bo'lsa, chiqish xaritalash turlari ¬setMapOutputKeyClass () va setMapOutputValueClass () usullari bilan o'rnatiladi .
Kirish turlari kiritish formati nuqtai nazaridan aniqlanadi, biz buni aniq belgilamaymiz, chunki bizning misolimiz standart TextInput ¬Format dan foydalanadi .
Xaritalash va katlama funktsiyalarini belgilaydigan sinflarni o'rnatganingizdan so'ng ¬, ishni bajarishga o'tishingiz mumkin. Job sinfining waitForCompletion ( ) usuli Vazifani bajarish uchun topshiradi va uning bajarilishini kutadi. Usulning mantiqiy argumenti kengaytirilgan chiqish bayrog'ini belgilaydi; bizning holatlarimizda, vazifaning borishi haqidagi ma'lumotlar konsolda ko'rsatiladi.
waitForCompletion () usulining qaytish qiymati muvaffaqiyat ( rost ) yoki muvaffaqiyatsizlik ( false ) ning mantiqiy ¬koʻrsatkichidir , bu dasturdan chiqish kodini 0 yoki 1 ga aylantiradi.
|