Що таке розподілений кеш у Hadoop?

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

Робота розподіленого кешу в Hadoop

  • Hadoop копіює файли, визначені параметрами, такими як –files, -libjars та –archives, в HDFS при запуску завдання. Тоді диспетчер вузлів скопіює файли з HDFS в кеш-пам'ять, щоб при виконанні завдання він мав доступ до файлів. Файли можна назвати локалізованими, оскільки вони копіюються в кеш-пам'ять або на локальний диск.
  • У кеш-пам'яті диспетчер вузлів підтримує підрахунок кількості завдань, що використовують кожен файл, як посилання. Кількість еталонних файлів стає 1 до запуску завдання. Але після виконання завдання кількість зменшується на 1. Коли кількість стає 0, файл можна видалити, оскільки він не звикає. Коли кеш-пам'ять вузла досягає певного розміру, видалення файлу робиться для того, щоб можна було розмістити нові файли. Розмір кешу можна змінити у властивості конфігурації. Розмір розподіленого кешу в Hadoop за замовчуванням становить 10 Гб.
  • MapReduce стає повільніше, ніж кеш в процесі обробки, якщо він має накладні витрати. Щоб подолати цю ситуацію, розподілений кеш може серіалізувати об'єкти, але навіть у цього мало проблем. Відображення - це процес, який використовується для дослідження типу інформації протягом часу виконання, який дуже повільний. Крім того, це стає дуже складно в серіалізації, де він зберігає повне ім'я кластера, назву класу разом з посиланнями на інші екземпляри, присутні в змінних членів.

Впровадження Hadoop у розподіленому кеші

  • Щоб використовувати розподілений кеш для програми, нам потрібно переконатися, що для розподілу файлу по вузлах; файл повинен бути спочатку доступним. Тому нам потрібно скопіювати файли на HDFS, а також нам потрібно перевірити, чи доступ до файлу є через URI, які можна знайти, перейшовши до core-site.xml. Потім завдання MapReduce копіює файл кешу на всі вузли, перш ніж завдання почнуть працювати на цих вузлах.
  • Отже, щоб реалізувати розподілений кеш, нам потрібно скопіювати файли в HDFS, і ми можемо перевірити, чи це робиться чи ні за допомогою команди hdfs dfs –put /path/samplefile.jar. Також для програми потрібно налаштувати конфігурацію роботи, і це потрібно додати до класу драйверів.
  • Файли, які читає тільки власник, переходять у приватний кеш, тоді як спільний кеш має файли, які читаються у всьому світі. Файл, який додається в кеш, використовується без обмежень у всіх машинах кластера як локальний файл. Наведені нижче виклики API можна використовувати для додавання файлів у кеш.

Код:

DistributedCache.addCacheFile(URI, conf);
DistributedCache.setCacheFiles(URIs, conf);

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

Переваги розподіленого кешу в Hadoop

Завдяки використанню розподіленого кешу до рамки Hadoop додаються багато вигідних функцій. Нижче наведено переваги використання розподіленого кешу:

1. Розподілений кеш в єдиній точці відмови

У разі виходу з ладу вузла, він не зробить повний збій кешу. Оскільки розподілений кеш працює як окремий або незалежний процес у різних вузлах. Отже, якщо збій кешу відбувається на одному вузлі, це не означає, що повний кеш також повинен вийти з ладу.

2. Узгодженість даних

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

3. Зберігання складних даних

Розподілений кеш у структурі Hadoop забезпечує перевагу кешування файлів лише для читання, таких як текстові файли, jar-файли тощо, а потім передає їх у вузли даних. Через це копія файлу зберігається у кожному вузлі даних. За допомогою функції розподіленого кешу розподіляються та зберігаються складні файли, такі як jar тощо.

Висновок

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

Рекомендовані статті

Це посібник з розподіленого кешу в Hadoop. Тут ми обговорюємо, що розподілений кеш в Hadoop, його робота, реалізація та переваги. Ви також можете ознайомитись з іншими нашими пов’язаними статтями, щоб дізнатися більше -

  1. Переваги Hadoop
  2. Встановити Hadoop
  3. Що таке Head в Git?
  4. Екосистема Apache Hadoop
  5. Змінні в JavaScript

Категорія: