Flink的常见问题

640?wx_fmt=png

Flink仅用于(近)实时处理用例吗

640?wx_fmt=png

Flink是一个非常通用的系统,用于数据处理和数据驱动的应用程序,数据流作为核心构建块。这些数据流可以是实时数据流或存储的历史数据流。例如,在Flink的视图中,文件是存储的字节流。因此,Flink支持实时数据处理和应用程序,以及批处理应用程序。

640?wx_fmt=png

使用Flink有哪些先决条件

640?wx_fmt=png

1.您需要Java 8来运行Flink作业/应用程序

2.Scala API(可选)取决于Scala 2.11

3.Apache ZooKeeper需要高度可用且没有单点故障的设置

4.对于可以从故障中恢复的高可用流处理设置,Flink需要某种形式的分布式

5.存储用于检查点(HDFS / S3 / NFS / SAN / GFS / Kosmos / Ceph / ...)

640?wx_fmt=png

Flink如何与Hadoop堆栈相关联

640?wx_fmt=png

Flink独立于Apache Hadoop,并且在没有任何Hadoop依赖性的情况下运行。

但是,Flink与许多Hadoop组件集成得非常好,例如HDFS,YARN或HBase。与这些组件一起运行时,Flink可以使用HDFS读取数据,或写入结果和检查点/快照。Flink可以通过YARN轻松部署,并与YARN和HDFS Kerberos安全模块集成。

640?wx_fmt=png

NotSerializableException

640?wx_fmt=png

       Flink使用Java序列化将应用程序逻辑的副本(您实现的功能和操作以及程序配置等)分发给并行工作进程。因此,传递给API的所有函数都必须是可序列化的,如java.io.Serializable所定义 。

       如果您的函数是匿名内部类,请考虑以下事项: 使函数成为独立类或静态内部类。使用Java 8 lambda函数。

       您的函数是否已经是静态类,请检查在创建类的实例时分配的字段。其中一个字段最有可能包含非可序列化类型。在Java中,使用a RichFunction并初始化open()方法中有问题的字段。在Scala中,您通常可以简单地使用“lazy val”来推迟初始化,直到分布式执行发生。这可能是一个较小的性能成本。您当然也可以RichFunction在Scala中使用。

640?wx_fmt=png

ClassCastException:X无法强制转换为X

640?wx_fmt=png

当您看到样式中的异常com.foo.X无法转换为com.foo.X(或无法分配给com.foo.X)时,这意味着该类的多个版本com.foo.X已由不同的类加载器加载,并且尝试将该类的类型相互分配。

原因可能是:

1.通过child-first类加载进行类复制。这是一种允许用户使用Flink使用的相同依赖项的不同版本的预期机制。但是,如果这些类的不同副本在Flink的核心和用户应用程序代码之间移动,则可能发生此类异常。要验证这是原因,请尝试classloader.resolve-order: parent-first在配置中进行设置。如果这使错误消失,请写入邮件列表以检查是否可能是错误。

2.从不同的执行尝试缓存类,例如通过Guava的Interners或Avro的Schema缓存等实用程序。尝试不使用interner,或者减少interner / cache的范围,以确保每当启动新任务时都会创建新的缓存。

640?wx_fmt=jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 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 ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值