Настройка коннекторов PXF Hadoop
PXF совместим с типичными дистрибутивами Apache Hadoop и поставляется с предустановленными коннекторами HDFS, Hive и HBase. Эти коннекторы используются для доступа к данным различного формата из этих дистрибутивов Hadoop.
Перед работой с данными Hadoop с помощью PXF убедитесь, что выполнены следующие предварительные требования:
-
PXF установлен, настроен и работает на каждом хосте Greengage DB.
-
Настроены коннекторы Hadoop PXF, которые планируется использовать. Перед настройкой коннекторов убедитесь, что вы можете копировать файлы с хостов в кластере Hadoop на мастер-хост Greengage DB.
-
Если включена имперсонация пользователей (по умолчанию), права чтения или записи на требуемые файлы и каталоги HDFS предоставлены всем ролям Greengage DB, которые будут к ним обращаться. Если имперсонация пользователей отключена, это разрешение должно быть предоставлено пользователю
gpadmin. -
Время между хостами Greengage DB и внешними системами Hadoop синхронизировано.
Форматы данных и профили
Коннекторы PXF Hadoop имеют встроенные профили с поддержкой следующих форматов данных:
-
Text
-
CSV
-
Avro
-
JSON
-
ORC
-
Parquet
-
RCFile
-
SequenceFile
-
AvroSequenceFile
Для чтения и записи данных в поддерживаемых форматах предоставляются следующие профили.
| Источник данных | Формат данных | Имя профиля | Устаревшее имя профиля | Поддерживаемые операции |
|---|---|---|---|---|
HDFS |
Однострочные текстовые значения с разделителями |
hdfs:text |
Н/Д |
Чтение, запись |
HDFS |
Однострочные разделенные запятыми текстовые значения |
hdfs:csv |
Н/Д |
Чтение, запись |
HDFS |
Однострочные текстовые значения фиксированной ширины |
hdfs:fixedwidth |
Н/Д |
Чтение, запись |
HDFS |
Текстовые значения с разделителями, заключенными в кавычки |
hdfs:text:multi |
Н/Д |
Чтение |
HDFS |
Avro |
hdfs:avro |
Н/Д |
Чтение, запись |
HDFS |
JSON |
hdfs:json |
Н/Д |
Чтение |
HDFS |
ORC |
hdfs:orc |
Н/Д |
Чтение, запись |
HDFS |
Parquet |
hdfs:parquet |
Н/Д |
Чтение, запись |
HDFS |
AvroSequenceFile |
hdfs:AvroSequenceFile |
Н/Д |
Чтение, запись |
HDFS |
SequenceFile |
hdfs:SequenceFile |
Н/Д |
Чтение, запись |
Hive |
Данные, хранимые как TextFile |
hive, hive:text |
Hive, HiveText |
Чтение |
Hive |
Данные, хранимые как SequenceFile |
hive |
Hive |
Чтение |
Hive |
Данные, хранимые как RCFile |
hive, hive:rc |
Hive, HiveRC |
Чтение |
Hive |
Данные, хранимые как ORC |
hive, hive:orc |
Hive, HiveORC, HiveVectorizedORC |
Чтение |
Hive |
Данные, хранимые как Parquet |
hive |
Hive |
Чтение |
Hive |
Данные, хранимые как Avro |
hive |
Hive |
Чтение |
HBase |
Любой |
hbase |
HBase |
Чтение |
Выбор профиля
PXF предоставляет несколько профилей для доступа к текстовым и Parquet-данным, хранящимся в Hadoop. При выборе подходящего профиля учитывайте следующее:
-
Выбирайте профиль
hive, если выполнено одно из следующих условий:-
Данные находятся в таблице Hive, и вы не знаете тип файла таблицы.
-
Данные находятся в партиционированной таблице Hive.
-
-
Выбирайте профили
hdfs:textилиhdfs:csv, если файл является текстовым и его местоположение в файловой системе HDFS известно. -
При доступе к данным формата ORC:
-
Выбирайте профиль
hdfs:orc, если файл имеет формат ORC, вы знаете его местоположение в файловой системе HDFS, и файл не управляется Hive или вы не хотите использовать Hive Metastore. -
Выбирайте профиль
hive:orc, если таблица имеет формат ORC и управляется Hive, а данные партиционированы или содержат сложные типы.
-
-
Выбирайте профиль
hdfs:parquet, если файл имеет формат Parquet, вы знаете его местоположение в файловой системе HDFS и хотите воспользоваться расширенной поддержкой pushdown-фильтров для дополнительных типов данных и операторов.
Указание профиля
Имя профиля указывается при использовании протокола PXF в команде CREATE EXTERNAL TABLE для создания внешней таблицы, которая ссылается на файл или каталог Hadoop, таблицу HBase или таблицу Hive.
Например, следующая команда создает внешнюю таблицу orders, которая использует сервер hadoop, и указывает профиль hdfs:csv для доступа к файлу HDFS /tmp/orders.csv:
CREATE EXTERNAL TABLE orders(
id INTEGER,
name VARCHAR,
price NUMERIC
)
LOCATION ('pxf://tmp/orders.csv?SERVER=hadoop&PROFILE=hdfs:csv')
FORMAT 'CSV';
Конфигурирование коннекторов Hadoop
-
Подключитесь к мастер-хосту Greengage DB как
gpadmin. -
Выберите, будете ли вы использовать конфигурацию PXF-сервера по умолчанию или создадите новую. В данном примере создается новая конфигурация сервера Hadoop с именем
hadoop, чьи конфигурационные файлы располагаются в каталоге $PXF_BASE/servers/hadoop. Создайте каталог конфигурации сервера и переключитесь на него:$ mkdir $PXF_BASE/servers/hadoop $ cd $PXF_BASE/servers/hadoop -
PXF требуется информация из файлов конфигурации Hadoop. Скопируйте файлы конфигурации core-site.xml, hdfs-site.xml, mapred-site.xml и yarn-site.xml с хоста NameNode кластера Hadoop на текущий хост. Пути к файлам могут отличаться в зависимости от используемого дистрибутива Hadoop. Например, в данных командах для копирования файлов используется утилита
scp:$ scp hdfsuser@namenode:/etc/hadoop/conf/core-site.xml . $ scp hdfsuser@namenode:/etc/hadoop/conf/hdfs-site.xml . $ scp hdfsuser@namenode:/etc/hadoop/conf/mapred-site.xml . $ scp hdfsuser@namenode:/etc/hadoop/conf/yarn-site.xml . -
Если вы планируете использовать PXF-коннектор Hive для доступа к данным таблицы Hive, аналогично скопируйте конфигурацию Hive на хост мастера Greengage DB, например:
$ scp hiveuser@hivehost:/etc/hive/conf/hive-site.xml . -
Если вы планируете использовать PXF-коннектор HBase для доступа к данным таблицы HBase, аналогично скопируйте конфигурацию HBase на хост мастера Greengage DB, например:
$ scp hbaseuser@hbasehost:/etc/hbase/conf/hbase-site.xml . -
Синхронизируйте конфигурацию PXF с кластером Greengage DB:
$ pxf cluster sync -
По умолчанию PXF пытается получить доступ к HDFS, Hive и HBase, используя идентификатор учетной записи пользователя Greengage DB, который входит в систему Greengage DB. Для поддержки этой функциональности необходимо настроить параметры проксирования для Hadoop, Hive и HBase. Более подробную информацию см. в разделе Конфигурирование пользователей Hadoop, имперсонации и проксирования.
-
Предоставьте разрешение на чтение файлам и каталогам HDFS, к которым будет осуществляться доступ через внешние таблицы Greengage DB. Если включена имперсонация пользователя (по умолчанию), предоставьте это разрешение каждой роли Greengage DB, которая будет использовать внешние таблицы, ссылающиеся на файлы HDFS. Если имперсонация пользователя отключена, предоставьте это разрешение пользователю
gpadmin.
Конфигурирование пользователей Hadoop, имперсонации и проксирования
PXF получает доступ к сервисам Hadoop от имени конечных пользователей Greengage DB и использует только идентификатор пользователя при доступе к сервисам Hadoop.
Это означает, что если пользователь входит в систему Greengage DB как пользователь jane, а затем выполняет команду SET ROLE или SET SESSION AUTHORIZATION для использования другой учетной записи, все запросы PXF по-прежнему используют идентификатор jane для доступа к сервисам Hadoop.
Имперсонация — это способ представления идентификатора конечного пользователя Greengage DB удаленной системе. В PXF это достигается путем настройки прокси-пользователя Hadoop. Если сервис Hadoop защищен с помощью Kerberos, имперсонация может использоваться с ограниченным делегированием Kerberos.
Когда имперсонация пользователя активирована (по умолчанию), PXF получает доступ к незащищенным сервисам Hadoop с использованием идентификатора учетной записи пользователя Greengage DB, который входит в систему Greengage DB и выполняет операцию, использующую коннектор PXF. Вы должны явно настроить каждый источник данных Hadoop (HDFS, Hive, HBase), чтобы разрешить использование PXF в качестве прокси для имитации определенных пользователей или групп Hadoop.
Когда имперсонация пользователя отключена, PXF выполняет все запросы к сервисам Hadoop от имени владельца процесса PXF (обычно gpadmin) или пользователя Hadoop, которого вы указываете.
Такое поведение не дает возможности контролировать доступ к сервисам Hadoop для разных пользователей Greengage DB.
Оно требует доступа пользователя ко всем файлам и каталогам в HDFS и ко всем таблицам в Hive и HBase, на которые ссылаются определения внешних таблиц PXF.
Имперсонация пользователей Hadoop и PXF для сервера настраивается с помощью конфигурационного файла pxf-site.xml этого сервера. Более подробную информацию о настройках, содержащихся в этом файле, можно получить в статье конфигурационный файл pxf-site.xml.
Сценарии конфигурации
Конфигурация пользователей, имперсонации и проксирования для Hadoop зависит от того, как используется PXF для доступа к Hadoop и защищен ли кластер Hadoop с помощью Kerberos.
Следующие сценарии описывают варианты использования и необходимую конфигурацию при использовании PXF для доступа к незащищенному Hadoop.
Доступ к Hadoop от имени пользователя Greengage DB, проксированного gpadmin
Данная конфигурация является конфигурацией по умолчанию.
Пользователь gpadmin проксирует запросы Greengage DB от имени пользователей Greengage DB.
Фактический пользователь в Hadoop — это пользователь Greengage DB, который выполняет запрос.
В данной таблице приведены настройки pxf.service.user.impersonation и pxf.service.user.name, а также требуемая конфигурация PXF и Hadoop.
| Имперсонация | Сервисный пользователь | Конфигурация PXF | Конфигурация Hadoop |
|---|---|---|---|
true |
gpadmin |
Не требуется, это конфигурация по умолчанию |
Укажите пользователя |
Доступ к Hadoop от имени пользователя Greengage DB, проксированного произвольным пользователем
В данной конфигурации PXF обращается к Hadoop от имени пользователя Greengage DB, проксированного произвольным (<custom>) пользователем.
Запрос, выполняемый пользователем Greengage DB, отображается на стороне Hadoop как исходящий от пользователя Greengage DB.
Эта конфигурация может быть желательной, если в Hadoop уже настроен прокси-пользователь или необходимо проксировать запросы Greengage DB через пользователя, отличного от gpadmin.
В данной таблице приведены настройки pxf.service.user.impersonation и pxf.service.user.name, а также требуемая конфигурация PXF и Hadoop.
| Имперсонация | Сервисный пользователь | Конфигурация PXF | Конфигурация Hadoop |
|---|---|---|---|
true |
<custom> |
Сконфигурируйте пользователя Hadoop с именем |
Укажите пользователя |
Доступ к Hadoop от имени пользователя gpadmin
В данной конфигурации PXF обращается к Hadoop от имени пользователя gpadmin.
Запрос, выполняемый пользователем Greengage DB, отображается на стороне Hadoop как исходящий от пользователя gpadmin.
В данной таблице приведены настройки pxf.service.user.impersonation и pxf.service.user.name, а также требуемая конфигурация PXF и Hadoop.
| Имперсонация | Сервисный пользователь | Конфигурация PXF | Конфигурация Hadoop |
|---|---|---|---|
false |
gpadmin |
Отключите имперсонацию, как описано в разделе Конфигурирование имперсонации пользователя PXF |
Не требуется |
Доступ к Hadoop от имени произвольного пользователя
В данной конфигурации PXF обращается к Hadoop от имени произвольного (<custom>) пользователя.
Запрос, выполняемый пользователем Greengage DB, отображается на стороне Hadoop как исходящий от пользователя <custom>.
В данной таблице приведены настройки pxf.service.user.impersonation и pxf.service.user.name, а также требуемая конфигурация PXF и Hadoop.
| Имперсонация | Сервисный пользователь | Конфигурация PXF | Конфигурация Hadoop |
|---|---|---|---|
false |
<custom> |
Отключите имперсонацию, как описано в разделе Конфигурирование имперсонации пользователя PXF, и укажите пользователя |
Не требуется |
Конфигурирование пользователей Hadoop
PXF получает доступ к сервисам Hadoop от имени конечных пользователей Greengage DB. Вы можете сконфигурировать PXF для использования другого пользователя отдельно для каждого сервера.
-
Подключитесь к мастер-хосту Greengage DB как
gpadmin. -
Выберите имя конфигурации PXF-сервера, которую требуется изменить.
-
Перейдите в каталог конфигурации сервера ($PXF_BASE/servers). Например, в случае сервера с именем
hadoop:$ cd $PXF_BASE/servers/hadoop -
Если в каталоге конфигурации сервера отсутствует файл pxf-site.xml, скопируйте в каталог файл шаблона, например:
$ cp $PXF_HOME/templates/pxf-site.xml . -
Откройте файл pxf-site.xml в текстовом редакторе и сконфигурируйте имя пользователя Hadoop.
$ vi pxf-site.xml-
Если имперсонация отключена, указанное имя идентифицирует пользователя Hadoop, с помощью которого PXF получает доступ к Hadoop.
-
Если имперсонация включена в незащищенном кластере Hadoop, указанное имя идентифицирует прокси-пользователя Hadoop для PXF.
Например, для доступа к Hadoop от имени пользователя
hdfsuser1раскомментируйте свойство и сконфигурируйте его следующим образом:<property> <name>pxf.service.user.name</name> <value>hdfsuser1</value> </property>Пользователь
hdfsuser1должен существовать в кластере Hadoop. -
-
Сохраните и закройте файл pxf-site.xml.
-
Выполните команду
pxf cluster syncдля синхронизации конфигурации PXF-сервера Hadoop с кластером Greengage DB:$ pxf cluster sync
Конфигурирование имперсонации пользователя PXF
По умолчанию имперсонация пользователей включена для серверов Hadoop. Вы можете настроить ее отдельно для каждого сервера. Что бы включить или отключить имперсонацию для конфигурации сервера:
-
Перейдите в каталог конфигурации сервера. Например, в случае сервера с именем
hadoop:$ cd $PXF_BASE/servers/hadoop -
Если в каталоге конфигурации сервера отсутствует файл pxf-site.xml, скопируйте в каталог файл шаблона, например:
$ cp $PXF_HOME/templates/pxf-site.xml . -
Откройте файл pxf-site.xml в текстовом редакторе и измените настройки имперсонации пользователя:
$ vi pxf-site.xml-
Чтобы отключить имперсонацию, установите свойству
pxf.service.user.impersonationзначениеfalse:<property> <name>pxf.service.user.impersonation</name> <value>false</value> </property> -
Чтобы включить имперсонацию, установите свойству
pxf.service.user.impersonationзначениеtrue:<property> <name>pxf.service.user.impersonation</name> <value>true</value> </property>
-
-
Если имперсонация включена, а ограниченное делегирование Kerberos отключено (состояние по умолчанию), сконфигурируйте проксирование Hadoop, как описано в разделе Конфигурирование проксирования Hadoop. Если вы планируете использовать Hive или HBase, также настройте для них имперсонацию, как описано в разделах Имперсонация пользователей в Hive и Имперсонация пользователей в HBase.
-
Сохраните и закройте файл pxf-site.xml.
-
Выполните команду
pxf cluster syncдля синхронизации конфигурации PXF-сервера Hadoop с кластером Greengage DB:$ pxf cluster sync
Имперсонация пользователей в Hive
Коннектор PXF Hive использует Hive MetaStore для определения местоположения таблиц Hive в HDFS, а затем обращается к соответствующим HDFS-файлам напрямую. Дополнительной конфигурации имперсонации для Hive не требуется: конфигурация проксирования Hadoop, указанная в файле core-site.xml, также применяется и к таблицам Hive.
Имперсонация пользователей в HBase
Чтобы имперсонация пользователя работала с HBase, необходимо активировать сопроцессор AccessController в конфигурации HBase и перезапустить кластер. Более подробную информацию о необходимых настройках конфигурационного файла hbase-site.xml см. в статье Server-side Configuration for Simple User Access Operation справочного руководства Apache HBase.
Конфигурирование проксирования Hadoop
Если имперсонация пользователя PXF включена, а ограниченное делегирование Kerberos отключено (состояние по умолчанию), требуется настроить Hadoop, чтобы разрешить PXF проксировать пользователей Greengage DB.
Конфигурирование подразумевает изменение определенных свойств hadoop.proxyuser.*.
-
Подключитесь к кластеру Hadoop и откройте конфигурационный файл core-site.xml в текстовом редакторе:
$ vi core-site.xml -
В свойстве
hadoop.proxyuser.<username>.hostsукажите через запятую список хостов PXF, с которых разрешены прокси-запросы. Замените<username>именем прокси-пользователя Hadoop для PXF — значением, присвоенным свойствуpxf.service.user.name, как описано в разделе Конфигурирование пользователей Hadoop. Если в Hadoop используется аутентификация Kerberos, то имя прокси-пользователя — первая часть принципала Kerberos. Если свойствоpxf.service.user.nameне установлено явно, в качестве прокси-пользователя выбирается имя пользователя операционной системы, запустившего PXF. Например, в случае прокси-пользователя PXF с именемhdfsuser2:<property> <name>hadoop.proxyuser.hdfsuser2.hosts</name> <value>pxfhost1,pxfhost2,pxfhost3</value> </property> -
В свойстве
hadoop.proxyuser.<username>.groupsукажите список групп HDFS, которые PXF может имперсонировать от имени пользователя Hadoop<username>. В списке должны быть перечислены только те группы, которым требуется доступ к данным HDFS через PXF, например:<property> <name>hadoop.proxyuser.hdfsuser2.groups</name> <value>group1,group2</value> </property> -
Перезапустите кластер Hadoop, чтобы применить изменения в файле core-site.xml.
-
Скопируйте обновленный файл core-site.xml в каталог конфигурации PXF-сервера Hadoop $PXF_BASE/servers/<server_name> на мастер-хосте Greengage DB, а затем синхронизируйте изменения с кластером Greengage DB:
$ pxf cluster sync
Обновление конфигурации Hadoop
После обновления конфигурации Hadoop, Hive или HBase при работающем сервисе PXF требуется скопировать обновленные конфигурационные файлы в каталог $PXF_BASE/servers/<server_name>, а затем синхронизировать изменения с кластером Greengage DB, например:
$ cd $PXF_BASE/servers/<server_name>
$ scp hiveuser@hivehost:/etc/hive/conf/hive-site.xml .
$ pxf cluster sync