400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
YMatrix 文档
关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
流计算引擎
灾难恢复
系统配置参数
索引
扩展
SQL 参考
常见问题(FAQ)
YMatrix 支持通过 PXF(Platform Extension Framework)访问 HDFS 中的数据。通过 PXF,YMatrix 可以并行读取 HDFS 上的结构化或半结构化数据,避免数据迁移带来的冗余与延迟,实现“即连即用”的数据分析体验。
本部分将详细介绍如何在 YMatrix 中配置与使用 PXF 访问 HDFS。
软件 | 版本信息 |
---|---|
YMatrix | MatrixDB 6.2.2+enterprise |
Hadoop | Hadoop 3.2.4 |
PXF | pxf-matrixdb4-6.3.0-1.el7.x86_64 |
首先,我们需要在 HDFS 上创建一些目录,以便存放数据文件。这些目录将作为 YMatrix 与 Hadoop 集群之间的数据交换位置。
1.创建 HDFS 根目录下的 /greenplum
目录。该目录用于存放所有与数据库相关的数据文件。可以通过以下命令创建:
hdfs dfs -mkdir /greenplum
2.在 /greenplum
下创建 pxf_examples
子目录。该子目录用于存放 PXF 示例数据。通过以下命令创建该子目录:
hdfs dfs -mkdir /greenplum/pxf_examples
3.列出 HDFS 根目录的内容,验证 /greenplum
是否已创建。使用 ls
命令列出根目录内容,确保新目录创建成功:
hdfs dfs -ls /
4.列出 /greenplum
目录的内容,验证 pxf_examples
是否已创建。
hdfs dfs -ls /greenplum/
5.生成测试数据文件 在本地创建一个包含城市、月份、销量和金额的测试数据文件。可以使用以下命令:
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
6.将生成的本地文件上传到 HDFS 的 /greenplum/pxf_examples
目录。
hdfs dfs -put pxf_hdfs_simple.txt /greenplum/pxf_examples/
7.查看上传后的文件内容,验证上传成功。
hdfs dfs -cat /greenplum/pxf_examples/pxf_hdfs_simple.txt
8.赋予文件权限
通过 hdfs dfs -chown
命令将文件权限赋给 mxadmin
用户:
hdfs dfs -chown -R mxadmin:mxadmin /greenplum/pxf_examples/pxf_hdfs_simple.txt
为了确保 YMatrix 能够与 Hadoop 集群进行有效的交互,所有 YMatrix 节点需要配置相关的环境变量。
.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
为确保 mxadmin
用户能够访问 Hadoop 集群,需要在所有 Hadoop 节点的 core-site.xml
配置文件中进行相应设置。
core-site.xml
文件,加入以下配置:<property>
<name>hadoop.proxyuser.mxadmin.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.mxadmin.hosts</name>
<value>*</value>
</property>
single_hdfs
文件夹(所有 YMatrix 机器添加)在 YMatrix 主节点上创建一个新的文件夹,用于存放 Hadoop 集群的配置文件。
mkdir /usr/local/pxf-matrixdb4/servers/single_hdfs/
将 Hadoop 配置文件传输到 YMatrix 主节点的 PXF 目录。
scp
命令将 Hadoop 配置文件拷贝到 YMatrix 主节点: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/
pxf-site.xml
文件(YMatrix 主节点创建)在 YMatrix 主节点上创建 PXF 配置文件 pxf-site.xml
,确保 PXF 服务能够正确与 Hadoop 集群连接。
vi /usr/local/pxf-matrixdb4/servers/single_hdfs/pxf-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
</configuration>
core-site.xml
的 fs.defaultFS
配置为 Active NameNode 所在节点 IP,并同步 PXF 配置(YMatrix 主节点执行)配置 core-site.xml
文件中的 fs.defaultFS
属性,以确保 YMatrix 能够正确连接到 Hadoop 集群的 NameNode。
fs.defaultFS
配置<property>
<name>fs.defaultFS</name>
<value>hdfs://<namenode_ip>:9000</value>
</property>
pxf cluster sync
1.创建插件
在 YMatrix 中启用 PXF 插件,允许 YMatrix 访问 HDFS 数据。
create extension pxf_fdw;
2.创建 FDW Server
创建一个外部数据源连接 Hadoop 集群的文件系统。
CREATE SERVER single_hdfs FOREIGN DATA WRAPPER hdfs_pxf_fdw OPTIONS ( config 'single_hdfs' );
3.创建 FDW User Mapping
配置 YMatrix 用户与 FDW 服务器的映射。
CREATE USER MAPPING FOR mxadmin SERVER single_hdfs;
4.创建 FDW Foreign Table,将 HDFS 上的文件映射到 YMatrix 数据库中。
CREATE FOREIGN TABLE pxf_hdfs_table (location text, month text, num_orders int, total_sales float8)
SERVER single_hdfs OPTIONS ( resource '/greenplum/pxf_examples/pxf_hdfs_simple.txt', format 'text', delimiter ',' );
5.查询外部表
执行查询语句,验证数据是否成功读取。
SELECT * FROM pxf_hdfs_table;
在 HDFS 上创建新的目录,用于存放将要写入的数据。
hdfs dfs -mkdir /greenplum/pxf_dir_examples
在 YMatrix 中创建外部表,并将其指向新的 HDFS 目录。
CREATE FOREIGN TABLE pxf_hdfsdir_table (location text, month text, num_orders int, total_sales float8)
SERVER hdfs_svr OPTIONS (resource '/greenplum/pxf_dir_examples', format 'text', delimiter ',' );
将数据从 YMatrix 的现有外部表 pxf_hdfs_table
插入到新创建的外部表 pxf_hdfsdir_table
中。
INSERT INTO pxf_hdfsdir_table SELECT * FROM pxf_hdfs_table ;
执行查询命令以验证数据是否成功写入到新的目录中。
SELECT COUNT(*) FROM pxf_hdfsdir_table;