AMALIY MASHG‘ULOT- 15
Маvzu: Kirish ma'lumotlarini siqish va bo'lish
Ishning maqsadi: Kiritilgan ma'lumotlarni siqish va bo'lish formatlarini o'rganish.
MapReduce tomonidan qayta ishlangan ma'lumotlarni siqish imkoniyatini ko'rib chiqayotganda, siqish formati bo'linishni qo'llab-quvvatlaydimi yoki yo'qligini tushunish muhimdir. Aytaylik, HDFSda siqilmagan 1 GB fayl saqlanadi . 64 MB HDFS blok hajmi bilan fayl 16 blokda saqlanadi va ushbu fayldan kirish sifatida foydalanadigan MapReduce ishi 16 ta bo'linishni hosil qiladi, ularning har biri alohida xaritalash vazifasiga kirish sifatida mustaqil ravishda qayta ishlanadi.
Endi fayl gziplanganligini tasavvur qiling siqilgan fayl hajmi esa 1 GB. Avvalgidek, HDFS faylni 16 blokda saqlaydi. Biroq, har bir blok uchun bo'linish yaratish mumkin bo'lmaydi, chunki u gzip oqimidagi ixtiyoriy nuqtadan o'qishni boshlaydi. mumkin emas va shuning uchun xaritalash vazifasi uning bo'linishini boshqalardan mustaqil ravishda o'qiy olmaydi. gzip formatida siqilgan ma'lumotlarni saqlash uchun DEFLATE formatini ishlatadi , bu ma'lumotlarni bir qator siqilgan bloklar sifatida saqlaydi. Muammo shundaki, blokning boshlanishi oqimdagi o'zboshimchalik nuqtasidan keyingi blokning boshiga o'tishga imkon beradigan hech qanday farqlovchi xususiyatlarga ega emas. Shu sababli, gzip qismlarga ajratishni qo'llab-quvvatlamaydi.
MapReduce misolida to'g'ri ish qiladi va siqilgan faylni bo'lishga urinmaydi - kiritilgan ma'lumotlar gzip formatida siqilganligi ma'lum (bu fayl kengaytmasi bilan belgilanadi) va gzip formati qismlarga ajratishni qo'llab-quvvatlamaydi. Ishlar ishlaydi, lekin joylashuvni yo'qotish bilan: bitta xaritalash 16 ta HDFS bloklarini qayta ishlaydi , ularning ko'plari mahalliy bo'lmaydi. Bunga qo'shimcha ravishda, xaritalashlar sonining kamayishi bilan granularlik yo'qoladi va shuning uchun ishni bajarish uchun ko'proq vaqt ketishi mumkin.
Agar bizning taxminiy misolimizdagi fayl LZO formatida siqilgan bo'lsa , xuddi shu muammo yuzaga keladi: asosiy siqish formati o'qishni oqim bilan sinxronlashtirish vositasini ta'minlamaydi. Biroq, LZO fayllari Hadoop LZO kutubxonalarining tarqatilishiga kiritilgan indekslash dasturi orqali qayta ishlanishi mumkin (saytlar ro'yxati sahifadagi "Kodekler" bo'limida keltirilgan. 130 ). Dastur bo'linish nuqtalari indeksini yaratadi, bu esa tegishli MapReduce kiritish formatidan foydalanganda faylni bo'lish imkonini beradi .
Boshqa tomondan, bzip2 fayllari bloklar orasiga sinxronizatsiya markerlarini joylashtiradi (n ning 48-bitli taxmini), shuning uchun ular uchun bo'linish mumkin. (4.1-jadvalda bo'lim ma'lum bir siqishni formatini qo'llab-quvvatlashi ko'rsatilgan.)
Do'stlaringiz bilan baham: |