Bosh sahifa Wiki HDFS

HDFS

HDFS — katta fayllarni ko‘p serverdan iborat clusterda blocklarga bo‘lib saqlaydigan distributed filesystem. Uning to‘liq nomi Hadoop Distributed File System hisoblanadi.

HDFS yirik fayllarni yuqori throughput bilan ketma-ket o‘qish va yozish uchun optimallashtirilgan. U node failure holatini replication orqali boshqaradi.

Fayl va block

HDFS faylni yirik blocklarga bo‘ladi.

Masalan, katta file:

Block 1
Block 2
Block 3
...

ko‘rinishida turli DataNode’larda saqlanadi.

Block hajmi oddiy local filesystem blockidan ancha katta bo‘lishi mumkin.

NameNode

NameNode filesystem metadata’sini boshqaradi.

U:

haqida ma’lumot saqlaydi.

NameNode odatda file contentni o‘zi uzatmaydi.

DataNode

DataNode block fayllarini lokal storage’da saqlaydi.

U:

amallarini bajaradi.

Client NameNode’dan block manzilini olib, DataNode bilan bevosita aloqa qiladi.

Read jarayoni

Client:

  1. NameNode’dan file block locationlarini so‘raydi;
  2. eng yaqin replica tanlanadi;
  3. DataNode’dan block o‘qiladi;
  4. keyingi blockka o‘tiladi.

Agar DataNode xato bersa boshqa replica ishlatiladi.

Checksum data corruptionni aniqlashga yordam beradi.

Write jarayoni

Client NameNode’dan yangi block uchun DataNode pipeline oladi.

Data oqimi birinchi DataNode’ga, keyin replica pipeline bo‘ylab boshqalarga uzatiladi.

Acknowledgement teskari yo‘nalishda qaytadi.

Replica soni va pipeline holati write durabilityga ta’sir qiladi.

Replication factor

Har block nechta nusxada saqlanishini belgilaydi.

Masalan:

replication factor = 3

Bitta block uch DataNode’da mavjud bo‘ladi.

Ko‘p replica availability va read imkoniyatini oshiradi, ammo storage sarfini ko‘paytiradi.

Rack awareness

Replica’lar bir rack ichida yig‘ilib qolmasligi uchun NameNode network topology’dan foydalanadi.

Agar rack power yoki switch failure yuz bersa boshqa rackdagi nusxa saqlanadi.

Placement locality va fault tolerance o‘rtasida muvozanat qiladi.

Heartbeat

DataNode NameNode’ga muntazam heartbeat yuboradi.

Heartbeat uzoq vaqt kelmasa node ishlamayapti deb hisoblanadi.

Uning blocklari boshqa node’larda kerakli replication factorgacha ko‘paytiriladi.

Block report

DataNode o‘zida mavjud blocklar ro‘yxatini yuboradi.

NameNode metadata bilan solishtirib:

ni aniqlaydi.

Katta clusterda block report hajmi sezilarli bo‘lishi mumkin.

Under-replicated block

Replica soni kerakli qiymatdan kam bo‘lsa block under-replicated.

NameNode boshqa DataNode’ga yangi nusxa yaratishni buyuradi.

Cluster disk yoki networki yetishmasa recovery sekinlashadi.

Over-replicated block

Replica soni policy’dan ko‘p bo‘lsa ortiqcha nusxalar o‘chiriladi.

Qaysi replica o‘chirilishi rack topology va disk balansiga qarab tanlanadi.

Node qaytib kelganda vaqtincha over-replication yuz berishi mumkin.

Append va immutable model

HDFS katta faylni bir marta yozib, ko‘p marta o‘qish modeliga yaqin.

Random in-place update oddiy local filesystem kabi qulay emas.

Data pipeline yangi file yoki partition yaratadi.

Ayrim append imkoniyatlari mavjud bo‘lsa ham workload modeli hisobga olinadi.

Kichik fayllar

Har kichik file NameNode metadata’sida alohida entry va block yaratadi.

Ko‘p kichik file:

yukini oshiradi.

Ular yirik columnar file yoki archive’ga birlashtiriladi.

High availability

NameNode critical service bo‘lgani sabab active va standby model ishlatilishi mumkin.

Standby metadata loglarini kuzatib boradi.

Failoverda:

  • eski active fencing;
  • shared edit holati;
  • client retry;
  • yangi active promotion

bajariladi.

Checkpoint

Namespace image va edit loglar davriy birlashtiriladi.

Bu NameNode restartida replay qilinadigan log hajmini kamaytiradi.

Checkpoint backupning to‘liq o‘rnini bosmaydi.

Metadata image va edit loglar himoyalanadi.

Balancer

Cluster node’lari disk foydalanishi notekis bo‘lsa balancer blocklarni ko‘chiradi.

Balancing:

bilan muvofiqlashtiriladi.

Yangi node qo‘shilganda data avtomatik darhol teng taqsimlanmasligi mumkin.

Decommission

DataNode rejalashtirilgan olib tashlashdan oldin decommission qilinadi.

Undagi blocklar boshqa node’larda kerakli replica soniga yetkaziladi.

Shundan keyin node xavfsiz o‘chiriladi.

To‘g‘ridan-to‘g‘ri o‘chirish ko‘p under-replicated block yaratishi mumkin.

Erasure coding

Katta, sovuq data uchun to‘liq replica o‘rniga data va parity fragmentlari saqlanishi mumkin.

Bu storage sarfini kamaytiradi.

Kamchiligi:

  • recovery compute;
  • ko‘proq fragment read;
  • kichik file uchun samarasizlik;
  • network.

Permission

HDFS Unixga o‘xshash owner, group va permission modeliga ega bo‘lishi mumkin.

Qo‘shimcha ACL va authentication ishlatiladi.

Filesystem permission application-level row securityning o‘rnini bosmaydi.

Safemode

NameNode ishga tushganda vaqtincha safemode’da bo‘lishi mumkin.

Bu davrda u DataNode block reportlarini kutadi va yetarli replica mavjudligini baholaydi.

Safemode vaqtida read ishlashi mumkin, ammo namespace write va replication operationlari cheklanadi.

Federation

Juda katta namespace bir nechta mustaqil NameNode orqali bo‘linishi mumkin.

Har NameNode alohida namespace va block poolni boshqaradi.

DataNode bir nechta block poolga xizmat qilishi mumkin.

Bu metadata scale’ini oshiradi, ammo namespace’lar orasidagi operationlar murakkabroq.

Snapshot

Directory snapshoti ma’lum vaqtdagi namespace holatini saqlashi mumkin. U accidental delete’dan tez tiklashga yordam beradi, ammo boshqa clusterda saqlanadigan mustaqil backupning o‘rnini bosmaydi.

Bog‘liq tushunchalar

Hadoop Distributed File System, NameNode, DataNode, Block, Replication factor, Rack awareness, Checkpoint, Erasure coding, Distributed storage