flink 常见问题

一、问题

1. flink_kafka EXACTLY_ONCE 报错

  • 问题:
    flink_kafka EXACTLY_ONCE 报错:
2021-10-11 10:43:52,210 WARN  [3226] [org.apache.flink.runtime.taskmanager.Task.transitionState(Task.java:1069)] org.apache.flink.runtime.taskmanager.Task                     - Sink: Unnamed (27/60)#2 (56891e8e1913c5da927e66c5a4c0430e) switched from RUNNING to FAILED with failure cause: org.apache.flink.streaming.connectors.kafka.FlinkKafkaException: Failed to send data to Kafka: Producer attempted an operation with an old epoch. Either there is a newer producer with the same transactionalId, or the producer's transaction has been expired by the broker.
	at org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer.checkErroneous(FlinkKafkaProducer.java:1392)
	at org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer.invoke(FlinkKafkaProducer.java:850)
	at org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer.invoke(FlinkKafkaProducer.java:99)
	at org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction.invoke(TwoPhaseCommitSinkFunction.java:223)
	at org.apache.flink.streaming.api.operators.StreamSink.processElement(StreamSink.java:54)
	at org.apache.flink.streaming.runtime.tasks.OneInputStreamTask$StreamTaskNetworkOutput.emitRecord(OneInputStreamTask.java:205)
	at org.apache.flink.streaming.runtime.io.AbstractStreamTaskNetworkInput.processElement(AbstractStreamTaskNetworkInput.java:134)
	at org.apache.flink.streaming.runtime.io.AbstractStreamTaskNetworkInput.emitNext(AbstractStreamTaskNetworkInput.java:105)
	at org.apache.flink.streaming.runtime.io.StreamOneInputProcessor.processInput(StreamOneInputProcessor.java:66)
	at org.apache.flink.streaming.runtime.tasks.StreamTask.processInput(StreamTask.java:423)
	at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMailboxLoop(MailboxProcessor.java:204)
	at org.apache.flink.streaming.runtime.tasks.StreamTask.runMailboxLoop(StreamTask.java:681)
	at org.apache.flink.streaming.runtime.tasks.StreamTask.executeInvoke(StreamTask.java:636)
	at org.apache.flink.streaming.runtime.tasks.StreamTask.runWithCleanUpOnFail(StreamTask.java:647)
	at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:620)
	at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:779)
	at org.apache.flink.runtime.taskmanager.Task.run(Task.java:566)
	at java.lang.Thread.run(Thread.java:748)
	Suppressed: org.apache.flink.streaming.connectors.kafka.FlinkKafkaException: Failed to send data to Kafka: The producer has been rejected from the broker because it tried to use an old epoch with the transactionalId

二、常见概念解析

  1. 幂等性
    幂等性原本是数学上的概念,即使公式:f(x)=f(f(x)) 能够成立的数学性质。用在编程领域,则意为对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。

    幂等性是分布式系统设计中十分重要的概念,具有这一性质的接口在设计时总是秉持这样的一种理念:调用接口发生异常并且重复尝试时,总是会造成系统所无法承受的损失,所以必须阻止这种现象的发生

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: Flink常见面试题包括但不限于以下几个方面: 1. Flink支持哪些语言和API? Flink支持Java和Scala语言,并提供了DataStream API和DataSet API供开发者使用。\[1\] 2. Flink的特点和功能有哪些? Flink是一个开源的流处理和批处理框架,具有高吞吐量、低延迟和容错性等特点。它支持事件驱动的流处理和批处理,可以处理有界和无界的数据集,并具有灵活的编程模型和丰富的功能库。\[2\] 3. Flink适用于哪些场景? Flink适用于实时数据处理和分析、批处理任务、基于事件的应用和流批一体化应用等场景。它可以处理实时数据流,适用于实时监控、实时报表和实时分析等场景;同时也可以处理有界数据集,适用于离线数据处理和大规模数据分析等场景;此外,Flink的事件驱动处理模型适合构建基于事件的应用,如实时推荐系统、欺诈检测和实时预测等场景;最后,Flink的流批一体化特性使得可以将流式和批式处理结合起来,适用于需要实时和离线处理结合的应用场景。\[3\] 4. Flink与其他流处理框架(如Spark Streaming和Kafka Streams)的区别是什么? 与Spark Streaming相比,Flink具有更低的延迟和更高的吞吐量,支持更复杂的事件处理和窗口操作,并提供了更灵活的状态管理和容错机制。与Kafka Streams相比,Flink具有更丰富的功能库和更灵活的编程模型,可以处理更复杂的数据处理场景。此外,Flink还支持批处理任务和流批一体化应用,使得可以同时处理实时和离线数据。\[3\] 以上是关于Flink常见面试题的回答,希望对您有帮助。 #### 引用[.reference_title] - *1* *2* *3* [Flink面试题二十道](https://blog.csdn.net/qq_38151907/article/details/131201566)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值