Настройка PXF-сервера
Чтение или запись данных во внешнее хранилище данных выполняется через PXF-коннектор. Для доступа к внешнему хранилищу данных необходимо указать местоположение сервера, клиентские учетные данные и другие свойства, специфичные для хранилища данных.
PXF-сервер — это специфичная для коннектора именованная конфигурация, которая обеспечивает доступ к определенному внешнему хранилищу данных. Например, определение сервера PXF JDBC может включать настройки класса драйвера JDBC, URL, имя пользователя, пароль и другие свойства, специфичные для соединения и сессии.
Для каждого используемого внешнего хранилища данных требуется создать отдельное определение сервера. Например, чтобы получить доступ к двум кластерам Hadoop, вам необходимо создать конфигурацию PXF Hadoop-сервера для каждого кластера. Чтобы получить доступ к базам данных Oracle и MySQL, необходимо создать одну или несколько конфигураций PXF JDBC для каждой базы данных.
Определение сервера может включать настройки по умолчанию для учетных данных пользователя и других свойств внешнего хранилища данных. Вы можете разрешить пользователям Greengage DB получать доступ к внешнему хранилищу данных с использованием настроек по умолчанию или настроить доступ и другие свойства на уровне каждого пользователя. Это позволяет с помощью одного определения PXF-сервера предоставлять доступ к внешнему хранилищу пользователям Greengage DB с разными учетными данными.
Файлы шаблонов сервера
PXF предоставляет шаблонный файл конфигурации каждого коннектора, содержащий типичный набор свойств, которые необходимо настроить для его использования. В каталоге $PXF_HOME/templates/ хранятся следующие файлы шаблонов конфигурации сервера:
-
adl-site.xml — предоставляет конфигурацию для Azure Data Lake Storage Gen2 с использованием коннектора ADL.
-
core-site.xml — предоставляет основные настройки Hadoop, часто используемые в качестве основы для других коннекторов, обращающихся к HDFS.
-
gs-site.xml — предоставляет конфигурацию для Google Cloud Storage (GCS).
-
hbase-site.xml — предоставляет конфигурацию для Apache HBase.
-
hdfs-site.xml — определяет параметры подключения для доступа к кластерам Hadoop Distributed File System (HDFS).
-
hive-site.xml — предоставляет конфигурацию для Hive Metastore.
-
jdbc-site.xml — позволяет настроить подключение JDBC к реляционным базам данных.
-
mapred-site.xml — предоставляет конфигурацию для заданий MapReduce.
-
minio-site.xml — предоставляет конфигурацию для объектного хранилища MinIO, совместимого с S3.
-
pxf-site.xml — содержит специфичные настройки PXF, например уровни логирования и свойства сервера.
-
s3-site.xml — предоставляет конфигурацию для Amazon Simple Storage Service (S3).
-
wasbs-site.xml — предоставляет конфигурацию для Azure Blob Storage с использованием коннектора WASB.
-
yarn-site.xml — предоставляет конфигурацию для Apache YARN, используемого некоторыми коннекторами PXF для управления ресурсами.
Шаблонные файлы для коннекторов Hadoop не предназначены для изменения и использования в качестве конфигурации, поскольку они предоставляют только пример необходимой информации. Вместо изменения шаблонов Hadoop скопируйте несколько файлов *-site.xml из кластера Hadoop в вашу конфигурацию PXF Hadoop-сервера.
Конфигурирование сервера
Для настройки коннектора PXF к внешнему хранилищу данных требуется добавить именованную конфигурацию PXF-сервера для соответствующего коннектора. Информация о конфигурации хранится в одном или нескольких файлах <connector>-site.xml, расположенных в каталоге $PXF_BASE/servers/<server_name>/. Имя каталога в $PXF_BASE/servers/ должно соответствовать настроенному имени PXF-сервера.
В PXF также используется специальный сервер с именем default.
Во время установки PXF создается пустой каталог $PXF_BASE/servers/default/, который идентифицирует конфигурацию сервера по умолчанию.
Вы можете настроить и назначить конфигурацию сервера по умолчанию любому внешнему источнику данных, например кластеру Hadoop или базе данных MySQL, к которой часто обращаетесь.
PXF автоматически использует конфигурацию сервера default, если опущена опция SERVER=<server_name> в выражении LOCATION команды CREATE EXTERNAL TABLE.
Настройка сервера включает в себя следующие общие шаги:
-
Выберите, будете ли вы настраивать PXF-сервер по умолчанию (
default) или создадите новый. -
Создайте каталог $PXF_BASE/servers/<server_name>.
-
Скопируйте шаблоны или другие файлы конфигурации в созданный каталог сервера.
-
Заполните соответствующие значения свойств в шаблоне файла.
-
Добавьте любые дополнительные свойства и значения конфигурации, необходимые для вашей среды.
-
Настройте одного или нескольких пользователей для конфигурации сервера, как описано в разделе Настройка пользователя PXF.
-
Синхронизируйте конфигурацию сервера и пользователя с кластером Greengage DB, выполнив команду
pxf cluster sync. Полное описание доступных командpxf clusterприведено в статье Обзор команд pxf cluster.
После настройки PXF-сервер становится доступным пользователям Greengage DB, которым требуется доступ к соответствующему хранилищу данных. При создании внешней таблицы, которая обращается к внешнему хранилищу данных, пользователю необходимо указать только имя сервера. PXF получает расположение внешнего источника данных и учетные данные доступа из файлов конфигурации сервера и пользователя, хранящихся в каталоге конфигурации сервера. Более подробную информацию об использовании созданной конфигурации можно получить в разделе Использование конфигурации сервера с внешними таблицами.
Конфигурационный файл pxf-site.xml
PXF включает шаблонный файл pxf-site.xml, содержащий специфичные для PXF параметры конфигурации. Вы можете использовать этот файл, чтобы настроить следующее:
-
Настройки Kerberos или имперсонации пользователя для конфигураций серверов.
-
Базовый каталог для доступа к файлам.
-
Действие, которое выполняется при обнаружении условия переполнения во время записи числовых данных ORC или Parquet.
Настройки Kerberos и имперсонации пользователя, указанные в файле pxf-site.xml, применяются только к конфигурациям серверов Hadoop и JDBC и не применяются к конфигурациям серверов файловой системы или объектного хранилища.
Свойства в файле pxf-site.xml для PXF-сервера необходимо настроить, если выполнено любое из следующих условий:
-
Удаленная система Hadoop использует аутентификацию Kerberos.
-
Требуется активировать или деактивировать имперсонацию пользователя в удаленной системе Hadoop или внешней базе данных.
-
Требуется активировать или деактивировать ограниченное делегирование Kerberos для PXF-сервера Hadoop.
-
Вы получаете доступ к сетевой файловой системе с помощью конфигурации сервера.
-
Вы получаете доступ к удаленной файловой системе Hadoop или объектного хранилища с помощью конфигурации сервера и хотите разрешить пользователю доступ только к определенному каталогу и подкаталогам.
В файле pxf-site.xml перечислены следующие свойства.
| Свойство | Описание | Значение по умолчанию |
|---|---|---|
pxf.service.kerberos.principal |
Имя принципала Kerberos |
gpadmin/_HOST@EXAMPLE.COM |
pxf.service.kerberos.keytab |
Местоположение keytab-файла Kerberos |
$PXF_BASE/keytabs/pxf.service.keytab |
pxf.service.kerberos.constrained-delegation |
Активирует / деактивирует ограниченное делегирование Kerberos. Это свойство применимо только к конфигурациям серверов Hadoop, но не к конфигурациям JDBC |
false |
pxf.service.kerberos.ticket-renew-thread-enabled |
Указывает, должен ли PXF использовать фоновый подпроцесс для обновления тикета на предоставление тикетов (Ticket-Granting Ticket, TGT) Kerberos, когда оставшийся срок его действия достигает окна продления |
false |
pxf.service.kerberos.ticket-renew-window |
Минимальный прошедший срок жизни тикета Kerberos, после которого PXF пытается его продлить.
Значение указывается в виде дробного числа в диапазоне от |
0.8 (80%) |
pxf.service.kerberos.ticket-renew-max-backoff-seconds |
Максимальное время (в секундах) между последовательными попытками продления тикета TGT |
300 |
pxf.service.kerberos.ticket-renew-timeout-seconds |
Максимальное время (в секундах), которое может занять продление тикета TGT. Если в течение указанного периода за несколько попыток продления не удается получить новый тикет, попытки продления прекращаются, подпроцесс продления TGT прерывается, а запрос завершается с ошибкой |
3600 |
pxf.service.user.impersonation |
Активирует / деактивирует имперсонацию пользователя при подключении к удаленной системе |
Если свойство не установлено, значение по умолчанию — |
pxf.service.user.name |
Имя пользователя для подключения к удаленной системе. Если свойство не установлено, значением по умолчанию является пользователь операционной системы, запускающий процесс PXF, обычно |
Отсутствует; по умолчанию свойство закомментировано |
pxf.fs.basePath |
Определяет базовый путь или точку общего доступа в удаленной файловой системе. Свойство должно быть установлено, когда конфигурация сервера используется с профилем, получающим доступ к файлам с помощью профиля Вы можете использовать это свойство для ограничения доступа к файлам в определенном удаленном каталоге.
При установке свойства PXF рассматривает путь к файлу, указанный в выражении |
Отсутствует; по умолчанию свойство закомментировано |
pxf.ppd.hive |
Указывает, включен ли pushdown предикатов для запросов к внешним таблицам, использующим профили |
|
pxf.sasl.connection.retries |
Указывает максимальное количество попыток повторения запроса подключения SASL после получения ошибки |
5 |
pxf.orc.write.decimal.overflow |
Указывает, как PXF обрабатывает числовые данные, превышающие максимальную точность в 38 и переполняющиеся при записи в файл ORC.
Допустимы следующие значения: |
round |
pxf.parquet.write.decimal.overflow |
Указывает, как PXF обрабатывает числовые данные, превышающие максимальную точность в 38 и переполняющиеся при записи в файл Parquet.
Допустимы следующие значения: |
round |
pxf.hdfs.fragmenter.sort-by-date |
Указывает, сортирует ли PXF список файлов, полученных из HDFS-совместимых систем, по дате изменения вместо имени файла. Не применяется к серверам PXF JDBC или HBase |
|
Настройка пользователя PXF
Вы можете настроить доступ к внешнему хранилищу данных на уровне сервера и пользователя.
Конфигурация PXF на уровне сервера и пользователя наиболее полезна для серверов JDBC.
Учетные данные и свойства доступа к внешнему хранилищу данных для конкретного пользователя Greengage DB настраиваются в файле конфигурации пользователя <greengage_user_name>-user.xml в каталоге конфигурации сервера PXF, $PXF_BASE/servers/<server_name>/. Конфигурация сервера PXF позволяет настроить любое количество пользователей – от нуля до нескольких.
Свойства, указанные в файле конфигурации пользователя, специфичны для коннектора. Вы можете указать любое свойство конфигурации, поддерживаемое сервером коннектора PXF, в файле конфигурации <greengage_user_name>-user.xml.
Чтобы настроить пользователя PXF, выполните следующие действия:
-
Определите имя пользователя Greengage DB.
-
Определите сервер PXF, для которого вы хотите настроить доступ пользователя.
-
Определите имя и значение каждого свойства, которое вы хотите настроить для пользователя.
-
Создайте или отредактируйте файл $PXF_BASE/servers/<server_name>/<greengage_user_name>-user.xml и добавьте внешний блок
configuration:<configuration> </configuration> -
Добавьте пару "свойство/значение" для каждого требуемого свойства внутри блока
configuration. -
Если вы добавляете конфигурацию пользователя в ранее настроенный сервер PXF, синхронизируйте конфигурацию пользователя с кластером Greengage DB.
Пользователь Greengage DB, который запрашивает или записывает данные во внешнюю таблицу, получает доступ к внешнему хранилищу данных с учетными данными, настроенными для пользователя PXF-сервера. Если для PXF-сервера не настроены специфичные для пользователя учетные данные, пользователь Greengage DB получает доступ к внешнему хранилищу данных с учетными данными по умолчанию, настроенными для PXF-сервера.
Пример
Предположим, вы настроили доступ к базе данных PostgreSQL в конфигурации сервера PXF JDBC с именем pgsrv1.
Чтобы разрешить пользователю Greengage DB с именем bill получить доступ к этой базе данных как пользователю PostgreSQL с именем pguser1 и паролем changeme, создайте файл конфигурации пользователя $PXF_BASE/servers/pgsrv1/bill-user.xml со следующими свойствами:
<configuration>
<property>
<name>jdbc.user</name>
<value>pguser1</value>
</property>
<property>
<name>jdbc.password</name>
<value>changeme</value>
</property>
</configuration>
Для настройки определенного пути поиска и большего размера извлечения при чтении для пользователя bill добавьте следующие свойства в файл конфигурации bill-user.xml:
<property>
<name>jdbc.session.property.search_path</name>
<value>bill_schema</value>
</property>
<property>
<name>jdbc.statement.fetchSize</name>
<value>2000</value>
</property>
Использование конфигурации сервера с внешними таблицами
Чтобы получить доступ к внешнему хранилищу данных, укажите имя сервера с помощью параметра SERVER=<server_name> в выражении LOCATION команды CREATE EXTERNAL TABLE.
Указанное имя сервера определяет каталог, из которого PXF получает конфигурацию и учетные данные для доступа к внешнему хранилищу данных.
Если параметр SERVER=<server_name> не указан, PXF автоматически использует конфигурацию сервера по умолчанию.
Пример
В этом примере используется файл orders.csv, расположенный в бакете customers на хосте S3 storage.example.com и имеющий следующее содержимое:
id,name,price 1,Laptop,999.99 2,Smartphone,499.99 3,Tablet,299.99 4,Monitor,599.99 5,Keyboard,99.99
-
На мастер-хосте создайте конфигурацию сервера для доступа к объектному хранилищу S3. Созданный файл s3-site.xml основан на шаблоне minio-site.xml. Файл располагается в каталоге $PXF_BASE/servers/example-s3/ и имеет следующее содержимое:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <property> <name>fs.s3a.endpoint</name> <value>storage.example.com</value> </property> <property> <name>fs.s3a.access.key</name> <value>ACCESS_KEY</value> </property> <property> <name>fs.s3a.secret.key</name> <value>SECRET_KEY</value> </property> <property> <name>fs.s3a.fast.upload</name> <value>true</value> </property> <property> <name>fs.s3a.path.style.access</name> <value>true</value> </property> </configuration> -
Синхронизируйте конфигурацию между хостами кластера Greengage DB:
$ pxf cluster syncВывод должен выглядеть следующим образом:
Syncing PXF configuration files from coordinator host to standby coordinator host and 2 segment hosts... PXF configs synced successfully on 3 out of 3 hosts
-
Выполните команду
CREATE EXTERNAL TABLE. В выраженииLOCATIONукажите имя и местоположение файла orders.csv, а также следующие параметры:-
PROFILE=s3:csv— профиль PXF, используемый для чтения однострочных данных CSV с разделителями; -
SERVER=example-s3— имя созданной ранее конфигурации сервера; -
SKIP_HEADER_COUNT=1— количество строк заголовка, которые необходимо пропустить.
В выражении
FORMATукажитеCSVв качестве формата данных:CREATE EXTERNAL TABLE orders_s3( id INTEGER, name VARCHAR, price NUMERIC ) LOCATION ('pxf://customers/orders.csv?PROFILE=s3:csv&SERVER=example-s3&SKIP_HEADER_COUNT=1') FORMAT 'CSV'; -
-
Выполните запрос к созданной таблице:
SELECT * FROM orders_s3;Вывод должен выглядеть следующим образом:
id | name | price ----+------------+-------- 1 | Laptop | 999.99 2 | Smartphone | 499.99 3 | Tablet | 299.99 4 | Monitor | 599.99 5 | Keyboard | 99.99