Greenplum Stream Server (GPSS)是一个ETL(提取、转换、加载)工具。GPSS服务器的一个实例从一个或多个客户机接收流数据,使用Greenplum数据库可读的外部表将数据转换并插入到目标Greenplum表中。数据源和数据格式是特定于客户机的。数据源和数据格式由客户端指定。
Greenplum Stream Server包括gpss命令行工具。运行gpss时,会启动一个gpss实例,此实例无限期地等待客户端数据。
Greenplum Stream Server还包括gpsscli命令行工具,这是一个客户端工具,用于向GPSS实例提交数据加载作业并管理这些作业。
Greenplum Stream Server是一个gRPC服务器。GPSS gRPC服务定义的内容包括:连接到Greenplum数据库和检查Greenplum元数据所需的操作和消息格式;数据从客户端写入greenplum数据库表所需的操作和消息格式。
注:有关gRPC内容参考:https://grpc.io/docs/
gpsscli命令行工具是Greenplum Stream Server的gRPC客户端工具,也可以用于操作Greenplum-Kafka 集成和Greenplum-Informatica连接器。可以使用GPSS API开发自己的GPSS gRPC客户端。
Greenplum Stream Server架构如下图:
Greenplum Stream Server 处理ETL任务的执行流程如下所示:
Greenplum流服务器gpss和gpsscli命令行工具,在安装Greenplum数据库版本5.16及其以上版本时,已自动安装在其中,无需进行单独安装。
在启动GPSS服务器实例之前,请确保:
必须在需要利用gpss写入数据的表,所在的数据库注册gpss扩展,这样才能利用gpss向该数据库下的表加载数据。需要注意数据库权限问题,最好是超级用户或该数据库的所有者。
注册gpss扩展步骤如下: step 1.配置greenplum环境变量:利用gpadmin超级用户登录到greenplum master节点
gpmaster$ source $GP_HOME/greenplum_path.sh
如果已经在.bashrc中配置了环境变量,省约该步。
step 2.利用psql登录到需要注册gpss的数据库
gpmaster$ psql -d testdb
输入以下命令注册EXTENSION
testdb=# CREATE EXTENSION gpss;
step 3.对于其它需要利用gpss向数据库load data,对该数据库执行2,3步操作
可以通过json格式的配置文件配置对Greenplum流服务器的调用。这个配置文件包含一些属性,这些属性标识GPSS服务的监听地址以及gpfdist主机和端口号。还可以在文件中指定加密选项。
示例文件内容如下:
{
"ListenAddress": {
"Host": "gpss_host",
"Port": gpss_portnum [,
"SSL": use_ssl ]
},
"Gpfdist": {
"Host": "gpfdist_host",
"Port": gpfdist_portnum
} [,
"Certificate": {
"CertFile": "certfile_path",
"KeyFile": "keyfile_path",
"CAFile": "CAfile_path"
}]
}
配置文件说明见下。
GPSS部分如下:
Gpfdist部分如下:
GPSS和Gpfdist加密部分如下:
配置文件例子如下:
{
"ListenAddress":{
"Host":"localhost",
"Port":12345
},
"Gpfdist":{
"Host":"localhost",
"Port":9899
},
"Certificate":{
"CertFile":"/home/gpadmin/gpdb_bin/ext/server.crt",
"KeyFile":"/home/gpadmin/gpdb_bin/ext/server.key",
"CAFile":"/home/gpadmin/gpdb_bin/ext/rootCA.pem"
}
}
执行如下命令启动:
gpss gpsscfg.json --log-dir ./gpsslogs
–log-dir表示配置gpss的日志目录
特别注意:gpss跟踪内存中客户端作业的加载过程。当停止GPSS服务器实例时,将丢失所有已注册的作业。重启GPSS实例后,必须重新提交以前提交的作业。gpss将从上次的记录偏移量位置恢复作业。