PXF架构
Greenplum平台扩展框架(PXF)由Greenplum数据库协议和相关的C客户端库以及Java服务组成。这些组件协同工作,使您可以通过Greenplum访问外部数据源。
Greenplum数据库部署包括master节点和多个segment节点。配置并初始化PXF后,会在每个包含segment节点主机上启动一个PXF JVM进程。此PXF进程会为该主机上的每个segment产生一个线程。每个segment主机上的多个segment实例通过REST API与PXF并行通信,多个主机上的PXF agent并行与HDFS通信。
图: PXF架构
当用户或应用程序在引用hdfs文件作为外部表进行查询的时候,Greenplum数据库master节点会将查询调度分配到到所有segment节点上。每个segment实例都连接到其主机上运行的PXF agent。当pxf agent接收到一个segment的请求以后:
- 为segment生成一个线程。
- 调用HDFS Java API从HDFS NameNode请求HDFS文件的元数据信息。
- 将hdfs namenode返回的元数据信息返回给segment实例。
segment通过Greenplum数据库gp_segment_id和元数据中描述的文件块信息为其自身分配查询数据的特定部分。然后,segment向PXF agent发送请求以读取分配的数据。该数据可以驻留在一个或多个HDFS数据节点上。
PXF代理调用HDFS Java API来读取数据并将其传递给segment。然后segment将其部分数据传递给Greenplum数据库master节点。此通信跨segment主机和segment实例并行发生。