Ускорение загрузки данных
Вы можете увеличить скорость обработки DAX запросов за счет распределения данных на нескольких узлах (горизонтальное масштабирование), что позволит ускорить загрузку данных. Для этого необходимо выполнить следующие шаги:
1. Добавьте в Docker Swarm все используемые для загрузки сервера. Для этого необходимо сделать следующее:
на главном сервере выполните следующую команду для получения токена соединения для рабочих узлов:
docker swarm join-token worker
на остальных серверах, для добавления рабочей ноды, выполните команду с полученным токеном. Например:
docker swarm join \ --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \ 192.168.99.100:2377
убедитесь, что в Swarm указано нужное количество машин:
docker node ls
2. Добавьте лейблы на каждый сервер, начиная с главного, где необходимо подставить нужные идентификаторы нод. Обратите внимание, что цифра после v3-clickhouse
меняется:
docker node update --label-add=v3-clickhouse-1=true WORKER_NODE_ID_1
docker node update --label-add=v3-clickhouse-2=true WORKER_NODE_ID_2
docker node update --label-add=v3-clickhouse-3=true WORKER_NODE_ID_3
…
docker node update --label-add=monitoring-v3=true WORKER_NODE_ID_2
docker node update --label-add=monitoring-v3=true WORKER_NODE_ID_3
…
Для более подробного вывода по "воркер" нодам, можно воспользоваться:
3. Внесите следующие изменения в файл /var/lib/visiology/scripts/v3/visiology3.yml
:
скопируйте секции
clickhouse-1
иjdbc-bridge-1
в количестве, равном количеству ваших серверов. В скопированных секциях необходимо заменить все единицы (1
) на2
,3
,4
и т.д.
Пример (надо заменить цифры в строках 1, 29, 39, 49, 51, 61, 71):
в секцию
environment
разделаformula-engine
необходимо добавить следующие строки:
CLICKHOUSE_HOST_2: ${CLICKHOUSE_HOST_2}
CLICKHOUSE_HOST_3: ${CLICKHOUSE_HOST_3}
и т.д.
4. Внесите следующие изменения в файл /var/lib/visiology/scripts/v3/configs/viqube2.json
:
в секцию
ClickHouseSettings.Nodes
добавьте объекты:
Обратите внимание, что структура этого файла отличается от той, которая используется в версии 3.8.
Запятые должны быть во всех строках, кроме последней.
Не забудьте запятую после объекта
"clickhouse1"
.
В каждой строке нужно поменять цифру на соответствующую в части Host={{ env "CLICKHOUSE_HOST_1" }}
.
5. Внесите следующие изменения в файл /var/lib/visiology/scripts/v3/defaults.env
:
добавьте следующие строки:
CLICKHOUSE_HOST_2=clickhouse-2
CLICKHOUSE_HOST_3=clickhouse-3
и т.д.добавьте следующие строки:
JDBC_BRIDGE_HOST_2=jdbc-bridge-2
JDBC_BRIDGE_HOST_3=jdbc-bridge-3
и т.д.Замените значения
RefreshDataJob__ParallelWorkers
иHangfire__WorkerCount
на количество баз данных Clickhouse, умноженное на 2, т.е. для четырех баз Clickhouse требуется указать значение 8.Убедитесь, что есть пустая строка в конце файла.
6. Внесите следующие изменения в файл /var/lib/visiology/scripts/v3/backup-service.yml
:
Замените поле
CLICKHOUSE_HOSTS
наCLICKHOUSE_HOSTS: ${CLICKHOUSE_HOST_1} ${CLICKHOUSE_HOST_2}
и т.д.
7. Загрузите образы clickhouse, jdbc-bridge, cadvisor, node-exporter, promtail
в память докера на каждом сервере.
8. Выполните следующую команду на главном сервере:
9. Запустите платформу.
Изменение сервера ClickHouse для набора данных
Ранее в Visiology 3 (до версии 3.9) существовало API для изменения привязки “набор данных ↔︎ ClickHouse-сервер”. Т.е. можно было хранить разные наборы данных на разных ClickHouse-серверах.
Начиная с версии 3.9 произошли неболшие изменения в API и логики для новых наборов данных.
Изменения в API
Метод получения serverKey теперь возвращает массив строк, а не простую строку. Например:
Метод подмены serverKey теперь принимает массив строк, а не простую строку. Например:
Изменения в метаданных набора данных
Свойство ServerKey, которое отвечало за сопоставление “набор данных ↔︎ ClickHouse-сервер” было удалено, теперь функционал поддержки привязки наборов данных к ClickHouse-серверам работает немного другим образом (см. ниже). Для существующих моделей реализованы миграции и поведение остается прежним.
Появилось новое свойство ServerSelectionType (число), допускающего значения:
Static (1)
Dynamic (2) - является значением по умолчанию при создании набора данных.
Появилось новое свойство ActiveServerKeys (массив строк).
Если в наборе данных ServerSelectionType = Dynamic, то при загрузке данных ClickHouse-сервер выбирается платформой автоматически.
После загрузки данных всегда записывается значение в поле ActiveServerKeys, т.к. оно в последующем используется для осуществления DAX-запросов.
Появилось новое свойство TargetServerKeys (массив строк).
Если в наборе данных ServerSelectionType = Static, то при загрузке данных ClickHouse сервер выбирается из поля TargetServerKeys.
Настройка ClickHouse-сервера для набора данных
Для новых моделей
При создании нового набора данных через UI полю ServerSelectionType назначается значение Dynamic, что означает автоматическое определение ClickHouse сервера.
Поэтому, если вы создаете новую модель данных и хотите использовать функционал привязки ClickHouse-серверов к набору данных, то необходимо изменить значение свойства ServerSelectionType на Static и привязать конкретный ключ сервера через метод API по уже знакомому методу.
Пример запроса на изменение ServerSelectionType у набора данных:
Для старых моделей
После перехода на 3.9 для существующих моделей менять ничего не нужно, функционал привязки сохранится как было ранее за счет миграций.
Смотрите также
Загрузка данных с помощью JDBC