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:
- HDFS — distributed storage;
- YARN — cluster resource management;
- MapReduce — batch processing modeli;
- Common — umumiy library va utilitylar.
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:
- application requestlarini qabul qiladi;
- container resource ajratadi;
- node holatini kuzatadi;
- scheduling policy qo‘llaydi.
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:
- network;
- disk;
- sort;
- serialization
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:
- directory;
- file;
- permission;
- block mapping;
- replica policy
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:
- log processing;
- index yaratish;
- data transform;
- tarixiy aggregation;
- machine learning preprocessing.
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:
- authentication;
- service identity;
- file permission;
- encryption;
- audit;
- network segmentation;
- key management.
Faqat private network ichida bo‘lish authentication o‘rnini bosmaydi.
Cluster sizing
Capacity rejasida:
- raw data;
- replication factor;
- temporary shuffle;
- intermediate output;
- growth;
- reserved disk;
- CPU;
- memory;
- network
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