gpfdist
gpfdist
将数据文件提供给Greenplum数据库Segment或从其中写出数据文件。
概要
gpfdist [-d directory] [-p http_port] [-l log_file] [-t timeout] [-S] [-w time] [-v | -V] [-s] [-m max_length] [--ssl certificate_path [--sslclean wait_time] ] [-c config.yml] gpfdist -? | --help gpfdist --version
描述
gpfdist是Greenplum数据库并行文件分发程序。它可以被外部表和gpload用来并行地将外部表文件提供给所有的Greenplum数据库Segment。它由可写外部表使用,并行接受来自Greenplum数据库Segment的输出流,并将它们写出到文件中。
为了使外部表使用gpfdist ,外部表定义的LOCATION子句必须使用gpfdist://协议(参见Greenplum数据库命令CREATE EXTERNAL TABLE)。
使用gpfdist的好处是在读取或写入外部表时可以保证最大的并行性,从而提供最佳的性能,并且更容易管理外部表。
对于外部表,当用户从外部表中SELECT 时,gpfdist会将数据文件均匀地分析并提供给Greenplum数据库系统的所有Segment实例。对于可写的外部表,gpfdist在用户INSERT外部表时接受来自Segment的并行输出流,并写入输出文件。
对于可读外部表,如果使用gzip或bzip2(具有.gz或.bz2的文件扩展名),gpfdist会在装载之前自动解压文件,前提是gunzip或bunzip2在用户的路径中。
当使用gpfdist或gpfdists协议读写数据时,Greenplum数据库在HTTP请求头部中包含 X-GP-PROTO,以指示该请求来自Greenplum数据库。该工具拒绝请求头部中不包含X-GP-PROTO的HTTP请求。
用户很可能希望在ETL机器而不是安装Greenplum数据库的主机上运行gpfdist。在要其他主机上安装gpfdist,只需简单的将该程序复制到该主机上,然后将gpfdist添加到用户的$PATH中。
选项
- -d directory
- 指定一个目录,gpfdist将从该目录中为可读外部表提供文件,或为可写外部表创建输出文件。如果没有指定,默认为当前目录。
- -l log_file
- 要记录标准输出消息的完全限定路径和日志文件名称。
- -p http_port
- gpfdist 提供文件要使用的HTTP端口。默认为8080。
- -t timeout
- 设置Greenplum数据库建立与gpfdist进程的连接所允许的时间。默认值是5秒。允许的值是2到7200秒(2小时)。在网络流量大的系统上可能要增加。
- -m max_length
- 设置以字节为单位的最大数据行长度。默认值是32768。当用户数据包含非常宽的行时(或者当line too long错误消息发生时)应该使用,否则不应该使用,因为它会增加资源分配。有效范围是32K到256MB(Windows系统上限为1MB)。
注意: 如果用户指定较大的最大行长度并运行大量的gpfdist并发连接,则可能会发生内存问题。例如,使用96个并行gpfdist进程需要大约24GB的内存((96 + 1) x 246MB)。
- -s
-
启用简化的日志记录。指定此选项时,只有具有WARN级别或者更高级别的消息才会写入gpfdist日志文件。INFO级别的消息不写入日志文件。如果未指定这一选项,则所有gpfdist消息都写入日志文件。
- 用户可以指定此选项以减少写入日志文件的信息。
- -S (use O_SYNC)
- 使用O_SYNC标志打开同步I/O的文件。任何对结果文件描述的写都会阻塞gpfdist,直到数据被物理地写到底层硬件。
- -w time
- 设置关闭目标文件(如命名管道)之前Greenplum数据库延迟的秒数。 默认值是0,没有延迟。最大值是7200秒(2小时)。
- 对于具有多个Segment的Greenplum数据库,在将不同Segment中的数据写入文件时,Segment之间可能会有延迟。用户可以指定Greenplum数据库关闭文件之前要等待的时间,以确保所有数据都被写入文件。
- --ssl certificate_path
- 将SSL加密添加到使用gpfdist传输的数据。使用--ssl certificate_path选项执行gpfdist之后,从此文件服务器加载数据的唯一方法是使用gpfdist://协议。有关gpfdist://协议的信息,请参阅Greenplum数据库管理员指南中的“装载和卸载数据”。
- 在certificate_path 中指定的位置必须包含以下文件:
- 服务器证书文件,server.crt
- 服务器私钥文件,server.key
- 可信证书机构,root.crt
根目录(/)不能指定为certificate_path。
- --sslclean wait_time
- 使用--ssl选项运行该工具时,设置该工具完成向Greenplum数据库Segment读写数据后关闭SSL会话和清除SSL资源之前要延迟的秒数。默认值是0,没有延迟。最大值是500秒。如果延迟增加,传输速度降低。
- 在某些情况下,复制大量数据时可能会发生此错误: gpfdist server closed connection。为了避免这类错误,用户可以增加一个延迟,例如--sslclean 5。
- -c config.yaml
- 指定gpfdist在装载或抽取数据时,用来选择要应用的转换的规则。gpfdist的配置文件是一个YAML1.1文档。
- 有关文件格式的信息,请参阅Greenplum数据库管理员指南中的配置件格式。有关用gpfdist配置数据转换的信息,请参阅Greenplum数据库管理员指南中的转换XML数据。
- 该选项在windows平台中不可用。
- -v (详细模式)
- 显示进度和状态信息的详细模式。
- -V (非常详细模式)
- 显示由该工具生成的所有输出信息的详细模式。
- -? (帮助)
- 显示在线帮助。
- --version
- 显示该工具的版本。
示例
使用端口8081从指定目录提供文件(并在后台启动gpfdist ):
gpfdist -d /var/load_files -p 8081 &
在后台启动gpfdist并将输出和错误重定向到日志文件:
gpfdist -d /var/load_files -p 8081 -l /home/gpadmin/log &
停止在后台运行的gpfdist
--首先找到它的进程ID:
ps ax | grep gpfdist
--然后杀死该进程,例如:
kill 3456
另见
gpload、Greenplum数据库管理员指南中的CREATE EXTERNAL TABLE