Привет, Я DocuDroid!
Оценка ИИ поиска
Спасибо за оценку нашего ИИ поиска!
Мы будем признательны, если вы поделитесь своими впечатлениями, чтобы мы могли улучшить наш ИИ поиск для вас и других читателей.
GitHub

Настройка коннекторов PXF Hadoop

Anton Monakov

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

  1. Подключитесь к мастер-хосту Greengage DB как gpadmin.

  2. Выберите, будете ли вы использовать конфигурацию PXF-сервера по умолчанию или создадите новую. В данном примере создается новая конфигурация сервера Hadoop с именем hadoop, чьи конфигурационные файлы располагаются в каталоге $PXF_BASE/servers/hadoop. Создайте каталог конфигурации сервера и переключитесь на него:

    $ mkdir $PXF_BASE/servers/hadoop
    $ cd $PXF_BASE/servers/hadoop
  3. 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 .
  4. Если вы планируете использовать PXF-коннектор Hive для доступа к данным таблицы Hive, аналогично скопируйте конфигурацию Hive на хост мастера Greengage DB, например:

    $ scp hiveuser@hivehost:/etc/hive/conf/hive-site.xml .
  5. Если вы планируете использовать PXF-коннектор HBase для доступа к данным таблицы HBase, аналогично скопируйте конфигурацию HBase на хост мастера Greengage DB, например:

    $ scp hbaseuser@hbasehost:/etc/hbase/conf/hbase-site.xml .
  6. Синхронизируйте конфигурацию PXF с кластером Greengage DB:

    $ pxf cluster sync
  7. По умолчанию PXF пытается получить доступ к HDFS, Hive и HBase, используя идентификатор учетной записи пользователя Greengage DB, который входит в систему Greengage DB. Для поддержки этой функциональности необходимо настроить параметры проксирования для Hadoop, Hive и HBase. Более подробную информацию см. в разделе Конфигурирование пользователей Hadoop, имперсонации и проксирования.

  8. Предоставьте разрешение на чтение файлам и каталогам 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

Не требуется, это конфигурация по умолчанию

Укажите пользователя gpadmin в качестве проксирующего пользователя Hadoop, как описано в разделе Конфигурирование проксирования Hadoop

Доступ к 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 с именем <custom>, как описано в разделе Конфигурирование пользователей Hadoop

Укажите пользователя <custom> в качестве проксирующего пользователя Hadoop, как описано в разделе Конфигурирование проксирования 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, и укажите пользователя <custom> в качестве пользователя Hadoop, как описано в разделе Конфигурирование пользователей Hadoop

Не требуется

Конфигурирование пользователей Hadoop

PXF получает доступ к сервисам Hadoop от имени конечных пользователей Greengage DB. Вы можете сконфигурировать PXF для использования другого пользователя отдельно для каждого сервера.

  1. Подключитесь к мастер-хосту Greengage DB как gpadmin.

  2. Выберите имя конфигурации PXF-сервера, которую требуется изменить.

  3. Перейдите в каталог конфигурации сервера ($PXF_BASE/servers). Например, в случае сервера с именем hadoop:

    $ cd $PXF_BASE/servers/hadoop
  4. Если в каталоге конфигурации сервера отсутствует файл pxf-site.xml, скопируйте в каталог файл шаблона, например:

    $ cp $PXF_HOME/templates/pxf-site.xml .
  5. Откройте файл 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.

  6. Сохраните и закройте файл pxf-site.xml.

  7. Выполните команду pxf cluster sync для синхронизации конфигурации PXF-сервера Hadoop с кластером Greengage DB:

    $ pxf cluster sync

Конфигурирование имперсонации пользователя PXF

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

  1. Перейдите в каталог конфигурации сервера. Например, в случае сервера с именем hadoop:

    $ cd $PXF_BASE/servers/hadoop
  2. Если в каталоге конфигурации сервера отсутствует файл pxf-site.xml, скопируйте в каталог файл шаблона, например:

    $ cp $PXF_HOME/templates/pxf-site.xml .
  3. Откройте файл 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>
  4. Если имперсонация включена, а ограниченное делегирование Kerberos отключено (состояние по умолчанию), сконфигурируйте проксирование Hadoop, как описано в разделе Конфигурирование проксирования Hadoop. Если вы планируете использовать Hive или HBase, также настройте для них имперсонацию, как описано в разделах Имперсонация пользователей в Hive и Имперсонация пользователей в HBase.

  5. Сохраните и закройте файл pxf-site.xml.

  6. Выполните команду 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.*.

  1. Подключитесь к кластеру Hadoop и откройте конфигурационный файл core-site.xml в текстовом редакторе:

    $ vi core-site.xml
  2. В свойстве 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>
  3. В свойстве hadoop.proxyuser.<username>.groups укажите список групп HDFS, которые PXF может имперсонировать от имени пользователя Hadoop <username>. В списке должны быть перечислены только те группы, которым требуется доступ к данным HDFS через PXF, например:

    <property>
        <name>hadoop.proxyuser.hdfsuser2.groups</name>
        <value>group1,group2</value>
    </property>
  4. Перезапустите кластер Hadoop, чтобы применить изменения в файле core-site.xml.

  5. Скопируйте обновленный файл 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