Примеры использования правил в SSM

Обзор

В данной статье описаны примеры использования правил в SSM. Перед запуском примеров выполните следующие шаги:

  1. Установите SSM.

  2. Настройте типы хранения SSD, DISK и ARCHIVE в параметре hdfs-site.xml → dfs.datanode.data.dir в ADCM.

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

Кеширование файлов

 
Если вы хотите автоматически перемещать часто запрашиваемые файлы в кеш, используйте правило ниже:

file: accessCount(1min) > 0 and path matches "/demoCacheFile/*" | cache

С таким правилом SSM будет кешировать файлы из директории demoCacheFile, которые запрашивались хотя бы 1 раз за последнюю минуту.

Для тестирования заранее были созданы файлы в директории user/sergei/demoCacheFile в HDFS. Команда ниже печатает имена этих файлов:

list -file /user/sergei/demoCacheFile
Action starts at Wed Feb 14 14:05:59 UTC 2024 : List /user/sergei/demoCacheFile
-rw-r--r--     3 sergei	sergei	           10 2024-02-14 14:04 /user/sergei/demoCacheFile/f1.txt
-rw-r--r--     3 sergei	sergei	           13 2024-02-14 14:04 /user/sergei/demoCacheFile/f2.txt
-rw-r--r--     3 sergei	sergei	           12 2024-02-14 14:04 /user/sergei/demoCacheFile/f3.txt

Чтобы проверить работоспособность примера, запросите файл, например, выполнив действие read:

read -file /user/sergei/demoCacheFile/f1.txt

Если ошибок нет, то вы можете увидеть имя этого файла на странице Cluster → Data Temperature → Files in Cache.

Файлы в кеше
Файлы в кеше
Файлы в кеше
Файлы в кеше

Перемещение данных между холодным хранилищем и горячим

 

ВАЖНО
Убедитесь, что в HDFS настроены типы хранения SSD и ARCHIVE, иначе пример может работать некорректно.

Чтобы переместить файлы из холодного хранилища в горячее, используйте правило ниже:

file: accessCount(1min) > 0 and path matches "/user/sergei/demoCold2Hot/*" | allssd

Чтобы проверить тип хранилища, выполните команду checkstorage в панели Run Action:

checkstorage -file /user/sergei/demoCold2Hot/f1.txt

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

File offset = 0, Block locations = {10.92.41.28:9866[DISK] 10.92.41.202:9866[DISK] 10.92.41.33:9866[DISK] }

После прочтения файла условие в правиле выполнилось, и действие allssd применилось. Вывод стал таким:

File offset = 0, Block locations = {10.92.41.33:9866[SSD] 10.92.41.28:9866[SSD] 10.92.41.202:9866[SSD] }

Также файл теперь можно найти на странице Cluster → Data Temperature → Hot files.

Горячие файлы
Горячие файлы
Горячие файлы
Горячие файлы

Чтобы настроить перемещение файлов из горячего хранилища в холодное, используйте следующее правило:

file : age > 3min and path matches "/user/sergei/demoHot2Cold/*" | archive

Синхронизация данных

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

file: path matches "/user/sergei/demoSyncSrc/*" | sync -dest hdfs://stikhomirov-adh1.ru-central1.internal/demoSyncDest

Если на кластере с SSM настроено специальное пространство имен, вы можете подставить название пространства имен вместо имени хоста в команде выше.

ПРИМЕЧАНИЕ
Для корректной работы команды sync достаточно иметь установленный SSM хотя бы на одном кластере (источник или целевой). Также источник копирования не обязан быть локальным, а целевая директория — удаленной.

Чтобы проверить правильность синхронизации, можно сравнить контрольные суммы. Для источника можно получить контрольную сумму, выполнив соответствующую команду в панели Run Action:

checksum -file /user/sergei/demoSyncSrc/f1.txt

Вывод для данного файла:

/user/sergei/demoSyncSrc/f1.txt	MD5-of-0MD5-of-512CRC32C	00000200000000000000000049c19b14a1077d0a6fc95bee2db8914c

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

$ hadoop fs -checksum /demoSyncDest/f1.txt

Контрольная сумма в выводе совпадает с приведенной выше:

/demoSyncDest/f1.txt    MD5-of-0MD5-of-512CRC32C        00000200000000000000000049c19b14a1077d0a6fc95bee2db8914c

Если суммы не совпадают или присутствуют другие ошибки, перейдите на страницу Actions и проверьте логи выполнения действия.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней