使用数据阶段在 Greenplum 中加载数据时面临管道繁忙问题

Posted

技术标签:

【中文标题】使用数据阶段在 Greenplum 中加载数据时面临管道繁忙问题【英文标题】:Facing Pipeline Busy issue while loading data in Greenplum using data stage 【发布时间】:2021-11-17 06:10:59 【问题描述】:

我们在通过数据阶段作业在 Greenplum 中加载数据(大容量)时遇到错误。

有多个作业按顺序运行。没有失败的特定工作。它是随机的。如果第 1 天 Job1 失败,则第 2 天 Job2 会失败。

我们还观察到,它只会影响必须加载大量数据的作业。

请找出错误,我们已经找到了。

第 1 天---------- 信息: STG_DEPS_G,0:下面的SQL语句失败:INSERT INTO GPCC_ET_20211114015751397_14836_2 SELECT DEPT,DEPT_NAME,买方,MERCH,PROFIT_CALC_TYPE,PURCHASE_TYPE,GROUP_NO,BUD_INT,BUD_MKUP,TOTAL_MARKET_AMT,MARKUP_CALC_TYPE,OTB_CALC_TYPE,MAX_AVG_COUNTER,AVG_TOLERANCE_PCT,DEPT_VAT_INCL_IND,CREATE_ID,CREATE_DATETIME从登台。 STG_DEPS。该语句报告了以下原因: [SQLCODE=08S01][Native=373,254] [IBM (DataDirect OEM)][ODBC Greenplum Wire Protocol driver][Greenplum]ERROR: http response code 501 from gpfdist (gpfdist://DDCETLMIG:8000 /DDCETLMIG_14836_gpw_11_3_20211114015751366):HTTP/1.0 501 管道正忙,关闭管道并重试(seg0 192.168.199.10:6000 pid=25824)(文件 url_curl.c;第 474 行;例程 check_response;)(CC_GPCommon::检查线程) .cpp,第 808 行) 下面的SQL语句失败:INSERT INTO GPCC_ET_20211114015751397_14836_2 SELECT DEPT,DEPT_NAME,买方,MERCH,PROFIT_CALC_TYPE,PURCHASE_TYPE,GROUP_NO,BUD_INT,BUD_MKUP,TOTAL_MARKET_AMT,MARKUP_CALC_TYPE,OTB_CALC_TYPE,MAX_AVG_COUNTER,AVG_TOLERANCE_PCT,DEPT_VAT_INCL_IND,CREATE_ID,CREATE_DATETIME FROM staging.STG_DEPS。该语句报告了以下原因: [SQLCODE=08S01][Native=373,254] [IBM (DataDirect OEM)][ODBC Greenplum Wire Protocol driver][Greenplum]ERROR: http response code 501 from gpfdist (gpfdist://DDCETLMIG:8000 /DDCETLMIG_14836_gpw_11_3_20211114015751366):HTTP/1.0 501 管道正忙,关闭管道并重试(seg0 192.168.199.10:6000 pid=25824)(文件 url_curl.c;第 474 行;例程 check_response;)(CC_GPCommon::检查线程) .cpp,第 808 行)


第 2 天

STG_RPM_ZONE,0:以下 SQL 语句失败:INSERT INTO GPCC_ET_20211114093430218_8212_0 SELECT ZONE_ID、ZONE_DISPLAY_ID、ZONE_GROUP_ID、NAME、CURRENCY_CODE、BASE_IND、LOCK_VERSION FROM STAGING.STG_RPM_ZONE。该语句报告了以下原因: [SQLCODE=08S01][Native=373,254] [IBM (DataDirect OEM)][ODBC Greenplum Wire Protocol driver][Greenplum]ERROR: http response code 501 from gpfdist (gpfdist://DDCETLMIG:8004 /DDCETLMIG_8212_gpw_0_0_20211114093430186):HTTP/1.0 501 管道正忙,关闭管道并重试(seg1 192.168.199.11:6000 pid=26726)(文件 url_curl.c;第 474 行;例行检查响应;)(CC_GP_CommonGPStatusThrow,文件 CC_GP_Common::检查线程.cpp,第 808 行) 以下 SQL 语句失败:INSERT INTO GPCC_ET_20211114093430218_8212_0 SELECT ZONE_ID、ZONE_DISPLAY_ID、ZONE_GROUP_ID、NAME、CURRENCY_CODE、BASE_IND、LOCK_VERSION FROM STAGING.STG_RPM_ZONE。该语句报告了以下原因: [SQLCODE=08S01][Native=373,254] [IBM (DataDirect OEM)][ODBC Greenplum Wire Protocol driver][Greenplum]ERROR: http response code 501 from gpfdist (gpfdist://DDCETLMIG:8004 /DDCETLMIG_8212_gpw_0_0_20211114093430186):HTTP/1.0 501 管道正忙,关闭管道并重试(seg1 192.168.199.11:6000 pid=26726)(文件 url_curl.c;第 474 行;例行检查响应;)(CC_GP_CommonGPStatusThrow,文件 CC_GP_Common::检查线程.cpp,第 808 行)

第 3 天

事件类型:致命 时间戳:11/15/2021 9:27:36 AM 信息: SUB_CLASS,3: APT_PMMessagePort::dispatch:ERROR: header = 04F02E20SUBPROC_SUPPORT_EOW, savedDispatchPosition = 04F02E20, currentDispatchPosition_ = 04F02E1FS, currentInputPosition_ = 04F02E58, buffer_ = 04F02E20, this = 04EEA1E0

第 4 天

消息: STG_GROUPS_G,0:以下 SQL 语句失败:INSERT INTO GPCC_ET_20211115015013039_2400_0 SELECT GROUP_NO、GROUP_NAME、BUYER、MERCH、DIVISION、CREATE_ID、CREATE_DATETIME FROM staging.STG_GROUPS。该语句报告了以下原因: [SQLCODE=08S01][Native=373,254] [IBM (DataDirect OEM)][ODBC Greenplum Wire Protocol driver][Greenplum]ERROR: http response code 501 from gpfdist (gpfdist://DDCETLMIG:8009 /DDCETLMIG_2400_gpw_1_1_20211115015013023):HTTP/1.0 501 管道正忙,关闭管道并重试(seg5 192.168.199.12:6001 pid=1167)(文件 url_curl.c;第 474 行;例行检查响应;)(CC_GP_Common::检查状态线程.cpp,第 808 行) 以下 SQL 语句失败:INSERT INTO GPCC_ET_20211115015013039_2400_0 SELECT GROUP_NO、GROUP_NAME、BUYER、MERCH、DIVISION、CREATE_ID、CREATE_DATETIME FROM staging.STG_GROUPS。该语句报告了以下原因: [SQLCODE=08S01][Native=373,254] [IBM (DataDirect OEM)][ODBC Greenplum Wire Protocol driver][Greenplum]ERROR: http response code 501 from gpfdist (gpfdist://DDCETLMIG:8009 /DDCETLMIG_2400_gpw_1_1_20211115015013023):HTTP/1.0 501 管道正忙,关闭管道并重试(seg5 192.168.199.12:6001 pid=1167)(文件 url_curl.c;第 474 行;例行检查响应;)(CC_GP_Common::检查状态线程.cpp,第 808 行)

【问题讨论】:

请修剪您的代码,以便更容易找到您的问题。请按照以下指南创建minimal reproducible example。 【参考方案1】:

几个问题:

您表示有多个作业按顺序运行?这是否意味着有多个并发作业,每个作业都运行一组顺序作业?或者是否有一项作业运行多个连续步骤?如果是第一个,我会检查以确保没有作业使用相同的 gpfdist 端口。

DataStage 是否通过代理服务器进行连接?这可能会导致问题(根据 google 查找是 501 错误的常见原因)。

最后,用于将 DataStage/gpfdist 连接到 Greenplum 的 NIC 的吞吐速度是多少?此外,Greenplum 中每个段/段主机之间的互连速度是多少?如果其中任何一个小于 10gig,则您的网络可能无法支持真正的高吞吐量。

【讨论】:

以上是关于使用数据阶段在 Greenplum 中加载数据时面临管道繁忙问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 Firestore 在 Flutter 中加载配置文件数据的最佳方式是啥?

使用数据框在 Pandas 中加载 csv 文件

无法使用 Alamofire 和 SwiftyJSON 在 tableviewcell 中加载 JSON 数据

如何在 R 中加载大数据? [复制]

在android中加载和保存数据文件

使用外部表逻辑在 netezza 中加载数据时出错