YMatrix поддерживает доступ к данным в HDFS через PXF (Platform Extension Framework). С помощью PXF YMatrix может параллельно читать структурированные и полуструктурированные данные из HDFS, устраняя избыточность и задержки, вызванные миграцией данных, обеспечивая аналитику по принципу «подключил — и сразу используй».
В этом разделе приведены инструкции по использованию двух методов доступа: Прямой доступ к HDFS через PXF и Доступ к HDFS через PXF с Ranger.
Если PXF не установлен, обратитесь к разделу Установка PXF за инструкциями по установке.
В этом разделе описывается, как настроить и использовать PXF в YMatrix для доступа к HDFS.
| Программное обеспечение | Версия |
|---|---|
| YMatrix | MatrixDB 6.2.2+enterprise |
| Hadoop | Hadoop 3.2.4 |
| PXF | pxf-matrixdb4-6.3.0-1.el7.x86_64 |
(1)Создание каталогов в Hadoop (выполняется на мастер-узле Hadoop)
Сначала создайте каталоги в HDFS для хранения файлов данных. Эти каталоги будут использоваться как точки обмена данными между YMatrix и кластером Hadoop.
/ymatrix в корне HDFS. Этот каталог будет содержать все файлы данных, связанные с базой данных. Выполните команду:hdfs dfs -mkdir /ymatrix
/ymatrix создайте подкаталог с именем pxf_examples. Этот подкаталог будет содержать примеры данных для PXF. Выполните команду:hdfs dfs -mkdir /ymatrix/pxf_examples
/ymatrix создан. Используйте команду ls:hdfs dfs -ls /
/ymatrix, чтобы подтвердить создание подкаталога pxf_examples.hdfs dfs -ls /ymatrix/
echo 'Prague,Jan,101,4875.33
Rome,Mar,87,1557.39
Bangalore,May,317,8936.99
Beijing,Jul,411,11600.67' > pxf_hdfs_simple.txt
/ymatrix/pxf_examples в HDFS.hdfs dfs -put pxf_hdfs_simple.txt /ymatrix/pxf_examples/
hdfs dfs -cat /ymatrix/pxf_examples/pxf_hdfs_simple.txt
hdfs dfs -chown, чтобы назначить владельцем файла пользователя mxadmin:hdfs dfs -chown -R mxadmin:mxadmin /ymatrix/pxf_examples/pxf_hdfs_simple.txt
(2)Настройка переменных окружения для пользователя mxadmin (добавить на всех узлах YMatrix)
Чтобы обеспечить эффективное взаимодействие между YMatrix и кластером Hadoop, настройте переменные окружения на всех узлах YMatrix.
.bashrc или другой файл конфигурации окружения на каждом узле YMatrix:export HADOOP_HOME=/opt/modules/hadoop-3.2.4
export HADOOP_CONF_DIR=/opt/modules/hadoop-3.2.4/etc/hadoop
export PXF_CONF=/usr/local/pxf-matrixdb4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
(3)Предоставление пользователю mxadmin доступа к кластеру Hadoop (изменить на всех узлах Hadoop)
Чтобы разрешить пользователю mxadmin доступ к кластеру Hadoop, измените файл конфигурации core-site.xml на всех узлах Hadoop.
core-site.xml и добавьте следующие параметры:<property>
<name>hadoop.proxyuser.mxadmin.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.mxadmin.hosts</name>
<value>*</value>
</property>
(4)Создание каталога single_hdfs (добавить на всех машинах YMatrix)
Создайте новый каталог на мастер-узле YMatrix для хранения конфигурационных файлов кластера Hadoop.
mkdir /usr/local/pxf-matrixdb4/servers/single_hdfs/
(5)Копирование конфигурационных файлов из Hadoop в каталог PXF (перенос с мастер-узла Hadoop на мастер-узел YMatrix)
Скопируйте конфигурационные файлы Hadoop в каталог PXF на мастер-узле YMatrix.
scp:scp $HADOOP_CONF_DIR/core-site.xml 192.168.50.95:/usr/local/pxf-matrixdb4/servers/single_hdfs/
scp $HADOOP_CONF_DIR/hdfs-site.xml 192.168.50.95:/usr/local/pxf-matrixdb4/servers/single_hdfs/
scp $HADOOP_CONF_DIR/yarn-site.xml 192.168.50.95:/usr/local/pxf-matrixdb4/servers/single_hdfs/
(6)Создание файла pxf-site.xml (создать на мастер-узле YMatrix)
Создайте файл конфигурации PXF pxf-site.xml на мастер-узле YMatrix, чтобы обеспечить правильное соединение между PXF и кластером Hadoop.
vi /usr/local/pxf-matrixdb4/servers/single_hdfs/pxf-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
</configuration>
(7)Обновление значения core-site.xml в fs.defaultFS до IP активного NameNode и синхронизация конфигурации PXF (выполнить на мастер-узле YMatrix)
Настройте параметр core-site.xml в файле fs.defaultFS, чтобы YMatrix мог правильно подключиться к NameNode Hadoop.
fs.defaultFS:<property>
<name>fs.defaultFS</name>
<value>hdfs://<namenode_ip>:9000</value>
</property>
pxf cluster sync
(8)Запросы с использованием плагина PXF в базе данных YMatrix (выполнить на мастер-узле YMatrix)
create extension pxf_fdw;
CREATE SERVER single_hdfs FOREIGN DATA WRAPPER hdfs_pxf_fdw OPTIONS ( config 'single_hdfs' );
CREATE USER MAPPING FOR mxadmin SERVER single_hdfs;
CREATE FOREIGN TABLE pxf_hdfs_table (location text, month text, num_orders int, total_sales float8)
SERVER single_hdfs OPTIONS ( resource '/ymatrix/pxf_examples/pxf_hdfs_simple.txt', format 'text', delimiter ',' );
SELECT * FROM pxf_hdfs_table;
(1)Создание каталога (выполнить на мастер-узле Hadoop)
Создайте новый каталог HDFS для хранения записываемых данных.
hdfs dfs -mkdir /ymatrix/pxf_dir_examples
(2)Создание внешней таблицы (выполнить на мастер-узле YMatrix)
Создайте внешнюю таблицу в YMatrix, указывающую на новый каталог HDFS.
CREATE FOREIGN TABLE pxf_hdfsdir_table (location text, month text, num_orders int, total_sales float8)
SERVER hdfs_svr OPTIONS (resource '/ymatrix/pxf_dir_examples', format 'text', delimiter ',' );
(3)Запись данных (выполнить на мастер-узле YMatrix)
Вставьте данные из существующей внешней таблицы pxf_hdfs_table в новую таблицу pxf_hdfsdir_table.
INSERT INTO pxf_hdfsdir_table SELECT * FROM pxf_hdfs_table ;
(4)Запрос к внешней таблице для получения всех данных (выполнить на мастер-узле YMatrix)
Проверьте успешность операции записи.
SELECT COUNT(*) FROM pxf_hdfsdir_table;
В этом разделе описывается использование PXF совместно с Ranger для управления правами доступа к файлам HDFS.
(1)Создание каталогов в Hadoop (выполнить на мастер-узле Hadoop)
Создайте каталоги в HDFS для обмена данными между YMatrix и Hadoop.
Создайте каталог /ranger в корне HDFS
Используется для хранения файлов данных, связанных с базой данных. Выполните:
hdfs dfs -mkdir /ranger
Просмотрите содержимое корневого каталога, чтобы убедиться в наличии /ranger
Используйте ls для просмотра и подтверждения:
hdfs dfs -ls /
Создайте тестовый файл с данными
Создайте локальный тестовый файл с помощью:
echo "testuser,May,100,999.99" > /tmp/pxf_test_verify.txt

Загрузите локальный файл в каталог /ranger в HDFS
Используйте hdfs dfs -put для загрузки:
hdfs dfs -put -f /tmp/pxf_test_verify.txt /ranger/
Просмотрите содержимое загруженного файла, чтобы подтвердить успех
Выполните:
hdfs dfs -cat /ranger/pxf_test_verify.txt

(2)Настройка переменных окружения для пользователя mxadmin (добавить на всех узлах YMatrix)
Обеспечьте взаимодействие YMatrix с Hadoop, настроив переменные окружения на всех узлах.
В файле .bashrc или другом файле окружения добавьте:
export HADOOP_HOME=/opt/modules/hadoop-3.2.4
export HADOOP_CONF_DIR=/opt/modules/hadoop-3.2.4/etc/hadoop
export PXF_CONF=/usr/local/pxf-matrixdb4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
(3)Предоставление пользователю mxadmin доступа к кластеру Hadoop (изменить на всех узлах Hadoop)
Разрешите доступ пользователю mxadmin, изменив файл core-site.xml на всех узлах Hadoop.
Откройте core-site.xml и добавьте:
<property>
<name>hadoop.proxyuser.mxadmin.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.mxadmin.hosts</name>
<value>*</value>
</property>
(4)Создание каталога single_hdfs (добавить на всех машинах YMatrix)
Создайте каталог на мастер-узле YMatrix для хранения конфигурационных файлов Hadoop.
Команда:
mkdir /usr/local/pxf-matrixdb4/servers/single_hdfs/
(5)Копирование конфигурационных файлов из Hadoop в папку PXF (передача с мастер-узла Hadoop на мастер-узел YMatrix)
Скопируйте конфигурационные файлы Hadoop в каталог PXF на мастер-узле YMatrix.
Используйте scp:
scp $HADOOP_CONF_DIR/core-site.xml 192.168.50.95:/usr/local/pxf-matrixdb4/servers/single_hdfs/
scp $HADOOP_CONF_DIR/hdfs-site.xml 192.168.50.95:/usr/local/pxf-matrixdb4/servers/single_hdfs/
scp $HADOOP_CONF_DIR/yarn-site.xml 192.168.50.95:/usr/local/pxf-matrixdb4/servers/single_hdfs/
(6)Создание файла pxf-site.xml (создать на мастер-узле YMatrix)
Создайте файл конфигурации PXF pxf-site.xml, чтобы обеспечить корректное подключение.
vi /usr/local/pxf-matrixdb4/servers/single_hdfs/pxf-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
</configuration>
(7)Обновление значения core-site.xml в fs.defaultFS до IP активного NameNode и синхронизация конфигурации PXF (выполнить на мастер-узле YMatrix)
Настройте параметр core-site.xml в fs.defaultFS, чтобы обеспечить правильное подключение к NameNode.
fs.defaultFS:<property>
<name>fs.defaultFS</name>
<value>hdfs://<namenode_ip>:9000</value>
</property>
pxf cluster sync
PXF взаимодействует с HDFS с использованием пользователей операционной системы, а не пользователей базы данных. Поэтому управление правами доступа в Ranger для HDFS основано на пользователях ОС.

core-site.xml)
В Ranger различают Kerberos и Simple аутентификацию:
Kerberos: использует тикеты и шифрование; высокий уровень безопасности, подходит для производственных сред, особенно при работе с несколькими системами.
Simple: основана на имени пользователя и пароле; более низкий уровень безопасности, идеальна для разработки или тестирования.
Сохраните конфигурацию сервиса.

Внимание!
После создания сервиса перезапустите Hadoop Ranger Plugin, чтобы изменения вступили в силу.
mxadmin в Ranger(i)Перейдите на страницу «User / Groups»
В меню выберите User / Groups, затем нажмите Add New User.
(ii)Создайте пользователя mxadmin
Введите mxadmin в поле User Name и нажмите Save.

(iii)Назначьте права доступа к HDFS пользователю mxadmin
В Ranger перейдите к сервису hadoop_hdfs и нажмите Add New Policy. Настройте следующим образом:
Название политики: test_allow_mxadmin
Путь к ресурсу: /ranger/pxf_test_verify.txt

Пользователь: mxadmin
Права: read

Сохраните политику.
1. Создание тестовой базы данных
create database mxadmin;
# Switch to mxadmin database
\c mxadmin
2. Установка плагина
Активируйте плагин PXF в YMatrix для доступа к данным HDFS.
Выполните:
create extension pxf_fdw;
3. Создание сервера FDW
Создайте внешний источник данных для файловой системы Hadoop.
SQL-команда:
CREATE SERVER single_hdfs FOREIGN DATA WRAPPER hdfs_pxf_fdw OPTIONS ( config 'single_hdfs' );
4. Создание отображения пользователя FDW
Свяжите пользователя YMatrix с сервером FDW.
Команда:
CREATE USER MAPPING FOR mxadmin SERVER single_hdfs;
5. Создание внешней таблицы FDW
Свяжите файл HDFS с таблицей YMatrix.
Выполните:
CREATE FOREIGN TABLE pxf_hdfs_verify (
name text,
month text,
count int,
amount float8
)
SERVER single_hdfs
OPTIONS (
resource '/ranger/pxf_test_verify.txt',
format 'text',
delimiter ','
);
6. Запрос к внешней таблице

SELECT * FROM pxf_hdfs_verify;


SELECT * FROM pxf_hdfs_table;
