面试题百日百刷-flink篇(七)

锁屏面试题百日百刷,每个工作日坚持更新面试题。请看到最后就能获取你想要的,接下来的是今日的面试题:

1.Flink中的Window出现了数据倾斜,你有什么解决办法?

window产生数据倾斜指的是数据在不同的窗口内堆积的数据量相差过多。本质上产生这种情况的原因是数据源头发送的数据量速度不同导致的。出现这种情况一般通过以下方式解决:

1、在数据进入窗口前做预聚合

2、重新设计窗口聚合的key

3、使用再平衡算子rebalance等

2.Flink中在使用聚合函数 GroupBy、Distinct、KeyBy 等函数时出现数据热点该如何解决?

数据倾斜和数据热点是所有大数据框架绕不过去的问题。处理这类问题主要从3个方面入手:

在业务上规避这类问题

例如一个假设订单场景,北京和上海两个城市订单量增长几十倍,其余城市的数据量不变。这时候我们在进行聚合的时候,北京和上海就会出现数据堆积,我们可以单独数据北京和上海的数据。

Key的设计上

把热key进行拆分,比如上个例子中的北京和上海,可以把北京和上海按照地区进行拆分聚合。

参数设置

Flink 1.9.0 SQL(Blink Planner) 性能优化中一项重要的改进就是升级了微批模型,即 MiniBatch。原理是缓存一定的数据后再触发处理,以减少对State的访问,从而提升吞吐和减少数据的输出量。

3.Flink任务延迟高,想解决这个问题,你会如何入手?

在Flink的后台任务管理中,我们可以看到Flink的哪个算子和task出现了反压。最主要的手段是资源调优和算子调优。资源调优即是对作业中的Operator的并发数(parallelism)、CPU(core)、堆内存(heap_memory)等参数进行调优。作业参数调优包括:并行度的设置,State的设置,checkpoint的设置。

4.Flink是如何处理反压的?

Flink 内部是基于 producer-consumer 模型来进行消息传递的,Flink的反压设计也是基于这个模型。Flink 使用了高效有界的分布式阻塞队列,就像 Java 通用的阻塞队列(BlockingQueue)一样。下游消费者消费变慢,上游就会受到阻塞。

5.Flink的反压和Strom有哪些不同?

Storm 是通过监控 Bolt 中的接收队列负载情况,如果超过高水位值就会将反压信息写到 Zookeeper ,Zookeeper 上的 watch 会通知该拓扑的所有 Worker 都进入反压状态,最后 Spout 停止发送 tuple。Flink中的反压使用了高效有界的分布式阻塞队列,下游消费变慢会导致发送端阻塞。二者最大的区别是Flink是逐级反压,而Storm是直接从源头降速。

全部内容在[git](https://gitee.com/zjlalaforgit/interview)上,了解更多请点我头像或到我的主页去获得,谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一些 Flink 面试题及其答案,供您参考: 1. 什么是 FlinkFlink 是一个开源的流处理框架,它提供了高性能、稳定可靠、易于使用的流处理引擎,支持在大规模数据处理时进行实时计算和批处理。 2. Flink 的核心原理是什么? Flink 的核心原理是基于流式数据流处理,它将数据流分成若干个事件流,每个事件流都有自己的处理逻辑,最后将处理后的结果合并成最终结果。 3. Flink 的窗口有哪些类型? Flink 的窗口有以下几种类型: - 时间窗口:按照时间间隔划分数据流。 - 计数窗口:按照数据条数划分数据流。 - 滑动窗口:在时间窗口或计数窗口的基础上增加了一个滑动的步长。 - 会话窗口:按照会话时间间隔划分数据流。 4. Flink 支持哪些语言? Flink 支持 Java 和 Scala 两种语言。 5. Flink 和 Spark Streaming 有什么区别? Flink 和 Spark Streaming 都是实时计算框架,但是它们有以下几个区别: - Flink 更加注重实时计算的性能和稳定性,支持更低的延迟和更高的吞吐量。 - Flink 支持按照事件时间进行窗口计算,而 Spark Streaming 只支持按照处理时间进行计算。 - Flink 支持状态后端的切换,而 Spark Streaming 只支持基于内存的状态存储。 - Flink 支持更多的数据源和 Sink,例如 Apache Kafka、RabbitMQ、Elasticsearch 等,而 Spark Streaming 只支持少量的数据源和 Sink。 6. Flink 的高可用机制是怎样的? Flink 的高可用机制主要包括以下几个方面: - Master 选举:Flink 的 JobManager 采用了 ZooKeeper 进行主从节点的选举,保证当主节点失败时可以快速切换到备用节点。 - 容错机制:Flink 采用了 checkpoint 机制,将流式计算的中间状态保存在分布式文件系统上,当程序出现故障时可以快速恢复。 - 多重副本:Flink 采用了多重副本机制,将数据在多个节点上保存多份,避免因为节点故障导致数据丢失。 7. Flink 的数据流转过程是怎样的? Flink 的数据流转过程包括以下几个阶段: - 数据源:从数据源读取数据。 - 数据转换:对数据进行处理、过滤、聚合等操作。 - 窗口计算:按照窗口对数据进行分组和计算。 - 数据 Sink:将计算结果写入外部存储系统。 8. Flink 的优势是什么? Flink 的优势主要包括以下几个方面: - 支持流式计算和批处理,可以处理大规模的数据流和数据集。 - 支持事件时间窗口计算,保证了计算的准确性。 - 支持多重数据源和 Sink,可以与多种存储系统集成。 - 支持高可用和容错机制,保证计算的稳定性和可靠性。 - 支持灵活的编程模型和 API,易于使用和扩展。 - 支持低延迟和高吞吐量的实时计算。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值