Установка
Требования
| Компонент | Версия |
|---|---|
| Greenplum | 6.27.1-p2 (PostgreSQL 9.4.26) |
| PXF | 6.10.1 |
| Java (в PXF) | 8 |
| ClickHouse | 24.x и новее |
| Платформа | rhel7-gcc11, rhel8, rosa12, ubuntu22.04 |
Коннектор ставится поверх уже работающего кластера Greenplum с установленным PXF - сам PXF этой инструкцией не разворачивается, см. страницу PXF.
Шаг 1. Получить дистрибутив
Пакеты лежат в Nexus, отдельно под каждую платформу:
https://repo.datasapience.ru/repository/gp_raw/components/clickhouse_fdw/clickhouse_fdw-1.1.0-<платформа>-x86_64.tar.gz
Доступ к репозиторию выдаётся отдельно. Анонимный запрос вернёт 401 - скачивание требует базовой авторизации:
curl -u '<логин>:<пароль>' -O \
"https://repo.datasapience.ru/repository/gp_raw/components/clickhouse_fdw/clickhouse_fdw-1.1.0-ubuntu22.04-x86_64.tar.gz"
tar -xzf clickhouse_fdw-1.1.0-ubuntu22.04-x86_64.tar.gz
Логин и пароль на чтение репозитория узнайте у того, кто выдаёт доступ к Nexus в вашей организации.
Шаг 2. Установка через Ansible
В распакованном архиве - готовая Ansible-роль clickhouse_fdw_install. Управляющему хосту, с которого запускается плейбук, нужен ansible-core версии 2.14 и новее и ssh-доступ ко всем хостам Greenplum.
cd clickhouse_fdw-1.1.0-ubuntu22.04-x86_64
cp inventory.example inventory
cp group_vars/all.yml.example group_vars/all.yml
ansible-galaxy collection install -r requirements.yml
ansible-playbook -i inventory playbook.yml
Отредактируйте inventory и group_vars/all.yml под свой кластер - адреса хостов, пути $GPHOME/$PXF_BASE, при необходимости данные для отдельного PXF-server-конфига.
Роль идемпотентна: повторный запуск на уже установленном кластере ничего не ломает, изменения применяются, только если файлы плагина или конфигурация действительно отличаются от того, что уже на диске.
Что делает роль:
- Копирует
pxf_fdwиclickhouse_fdwна все хосты Greenplum (мастер и сегменты). - Копирует jar-файл плагина на хосты PXF.
- Добавляет профиль коннектора в конфигурацию PXF. Существующие профили других интеграций (jdbc, hdfs и подобные) роль не трогает - ни при установке, ни при удалении.
- Перезапускает кластер PXF, если что-то из предыдущих шагов реально изменилось.
- Создаёт расширения в целевой базе данных.
- Проверяет результат: состояние PXF на всех хостах, наличие
clickhouse_fdwиtkh_fdwв каталоге.
Перезапуск PXF. Установка (как и любое изменение, требующее pxf cluster restart) на несколько секунд останавливает сервис PXF на кластере - обычный перезапуск занимает около 7 секунд, и всё это время PXF недоступен. Greenplum при этом не перезапускается и не останавливается. Планируйте короткое окно на установку заранее, а не узнавайте о простое по факту.
Не запускайте установку параллельно с другой операцией, которая тоже трогает PXF на этом кластере. Две такие операции одновременно способны уронить PXF намного основательнее, чем обычный перезапуск, и растянуть простой на несколько минут. Прежде чем запускать плейбук, убедитесь, что на кластере не идёт другая операция с PXF, и дождитесь её завершения.
Шаг 3. Создание расширений в базе
Если роль Ansible уже создала расширения (шаг 5 выше), этот шаг не нужен. Вручную:
clickhouse_fdw объявлен как зависящий от pxf_fdw (requires = 'pxf_fdw') - pxf_fdw создаётся один раз, а clickhouse_fdw можно потом обновлять отдельно от него.
Расширение регистрирует два foreign data wrapper с одинаковым поведением - clickhouse_fdw и tkh_fdw (алиас для совместимости с ADB), схему clickhouse для служебных объектов и функцию очистки осиротевших staging-таблиц.
Установка вручную
Если Ansible недоступен или нужно поставить коннектор на один хост для проверки, файлы можно разложить руками. На каждый хост Greenplum копируются pxf_fdw.* и clickhouse_fdw.* в каталоги расширений PostgreSQL, на каждый хост PXF - jar плагина в $PXF_BASE/lib и профиль коннектора в $PXF_BASE/conf/pxf-profiles.xml. После этого - pxf cluster sync && pxf cluster restart и создание расширений в базе, как в шаге 3.
Ручная установка требует такого же короткого окна недоступности PXF на время перезапуска, как и установка через Ansible, и то же предостережение про параллельные операции с PXF остаётся в силе.