Skip to content

Установка

Требования

Компонент Версия
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-конфига.

Роль идемпотентна: повторный запуск на уже установленном кластере ничего не ломает, изменения применяются, только если файлы плагина или конфигурация действительно отличаются от того, что уже на диске.

Что делает роль:

  1. Копирует pxf_fdw и clickhouse_fdw на все хосты Greenplum (мастер и сегменты).
  2. Копирует jar-файл плагина на хосты PXF.
  3. Добавляет профиль коннектора в конфигурацию PXF. Существующие профили других интеграций (jdbc, hdfs и подобные) роль не трогает - ни при установке, ни при удалении.
  4. Перезапускает кластер PXF, если что-то из предыдущих шагов реально изменилось.
  5. Создаёт расширения в целевой базе данных.
  6. Проверяет результат: состояние PXF на всех хостах, наличие clickhouse_fdw и tkh_fdw в каталоге.

Перезапуск PXF. Установка (как и любое изменение, требующее pxf cluster restart) на несколько секунд останавливает сервис PXF на кластере - обычный перезапуск занимает около 7 секунд, и всё это время PXF недоступен. Greenplum при этом не перезапускается и не останавливается. Планируйте короткое окно на установку заранее, а не узнавайте о простое по факту.

Не запускайте установку параллельно с другой операцией, которая тоже трогает PXF на этом кластере. Две такие операции одновременно способны уронить PXF намного основательнее, чем обычный перезапуск, и растянуть простой на несколько минут. Прежде чем запускать плейбук, убедитесь, что на кластере не идёт другая операция с PXF, и дождитесь её завершения.

Шаг 3. Создание расширений в базе

Если роль Ansible уже создала расширения (шаг 5 выше), этот шаг не нужен. Вручную:

CREATE EXTENSION pxf_fdw;
CREATE EXTENSION clickhouse_fdw;

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 остаётся в силе.