Hadoop Distributed Filesystem

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Hadoop Distributed File System (HDFS) - це розподілена файлова система, яка забезпечує високошвидкісний доступ до даних і є одним з ключових компонентів платформи Hadoop. HDFS - це файлова система на основі Java, яка забезпечує масштабовність і надійне зберігання даних, призначена для розбиття великих кластерів на стандартних серверах. HDFS, MapReduce та YARN утворюють ядро Apache Hadoop.

Концепції та структура HDFS[ред. | ред. код]

HDFS є ієрархічною файловою системою. Таким чином, в HDFS є підтримка вкладення каталогів. У каталозі може розташовуватися нуль або більше файлів, а також будь-яка кількість підкаталогів.

HDFS складається з наступних обов'язкових компонентів:

  • Вузол імен (NameNode) - програмний код, що виконується, в загальному випадку, на виділеній машині примірника HDFS і відповідає за файлові операції (роботу з метаданими);
  • Вузол даних (DataNode) - програмний код, як правило, виконується виділеної машині примірника HDFS і відповідає за операції рівня файлу (робота з блоками даних).

Hadoop містить єдиний вузол типу NameNode і довільну кількість вузлів типу DataNode.

Основні концепції, закладені при проектуванні HDFS, і архітектурні рішення, застосовувані для реалізації цих концепцій:

  • Обсяг даних. HDFS не повинна мати досяжних в осяжному майбутньому обмежень на обсяг збережених даних.

Архітектурне рішення:

  1. HDFS зберігає файли поблочно. Блоки в HDFS розподілені між вузлами даних обчислювального кластера. Всі блоки (крім останнього блоку файлу) мають однаковий розмір, крім того блок може бути розміщений на декількох вузлах.
  • Відмовостійкість. HDFS розцінює вихід з ладу вузла даних як норму, а не як виняток (дійсно, ймовірність виходу хоча б одного вузла з тисячі навіть на надійному фізичному обладнанні істотна).

Архітектурні рішення:

  1. Для забезпечення відмовостійкості всі дані в HDFS репліціюются налаштовувану кількість разів.
  2. Захист від копіювання пошкоджених даних вирішено за допомогою зберігання контрольних сум в окремому прихованому файлі.
  3. Копіювання метаданих за допомогою вторинного вузла імен.
  • Автодіагностика. Діагностика справності вузлів в Hadoop-кластері не повинна вимагати додаткового адміністрування.

Архітектурні рішення:

  1. Кожен вузол даних через певні інтервали часу відправляє діагностичні повідомлення вузлу імен.
  2. Логування операцій над файлами в спеціальний журнал вузла імен.

Продуктивність. У квітні 2008 року Hadoop побив світовий рекорд продуктивності в стандартизованном тесті продуктивності по сортуванню даних - 1 Тбайт був оброблений за 309 сек. на кластері з 910 вузлів.

Архітектурні рішення:

  1. Принцип «один раз записати - багато разів прочитати» (Write-once and read-many, WORM) повністю звільняє систему від блокувань типу «запис-читання». Позбутися від конфліктів множинного запису архітектори вирішили, дозволивши запис у файл в один час тільки одному процесу.
  2. HDFS оптимізований під потокову передачу даних.
  3. Зниження навантаження на канали передачі даних (а саме ці канали найчастіше є вузьким місцем у розподілених середовищах), а також більш раціональне використання простору на жорстких дисках дозволило досягти стиснення даних.
  4. Реплікація відбувається в асинхронному режимі.
  5. Зберігання всіх метаданих вузла "NameNode" в оперативній пам'яті.

Вузол імен[ред. | ред. код]

Вузол імен (NameNode) являє собою програмний код, що виконується, в загальному випадку, на виділеній машині екземпляра HDFS і відповідає за файлові операції, такі як відкриття і закриття файлів, створення і видалення каталогів. Крім того, NameNode відповідає за:

  • управління простором імен файлової системи
  • управління доступом з боку зовнішніх клієнтів
  • відповідність між файлами і репліціюватися на вузлах даних блоками

Hadoop містить єдиний вузол типу NameNode, що породжує вразливість всього кластера, викликану виходом вузол типу NameNode (одинична точка відмови). HDFS підтримує вторинний вузол імен - Secondary NameNode. Часто цей факт є причиною омани, що при відмові первинного вузла імен, його автоматично замінить вторинний вузол імен. Насправді підтримки автоматичного відновлення кластера після відмови первинного вузла NameNode у версії 1.0.0 немає.

Вторинний вузол імен виконує такі функції:

  • копіює образ HDFS (розташований у файлі FsImage) і лог транзакцій операцій з файловими блоками (EditLog) у тимчасову папку
  • застосовує зміни, накопичені в балці транзакцій до образу HDFS
  • записує новий образ FsImage на вузол NameNode, після чого відбувається очищення EditLog

Вузол даних[ред. | ред. код]

Вузол даних (DataNode), як і вузол NameNode, також являє собою програмний код, що виконується, як правило, на виділеній машині екземпляра HDFS і відповідає за операції рівня файлу, такі як: запис і читання даних, виконання команд створення, видалення і реплікації блоків , отримані від вузла NameNode. Крім того, вузол DataNode відповідає за:

  • періодичну відправку повідомлення про стан (heartbeat-повідомлення)
  • обробку запитів на читання і запис, що надходять від клієнтів файлової системи HDFS

Клієнти HDFS[ред. | ред. код]

Клієнти являють собою програмних клієнтів, що працюють з файловою системою. У ролі клієнта може виступати будь-який додаток або користувач, який взаємодіє через спеціальний API з файловою системою HDFS.

Для клієнта HDFS виглядає як звичайна файлова система - ієрархія каталогів з вкладеними в них підкаталогами і файлами. Як і у файлових системах загального призначення, клієнтові, за наявності достатніх прав, дозволені наступні операції: створення, видалення, перейменування, переміщення. Вищеназвані операції застосовувані до каталогів і файлів.

Найбільш істотна відмінність роботи клієнта з файловою системою HDFS від роботи з файловою системою загального призначення - це те, що при створенні файлу клієнт може явно вказати розмір блоку файлу (за умовчанням 64 Мб) і кількість створюваних реплік (за замовчуванням значення дорівнює 3) .