Память в качестве хранилища (техническое превью)¶
В данной главе описывается как использовать память 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.
В таблице приведена политика хранения копий данных.
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