Память в качестве хранилища (техническое превью)

В данной главе описывается как использовать память DataNode в качестве хранилища в HDFS.

Important

Данная возможноть представлена как технический обзор и рассмотрена в рамках развития. Не следует использовать ее в продуктивной среде. При наличии вопросов относительно данной особенности необходимо обратиться в службу поддержки – info@arenadata.io

Введение

HDFS поддерживает эффективную запись больших наборов данных в надежное хранилище, а также обеспечивает безотказный доступ к данным. Это хорошо работает для пакетных заданий, записывающих большое количество данных.

Новые классы приложений управляют вариантами использования для записи меньшего количества временных данных. При использовании памяти DataNode в качестве хранилища адресов вариантов использования приложений, записывается относительно небольшое количество промежуточных наборов данных с низкой задержкой.

Запись данных блока в память снижает надежность, поскольку данные могут быть потеряны из-за перезагрузки процесса до их сохранения на диск. При этом HDFS пытается своевременно сохранить копии данных на диск, чтобы уменьшить риск потери данных.

Память DataNode указывается при использовании типа хранения RAM_DISK и политики хранения LAZY_PERSIST.

Для использования памяти DataNode в качестве хранилища HDFS необходимо выполнить следующие шаги:

  • Выключить DataNode;
  • Установить часть памяти DataNode для использования HDFS;
  • Назначить DataNode тип хранения RAM_DISK и включить режим локального чтения данных;
  • Установить политику хранения LAZY_PERSIST в файлах и каталогах HDFS, которые будут использовать память в качестве хранилища;
  • Перезапустить DataNode.

При обновлении параметра политики хранения в файле или каталоге, необходимо использовать инструмент переноса данных HDFS mover для фактического перемещения блоков (как указано в новой политике хранения).

Память как хранилище представляет собой один из аспектов возможностей управления ресурсами YARN, который включает CPU scheduling, CGroups, node labels и архивное хранилище.

Типы хранилища HDFS

Типы хранилища HDFS могут использоваться для назначения данных для различных типов физических носителей информации. Доступны следующие типы хранилища:

  • DISK - дисковое хранилище (тип хранения по умолчанию);
  • ARCHIVE - архивное хранилище (высокая плотность хранения, низкий ресурс обработки);
  • SSD - твердотельный накопитель;
  • RAM_DISK - память DataNode.

Если тип хранилища не назначен, по умолчанию используется тип DISK.

Политика хранения LAZY_PERSIST

C помощью политики хранения LAZY_PERSIST можно хранить данные в сконфигурированной памяти DataNode. При этом первая копия данных хранится в RAM_DISK (память DataNode), а остальные копии - на DISK. Резервным хранилищем для создания и копирования является DISK.

В таблице приведена политика хранения копий данных.

Табл. 45. Политика хранения копий данных
ID
политики
Название
политики
Размещение блока
(для n реплик)
Резервное
хранилище для
генерации
Резервное
хранилище для
копирования
15 LAZY_PERSIST RAM_DISK: 1, DISK: n-1 DISK DISK

Important

В настоящее время политики хранения нельзя редактировать

Настройка памяти в качестве хранилища

Для настройки памяти в качестве хранилища необходимо выполнить следующие действия:

1. Выключить DataNode

Закрыть DataNode с помощью соответствующих команд.

2. Установить часть памяти DataNode для HDFS

Для использования памяти DataNode в качестве хранилища, необходимо сначала установить часть памяти DataNode для использования HDFS.

Например, для выделения 2 ГБ памяти для хранения HDFS необходимо использовать следующие команды:

sudo mkdir -p /mnt/hdfsramdisk
sudo mount -t tmpfs -o size=2048m tmpfs /mnt/hdfsramdisk
Sudo mkdir -p /usr/lib/hadoop-hdfs

3. Назначить тип памяти RAM_DISK и включить режим локального чтения данных

Чтобы присвоить DataNodes тип памяти RAM_DISK и включить режим локального чтения данных, необходимо изменить следующие свойства в файле /etc/hadoop/conf/hdfs-site.xml:

  • Свойство dfs.name.dir определяет, где в локальной файловой системе DataNode хранит свои блоки. Чтобы указать DataNode в качестве хранилища RAM_DISK, необходимо добавить [RAM_DISK] в начало пути локальной файловой системы и в свойство dfs.name.dir;
  • Установить для параметра dfs.client.read.shortcircuit значение true, чтобы включить режим локального чтения данных.

Например:

<property>
  <name>dfs.data.dir</name>
  <value>file:///grid/3/aa/hdfs/data/,[RAM_DISK]file:///mnt/hdfsramdisk/</value>
</property>

<property>
  <name>dfs.client.read.shortcircuit</name>
  <value>true</value>
</property>

<property>
  <name>dfs.domain.socket.path</name>
  <value>/var/lib/hadoop-hdfs/dn_socket</value>
</property>

<property>
  <name>dfs.checksum.type</name>
  <value>NULL</value>
</property>

4. Установить политику хранения LAZY_PERSIST в файлах или каталогах

Для установки политики хранения LAZY_PERSIST в файлах или каталогах необходимо выполнить команду:

hdfs dfsadmin -setStoragePolicy <path> <policyName>

Аргументы:

  • <path> - путь к каталогу или файлу;
  • <policyName> - название политики хранения.

Пример:

hdfs dfsadmin -setStoragePolicy /memory1 LAZY_PERSIST

Для возврата политики хранения файла или каталога необходимо выполнить команду:

hdfs dfsadmin -getStoragePolicy <path>

Аргументы:

  • <path> - путь к каталогу или файлу.

Пример:

hdfs dfsadmin -getStoragePolicy /memory1 LAZY_PERSIST

5. Запуск DataNode

Запустить DataNode с помощью соответствующих команд.

Использование “mover” для применения политик хранения

При обновлении параметра политики хранения в файле или каталоге, новая политика не применяется автоматически. Необходимо использовать инструмент переноса данных HDFS mover для фактического перемещения блоков (как указано в новой политике хранения).

Средство миграции данных mover сканирует указанные файлы в HDFS и проверяет, соответствует ли размещение блоков политике хранения. Копии блоков, нарушающих политику хранения, он перемещает в соответствующий тип хранилища для выполнения требований политики.

Команда:

hdfs mover [-p <files/dirs> | -f <local file name>]

Аргументы:

  • -p <files/dirs> - список файлов/каталогов HDFS для переноса, разделенные пробелами;
  • -f <local file> - локальный файл, содержащий список файлов/каталогов HDFS для переноса

Important

Если оба параметра -p и -f опущены, путь по умолчанию является корневым каталогом

Пример:

hdfs mover /memory1/testfile