我有一个Flink应用程序,它从Kafka中读取一些事件,从MySQL中丰富数据,使用窗口函数缓冲数据,并将窗口内的数据写入HBase。我目前已经启用了检查点,但事实证明,检查点非常昂贵,随着时间的推移,它花费的时间越来越长,并影响我的作业延迟(Kafka摄取率落后)。如果我想办法使HBase写操作幂等,是否有充分的理由使用检查点?我可以将内部kafka消费客户端配置为每隔一段时间提交一次,对吗?
如果您唯一要检查的是Kafka提供程序偏移量,那么检查点时间足够长,足以减慢您的工作流,这会让我感到惊讶。还是其他地方也在拯救国家?如果是这样的话,您可以跳过它(根据您的说明,只要HBase写入是幂等的)。
请注意,您还可以调整检查点间隔,并且(如果需要)在RocksDB中使用增量检查点。
问题内容: 我真的需要做mysql_close()吗?为什么或者为什么不? 即使我不执行mysql_close,也有触发器会在mysql_connect之后关闭链接吗? 问题答案: 在大多数情况下,调用不会对性能产生任何影响。但是,关闭程序不再使用的资源(文件句柄,打开的套接字,数据库连接等)始终是一个好习惯。 如果您正在做可能要花费几秒钟的操作,例如从REST API读取和解析数据,则尤其如此。
下面是我对Flink的疑问。 我们可以将检查点和保存点存储到RockDB等外部数据结构中吗?还是只是我们可以存储在RockDB等中的状态。 状态后端是否会影响检查点?如果是,以何种方式? 什么是状态处理器API?它与我们存储的保存点和检查点直接相关吗?状态处理器API提供了普通保存点无法提供的哪些额外好处? 对于3个问题,请尽可能描述性地回答。我对学习状态处理器API很感兴趣,但我想深入了解它的应
我正在kubernetes中运行一个Flink作业。我的设置如下 1个作业管理器吊舱 我的flink作业从kafka源获取时间序列数据(时间、值),进行聚合和其他转换,并将其发布到kafka接收器。 有时,我的作业因检查点异常(10分钟后超时)而失败,主要是由一名操作员完成的。我不理解异步持续时间(在图中)的含义,为什么它花费的时间最长。在这个异常之前,Kafka的吞吐量非常高,有500-800万
我们正在尝试使用RocksDB后端设置Flink有状态作业。我们使用会话窗口,有30分钟的间隔。我们使用aggregateFunction,所以不使用任何Flink状态变量。通过采样,我们的事件数不到20k次/秒,新会话数不到20-30次/秒。我们的会议基本上收集了所有的事件。会话累加器的大小会随着时间而增大。我们总共使用了10G内存和Flink1.9,128个容器。以下是设置: 从我们对给定时间
我有一个非常简单的4节点Flink集群设置,其中一个节点是Jobmanager,其他节点是TaskManager,并通过启动集群脚本启动。所有任务管理器都有相同的配置,关于状态和检查点,如下所示: (后两个选项是在我尝试取消注释时故意注释的,没有任何改变。) 在代码中,我有: 作业工作40分钟后,在目录中 /root/flink-1.3.1/检查点/fs/.../ 我看到了4个名称模式为“chk-
是否可以从Flink流作业触发检查点? 我的用例是:我有两个流R和S要用滚动的时间窗口连接。来源是Kafka。我使用事件时间处理和BoundedOutOfOrdernessGenerator来确保来自两个流的事件最终出现在同一个窗口中。