gpfdist
gpfdist
将数据文件载入Greenplum数据库Segment或从其中写出数据文件到文件系统。
概要
gpfdist [-d directory] [-p http_port] [-P last_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。
- -P last_http_port
- gpfdist将会提供文件服务的端口号范围 (http_port到last_http_port 包含岂止号码)中最后一个HTTP端口号号码。gpfdist会 以端口号设定范围内第一个成功绑定的端口号作为服务端口。
- -t timeout
- 设置Greenplum数据库建立与gpfdist进程的连接所允许的时间。默认值是5秒。 允许的值是2到7200秒(2小时)。在网络流量大的系统上可能要增加。
- -m max_length
- 设置以字节为单位的最大数据行长度。默认值是32768。当用户数据包含非常宽的行时 (或者当line too long错误消息发生时)应该使用,否则不应该使用, 因为它会增加资源分配。有效范围是32K到256MB(Windows系统上限为1MB)。
-
Note: 如果用户指定较大的最大行长度并运行大量的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数据库管理员指南 中的使用gpfdist和gpload转换外部数据转换XML数据。
- 该选项在windows平台中不可用。
- -v(详细模式)
- 显示进度和状态信息的详细模式。
- -V(非常详细模式)
- 显示由该工具生成的所有输出信息的详细模式。
- -?(帮助)
- 显示在线帮助。
- --version
- 显示该工具的版本。
注解
- gpfdist使用的自有签名SSL证书授权不被Greenplum信任。
- SSL证书中包含的主机名与gpfdist主机名不匹配。
如果gpfdist工具在读写操作中hang住,客户可以在下次hang住时生成一个 core dump文件来帮助调试问题原因。在gpfdist强制退出之前, 设置环境变量GPFDIST_WATCHDOG_TIMER为异常时间段的秒数。 当客户设置了该环境变量,并且gpfdist hang住时,工具会在特定秒数后停止并创建 core dump文件,发送相关信息到日志文件。
export GPFDIST_WATCHDOG_TIMER=300
示例
使用端口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