开源 Greenplum:从外部 table 选择时出现 GPFDIST 错误 'Segmentation fault'

Open Source Greenplum: GPFDIST error 'Segmentation fault' when selecting from external table

我正在尝试简单地设置一个开源 Greenplum 实例,并且几天来一直遇到关于 GPFDIST 的相同问题!简而言之,我在 CentOS 7.6 上从头开始进行完整安装(如果需要,可以提供有关设置的更多详细信息)安装 OS GPDB 软件版本 5.18 并禁用 GPORCA。编译的完整命令是:

./configure --prefix=/usr/local/gpdb --with-perl --with-python --with-libxml --with-gssapi --with-includes=/usr/local/gpdb/include --with-libs=/usr/local/gpdb/lib --disable-orca

编译成功,下面的 make/make install 命令也很完整,没有问题。 Greenplum 数据库本身的初始化也成功了,然后我可以进入数据库并像往常一样创建 tables、插入数据和 运行 查询。

但如果我尝试从外部select table,例如:

create external table test_external_table
(testing smallint
)
location ('gpfdist://mdw:8080/test_data.csv')
format 'csv' (header delimiter '|')
;

与 GPFDIST 运行 如下:

gpfdist -d /home/gpadmin/test/ -p 8080 -l /home/gpadmin/greenplum/logs/gpfdist_log 2>&1 &

然后我得到两个错误;一个来自外部 table,一个来自 GPFDIST。这些如下:

External Table Returns:
ERROR:  connection with gpfdist failed for gpfdist://mdw:8080/test_data.csv. effective url: http://127.0.0.1:8080/test_data.csv. error code = 104 (Connection reset by peer)  (seg0 slice1 127.0.0.1:6000 pid=27962)

GPFDIST Returns:
[1]+  Segmentation fault      gpfdist -d /home/gpadmin/test -p 8080 -l /home/gpadmin/greenplum/logs/gpfdist_log 2>&1

我已经删除了 OS GPDB GitHub 安装指南中没有的所有内容(对于 'bare-bones' 安装),所以我认为这不是导致问题的原因.我已经尝试了与主机名和网络防火墙有关的一切,据我所知,一切都很完美。

我还从 Pivotal 下载了相同版本的 GPDB (5.18) 并同时在同一实例上安装了该版本,GPFDIST 工作得很好。

我也试过 OS GPDB 5.17、6 beta 和 7 beta,我都遇到了同样的问题。

非常感谢任何关于可能导致这种情况的想法,因为我现在正慢慢地发疯试图弄清楚这个问题。

非常感谢您的帮助。

-- 编辑--

好吧.. 尝试在 CentOS7 上安装 debuginfo 的东西时,我几乎把自己的胳膊咬断了,我终于用 gdb 生成了一个核心转储。然后我 运行:

gdb -c core_dump.<pid>

并得到以下输出:

Core was generated by `gpfdist -d /home/gpadmin/test -p 8080 -l /home/gpadmin/greenplum/logs/gpfdist_log'.
Program terminated with signal 11, Segmentation fault.
#0  0x00007f4f2c07bdff in ?? ()

但我完全不知道那是什么意思...老实说,我现在有点不知所措,真的不知道如何继续。

peer 重置的连接仅表示套接字的另一端已断开(...在这种情况下,gpfdist 因为它崩溃了)。

设置您的 gpfdist 并尝试将 wget 添加到托管文件中:

--header='X-GP-PROTO:0'

您需要添加 header 以避免请求被拒绝。

你能在那里检索文件吗?还是那也崩溃了?

如果崩溃,则与数据库无关 - 您可能需要核心转储来确定段错误的内容(r/w 权限、内存...)。

我终于设法解决了这个问题。如果有人遇到类似问题,请确保您安装的是 Libevent 版本 1.4[.15],并且不要高于此版本。

我安装了 2.2.0,虽然 Greenplum 认为这很好,但实际上它不起作用。不幸的是,我确实必须从头开始安装整个系统才能让它正常工作,因为仅在已编译 Greenplum 的旧系统上安装 Libevent 1.4 对我来说不起作用。