gpfdist
Загружает файлы данных на сегменты Greengage DB или выгружает файлы данных с сегментов Greengage DB. Подробное описание и примеры использования см. в статье Использование gpfdist.
Синтаксис
gpfdist [ -d <directory> ]
[ -p <http_port> ]
[ -P <last_http_port> ]
[ -l <log_file> ]
[ -t <timeout> ]
[ -k <clean_up_timeout> ]
[ -S ]
[ -w <time> ]
[ -v | -V ]
[ -s ]
[ -m <max_length> ]
[ --ssl <certificate_path> ]
[ --compress ]
[ --multi_thread <num_threads> ]
[ -I <input_transformation_name> ]
[ -O <output_transformation_name> ]
[ -c <config.yaml> ]
gpfdist -? | --help
gpfdist --version
Описание
gpfdist — это утилита Greengage DB для параллельного распространения файлов.
Она используется читающими таблицами и утилитой gpload для загрузки файлов внешних таблиц на все сегменты Greengage DB в параллельном режиме.
Также она используется с пишущими таблицами для приема потоков вывода с сегментов Greengage DB в параллельном режиме и записи их в файл.
Утилиты gpfdist и gpload совместимы только с мажорной версией Greengage DB, в комплекте с которой они поставляются.
Например, утилита gpfdist, установленная с Greengage DB 6.x, не может использоваться с Greengage DB 7.x.
Чтобы утилита gpfdist могла использоваться внешней таблицей, выражение LOCATION в ее определении должно указывать источник данных с использованием протокола gpfdist://.
Если для включения SSL-шифрования указан параметр --ssl, внешнюю таблицу необходимо создавать с использованием протокола gpfdists://.
Преимущество использования gpfdist заключается в обеспечении максимального параллелизма при чтении данных из внешних таблиц и записи в них, что дает наилучшую производительность и упрощает администрирование внешних таблиц.
Для читающих таблиц gpfdist анализирует и равномерно распределяет файлы данных между всеми экземплярами сегментов в кластере Greengage DB при выполнении пользователями операции SELECT над внешней таблицей.
Для пишущих таблиц gpfdist принимает параллельные потоки вывода от сегментов при выполнении пользователями операции INSERT во внешнюю таблицу и записывает данные в выходной файл.
Если при чтении данных gpfdist обнаруживает ошибку форматирования, сообщение содержит номер строки, указывающий место возникновения ошибки.
gpfdist пытается определить строку, в которой произошла ошибка форматирования.
Однако для некоторых типов ошибок форматирования gpfdist может не определить точную строку.
Для читающих таблиц, если загружаемые файлы сжаты с помощью gzip, bzip2 или zstd (имеют расширения .gz, .bz2 или .zst), gpfdist распаковывает данные во время загрузки (на лету).
Для пишущих таблиц gpfdist сжимает данные с помощью gzip, если целевой файл имеет расширение .gz, с помощью bzip2, если целевой файл имеет расширение .bz2, или с помощью zstd, если целевой файл имеет расширение .zst.
Сжатие не поддерживается для читающих и пишущих таблиц при запуске gpfdist на операционных системах семейства Windows.
При чтении или записи данных с использованием протоколов gpfdist или gpfdists Greengage DB добавляет заголовок HTTP-запроса X-GP-PROTO, указывая, что запрос отправлен Greengage DB.
Утилита отклоняет HTTP-запросы, в заголовках которых отсутствует X-GP-PROTO.
Как правило, gpfdist запускают на ETL-серверах, а не на хостах, где установлен Greengage DB.
Чтобы установить gpfdist на другом хосте, скопируйте утилиту на этот хост и добавьте gpfdist в переменную окружения PATH.
При использовании IPv6 всегда заключайте числовой IP-адрес в квадратные скобки.
Параметры
- -d <directory>
-
Каталог, из которого
gpfdistзагружает файлы для читающих таблиц или в котором создает выходные файлы для пишущих таблиц. Если опция не указана, выбирается каталог, откуда запущена утилитаgpfdist. - -p <http_port>
-
HTTP-порт, который используется для загрузки файлов. По умолчанию используется порт
8080. - -P <last_http_port>
-
Последний HTTP-порт в диапазоне от
http_portдоlast_http_portвключительно, которыеgpfdistпытается использовать для загрузки файлов.gpfdistиспользует первый порт в диапазоне, к которому удалось успешно подключиться. - -l <log_file>
-
Полный путь и имя лог-файла, в который записываются сообщения стандартного вывода.
- -t <timeout>
-
Устанавливает время, отведенное Greengage DB для установления подключения к процессу
gpfdist. По умолчанию —5секунд. Допустимые значения: от2до7200секунд (2 часа). В системах с высокой сетевой нагрузкой может потребоваться увеличение этого значения. - -k <clean_up_timeout>
-
Задает количество секунд, в течение которых
gpfdistожидает перед очисткой сессии при отсутствииPOST-запросов от сегментов. По умолчанию —300секунд. Допустимые значения: от300до86400секунд. При высокой сетевой нагрузке может потребоваться увеличение этого значения. - -m <max_length>
-
Задает максимально допустимую длину строки данных в байтах. Значение по умолчанию —
32768. Следует использовать, если пользовательские данные содержат очень длинные строки (или если возникает ошибкаline too long). Не рекомендуется использовать в других случаях, так как это приводит к увеличению потребления ресурсов. Допустимый диапазон — от 32 КБ до 256 МБ. Для Windows верхний предел составляет 1 МБ.ПРИМЕЧАНИЕПроблемы с памятью могут возникнуть, если задать большое значение для максимальной длины строки и запустить большое количество одновременных подключений
gpfdist. Например, установка этого параметра в максимальное значение 256 МБ при 96 одновременных процессахgpfdistтребует приблизительно 24 ГБ памяти ((96 + 1) x 256). - -s
-
Включает упрощенное логирование. Когда этот параметр указан, в лог-файл
gpfdistзаписываются только сообщения уровняWARNи выше. Сообщения уровняINFOне записываются. Если параметр не указан, все сообщенияgpfdistпишутся в лог-файл.Вы можете использовать этот параметр, чтобы уменьшить объем записываемой информации.
- -S
-
Открывает файл для синхронного ввода-вывода с флагом
O_SYNC. Любые записи блокируютgpfdistдо тех пор, пока данные не будут записаны физически. - -w <time>
-
Устанавливает количество секунд, которое Greengage DB ждет перед закрытием целевого файла (например, именованного канала). Значение по умолчанию —
0(без задержки). Максимум —7200секунд (2 часа).Для кластера с несколькими сегментами может возникнуть задержка между сегментами при записи данных в один файл. Укажите время ожидания, чтобы гарантировать полную запись всех данных.
- --ssl <certificate_path>
-
Включает SSL-шифрование данных, передаваемых
gpfdist. После запускаgpfdistс параметром--ssl certificate_pathединственный способ загрузить данные с этого файлового сервера — использовать протоколgpfdists://.Каталог, указанный в
certificate_path, должен содержать следующие файлы:-
Файл сертификата сервера (server.crt).
-
Файл закрытого ключа сервера (server.key).
-
Доверенные центры сертификации (root.crt).
Корневой каталог (/) нельзя указывать в качестве
certificate_path.
Более подробную информацию о создании внешних таблиц с помощью протокола GPFDISTS можно получить в разделе Создание внешних таблиц с помощью GPFDIST / GPFDISTS.
-
- --compress
-
Включает сжатие данных при передаче. При указании этого параметра
gpfdistиспользует алгоритм сжатия Zstandard (zstd). На платформах Windows этот параметр недоступен. - --multi_thread <num_threads>
-
Задает максимальное количество потоков, которое
gpfdistиспользует для параллельной передачи данных. При указании этого параметраgpfdistавтоматически выполняет параллельное сжатие данных. Максимальное количество потоков —256. На платформах Windows этот параметр недоступен. - -I <input_transformation_name>
-
Устанавливает одну из входных трансформаций, описанных в файле конфигурации трансформации (
-c), в качестве трансформации по умолчанию. Выбранная трансформация применяется ко всем записываемым файлам. Не используется, если трансформация указана на уровне таблицы. По умолчанию трансформация не применяется.Более подробную информацию можно получить в разделе Загрузка с помощью gpfdist.
- -O <output_transformation_name>
-
Устанавливает одну из выходных трансформаций, описанных в файле конфигурации трансформации (
-c), в качестве трансформации по умолчанию. Выбранная трансформация применяется ко всем записываемым файлам. Не используется, если трансформация указана на уровне таблицы. По умолчанию трансформация не применяется.Более подробную информацию можно получить в разделе Загрузка с помощью gpfdist.
- -c <config.yaml>
-
Определяет правила
gpfdistдля выбора трансформации данных при загрузке или выгрузке. Файл конфигурацииgpfdistдолжен быть в формате YAML 1.1.В файле конфигурации трансформации может содержаться описание нескольких трансформаций; выбрать трансформацию по умолчанию можно с помощью опций
gpfdist-Iи-O. Опция-cнедоступна для операционных систем семейства Windows.Более подробную информацию можно получить в разделе Файл конфигурации трансформации.
- -v
-
Включает подробный вывод с сообщениями о ходе выполнения и статусе.
- -V
-
Включает максимально подробный вывод со всеми сообщениями, генерируемыми утилитой.
- -?
-
Выводит справочную информацию.
- --version
-
Отображает версию утилиты.
Примечания
Параметр конфигурации сервера verify_gpfdists_cert определяет, включена ли проверка SSL-сертификата при взаимодействии Greengage DB с утилитой gpfdist для чтения или записи внешних данных.
Вы можете установить значение в false, чтобы отключить проверку при тестировании внешних таблиц Greengage DB с gpfdist.
Если значение false, игнорируются следующие SSL-проверки:
-
Самоподписанный SSL-сертификат
gpfdistне считается доверенным для Greengage DB. -
Имя хоста в SSL-сертификате не совпадает с именем хоста, на котором запущен
gpfdist.
Отключение проверки SSL-сертификата создает риск безопасности, так как SSL-сертификат gpfdists не проверяется.
Вы можете задать параметр конфигурации сервера gpfdist_retry_timeout, чтобы указать время ожидания Greengage DB перед возвратом ошибки, если сервер gpfdist не отвечает при попытке записи данных.
Значение по умолчанию — 300 секунд.
Если gpfdist зависает без активности чтения или записи, можно настроить генерацию дампа ядра при следующем зависании для помощи в отладке.
Для этого задайте в переменной среды GPFDIST_WATCHDOG_TIMER количество секунд бездействия, после которого процесс gpfdist будет принудительно завершен.
Когда переменная установлена и gpfdist зависает, утилита останавливается по истечении указанного времени, создает дамп ядра и записывает информацию в лог-файл.
Пример установки переменной среды в Linux, чтобы gpfdist завершался после 300 секунд бездействия:
$ export GPFDIST_WATCHDOG_TIMER=300
При включенном сжатии gpfdist передает больший объем данных, сохраняя низкую нагрузку на сеть.
Однако сжатие требует значительных ресурсов процессора и может снизить скорость передачи.
Использование многопоточности уменьшает общее время сжатия, что обеспечивает более быструю передачу данных при сохранении низкой сетевой нагрузки и высокой скорости.