对 Openflow Connector for Kinesis 进行故障排除¶
备注
此连接器受 Snowflake 连接器条款 的约束。
本主题介绍如何排查 Openflow Connector for Kinesis 的常见问题。
常见问题¶
未引入消息¶
症状
Kinesis JSON Source 进程组中的 ConsumeKinesis 处理器正在运行,但未生成任何数据,也未发出错误公告。
原因
底层 AWS KCL 库可能发生了错误,但未传播到 Openflow UI。
解决方案
检查 KCL 日志,以确定根本错误。
FlowFile 队列已满¶
症状
FlowFile 队列已满,连接器处理数据的速度不够快。
原因
下游处理器无法跟上传入数据速率。最慢的处理器很可能是 Streaming Destination 进程组中 PutSnowpipeStreaming 类型的 Put Data To Snowflake。
解决方案
调整处理器的并发任务数量。并发任务允许处理器同时运行多个线程,从而提高了高容量场景的吞吐量。
要调整处理器的并发任务,请执行以下任务:
右键点击 Openflow 画布中的处理器。
从上下文菜单中选择 Configure。
导航到 Scheduling 选项卡。
在 Concurrent tasks 字段中,输入首选的并发任务数。
选择 Apply 以保存配置。
虽然正确的值可能因特定用例而异,但 Snowflake 建议使用以下任务计数值:
1-2(用于小型运行时)
2-4(用于中型运行时)
6-8(用于大型运行时)
更改任务计数后,观察处理器以确保增加任务计数可提高吞吐量。
检查 KCL 日志¶
该连接器在后台使用 AWS Kinesis Client Library (KCL) v3 (https://docs.aws.amazon.com/streams/latest/dev/kcl.html)。KCL 中发生的错误并不总是传播到 Openflow UI,因此检查 KCL 日志可能是故障排除的必要步骤。
KCL 日志存储在 配置的事件表 中。您可以使用以下查询检索它们:
SELECT
timestamp,
runtime_key,
resource_attributes,
log,
log:formattedMessage,
FROM (
SELECT
timestamp,
resource_attributes,
resource_attributes:"openflow.dataplane.id" AS deployment_id,
resource_attributes:"k8s.namespace.name" AS runtime_key,
resource_attributes:"k8s.pod.name" AS runtime_pod,
TRY_PARSE_JSON(value) AS log,
FROM <event_table>
WHERE TRUE
AND timestamp > DATEADD(minute, -30, SYSDATE())
AND record_type = 'LOG'
AND runtime_key = 'runtime-<runtime_name>'
AND resource_attributes:"k8s.container.name" ILIKE '%-server'
)
WHERE TRUE
AND log:loggerName LIKE 'software.amazon.kinesis.%'
AND log:level IN ('WARN', 'ERROR')
ORDER BY timestamp DESC
;
使用运行时名称替换 <event_table> with a configured event table name and <runtime_name>。
常见 KCL 错误¶
本节介绍 KCL 日志中可能出现的常见错误以及解决这些错误的方法。
错误:UnknownHostException¶
错误消息
java.net.UnknownHostException: dynamodb.eu-west-1.amazonaws.com
原因
如果运行时使用的是 Snowflake 部署,则网络规则很可能配置错误。
解决方案
确保所需的 AWS 域在您网络规则的允许列表中。有关所需域的列表,请参阅 设置 Openflow - Snowflake Deployment:为 Openflow 连接器配置允许的域。
错误:外部表 已标记为无效。未找到分片¶
错误消息
java.lang.IllegalStateException: No shards found when attempting to
validate complete hash range.
原因
如果 Kinesis 流不存在或未正确指定 AWS 区域,则会出现此错误。
解决方案
检查 KCL 日志,查看如下消息:
Got ResourceNotFoundException when fetching shard list for stream-name. Stream no longer exists.
验证流名称是否正确,以及流是否存在于 AWS 中。
验证是否在连接器配置中正确指定了 AWS 区域。