Примеры использования правил в SSM
Кеширование файлов
Если вы хотите автоматически перемещать часто запрашиваемые файлы в кеш, используйте правило ниже:
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 и проверьте логи выполнения действия.