Что такое распределенный кэш в Hadoop?

Hadoop - это фреймворк с открытым исходным кодом, использующий распределенное хранилище, а также обработку огромных наборов данных с использованием HDFS и MapReduce. Он имеет NameNodes, в которых хранятся метаданные, и DataNodes, в которых хранятся фактические данные в HDFS. Когда нам нужно обработать огромные наборы данных, это выполняется программой, написанной пользователями, а затем обработка выполняется параллельно в узлах данных. В платформе Hadoop есть определенные файлы, которые часто нужны для заданий MapReduce. Если число работающих картографов работает, каждый раз, когда требуется прочитать файлы из HDFS, задержка будет увеличиваться по мере увеличения времени поиска. Таким образом, вместо чтения файлов каждый раз, когда они нужны, файлы можно копировать и отправлять на все узлы данных. Этот механизм называется распределенным кэшем в Hadoop.

Работа распределенного кэша в Hadoop

  • Hadoop копирует файлы, указанные с помощью таких опций, как –files, -libjars и –archives, в HDFS при запуске задания. Затем Node Manager скопирует файлы из 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. Что такое голова в Git?
  4. Apache Hadoop Ecosystem
  5. Переменные в JavaScript