Bosh sahifa Wiki Hadoop

Hadoop

Hadoop — katta hajmdagi ma’lumotlarni ko‘p serverdan iborat clusterda saqlash va parallel qayta ishlash uchun yaratilgan ochiq ekotizim. Uning asosiy tarixiy komponentlari distributed filesystem, resource manager va batch processing modelidan iborat.

Hadoop commodity serverlar ishlamay qolishi mumkinligini hisobga olib, data replication va tasklarni qayta bajarish orqali fault tolerance yaratadi.

Asosiy komponentlar

Hadoop ekotizimining asosiy qismlari:

Ularning ustida Hive, Spark va boshqa data vositalari ishlashi mumkin.

HDFS

HDFS katta fayllarni blocklarga bo‘lib, cluster node’lari bo‘ylab saqlaydi.

Blocklar bir nechta nusxada saqlanishi mumkin.

Node ishlamay qolsa boshqa replica orqali data o‘qiladi.

HDFS ko‘p yirik fayl va sequential access uchun optimallashtirilgan.

YARN

YARN cluster CPU va memory resource’larini applicationlar orasida taqsimlaydi.

U:

Bir clusterda MapReduce, Spark va boshqa engine’lar ishlashi mumkin.

MapReduce

MapReduce katta datasetni parallel qayta ishlash modeli.

Asosiy bosqichlar:

Map
→ Shuffle
→ Reduce

Map input recordlarni key-value juftlariga aylantiradi.

Shuffle bir xil keylarni guruhlaydi.

Reduce har key guruhini yakuniy natijaga aylantiradi.

Map bosqichi

Input splitlar workerlar orasida taqsimlanadi.

Har mapper mustaqil recordlar ustida ishlaydi.

Masalan, matndagi har so‘zni:

word → 1

ko‘rinishida chiqaradi.

Map task failure bo‘lsa boshqa node’da qayta bajarilishi mumkin.

Shuffle

Mapper outputlari key bo‘yicha partition va sort qilinadi.

Bir xil keyga tegishli barcha qiymatlar bir reducerga yuboriladi.

Shuffle:

xarajatiga ega.

Data skew ayrim reducerlarni juda sekinlashtirishi mumkin.

Reduce bosqichi

Reducer bir key va unga tegishli qiymatlar to‘plamini qayta ishlaydi.

Word count misolida:

word → [1, 1, 1]

qiymatlar yig‘iladi.

Reducer outputi HDFS yoki boshqa storage’ga yoziladi.

Data locality

Katta data’ni network orqali compute’ga ko‘chirish o‘rniga task data block joylashgan node yoki unga yaqin node’da ishga tushiriladi.

Bu data locality.

Storage va compute bir clusterda bo‘lganda network sarfi kamayadi.

Cloud object storage’da bu model boshqacha bo‘lishi mumkin.

Fault tolerance

Node yoki task ishlamay qolishi tabiiy holat sifatida qaraladi.

Hadoop:

orqali ishni davom ettiradi.

Application taski deterministic va qayta bajarishga chidamli bo‘lishi kerak.

NameNode

HDFS namespace va block metadata’sini boshqaradigan markaziy service.

U:

haqida ma’lumot saqlaydi.

File contentning o‘zi NameNode’da saqlanmaydi.

Metadata memory hajmi cluster file soniga bog‘liq.

DataNode

DataNode blocklarni lokal diskda saqlaydi.

U NameNode’ga heartbeat va block report yuboradi.

Client data oqimini DataNode’dan bevosita oladi.

DataNode yo‘qolsa block replication tiklanadi.

Kichik fayllar muammosi

Har file va block NameNode metadata’sida joy egallaydi.

Millionlab juda kichik fayl:

  • metadata memory;
  • listing;
  • scheduling;
  • open operation

xarajatini oshiradi.

Kichik eventlar yirik container, columnar file yoki archive formatga birlashtiriladi.

Batch workload

Hadoop tarixan katta batch joblar uchun kuchli.

Masalan:

Interaktiv past latency query uchun alohida engine ishlatilishi mumkin.

Ecosystem

Hadoop atrofida turli vositalar shakllangan:

  • Hive — SQLga yaqin query;
  • HBase — distributed column-family storage;
  • Spark — umumiy compute engine;
  • Oozie yoki boshqa workflow vositalari;
  • data ingestion va metadata tizimlari.

Hadoop so‘zi ba’zan butun ekotizim ma’nosida ishlatiladi.

Security

Katta cluster quyidagilarni talab qiladi:

Faqat private network ichida bo‘lish authentication o‘rnini bosmaydi.

Cluster sizing

Capacity rejasida:

hisobga olinadi.

Disk to‘lishi replication va rebalancingni qiyinlashtiradi.

Hadoop va cloud

Cloud muhitida compute va storage ajratilishi mumkin.

HDFS o‘rniga object storage, YARN o‘rniga managed scheduler ishlatilishi ehtimoli bor.

Shunga qaramay Hadoop ekotizimidagi file format, query va batch processing tushunchalari davom etadi.

Speculative execution

Bir task boshqalardan ancha sekin qolsa scheduler uning nusxasini boshqa node’da ishga tushirishi mumkin.

Birinchi tugagan natija qabul qilinadi.

Bu sekin disk yoki node muammosini yumshatadi, ammo tashqi side effectli taskni ikki marta bajarishi mumkin.

Data serialization

Map va Reduce orasidagi recordlar serialize qilinadi.

Format hajmi va CPU sarfi shuffle performance’iga ta’sir qiladi.

Schema’li binary format matnga qaraganda compact bo‘lishi mumkin.

Custom serializer turli application versiyalari bilan mos ishlashi kerak.

Job history

Tugagan joblar uchun task davomiyligi, retry, input hajmi, shuffle va failure sababi saqlanadi. Bu sekin stage, data skew va nosoz node’ni aniqlashga yordam beradi.

Node decommission

Worker rejalashtirib olib tashlanganda blocklar va faol tasklar xavfsiz ko‘chiriladi. Node’ni birdan o‘chirish replication backlog va task failure’larini oshiradi.

Bog‘liq tushunchalar

HDFS, YARN, MapReduce, NameNode, DataNode, Data locality, Distributed computing, Batch processing, Fault tolerance, Big Data