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

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

1.用过Flink中的分布式缓存吗?如何使用?

Flink实现的分布式缓存和Hadoop有异曲同工之妙。目的是在本地读取文件,并把他放在 taskmanager 节点中,防止task重复拉取。

val env = ExecutionEnvironment.getExecutionEnvironment

// register a file from HDFS

env.registerCachedFile("hdfs:///path/to/your/file", "hdfsFile")

// register a local executable file (script, executable, ...)

env.registerCachedFile("file:///path/to/exec/file", "localExecFile", true)

// define your program and execute

... val input: DataSet[String] = ... val result: DataSet[Integer] = input.map(new MyMapper())

... env.execute()

2.说说Flink中的广播变量,使用时需要注意什么?

我们知道Flink是并行的,计算过程可能不在一个 Slot 中进行,那么有一种情况即:当我们需要访问同一份数据。

那么Flink中的广播变量就是为了解决这种情况。我们可以把广播变量理解为是一个公共的共享变量,我们可以把一个dataset 数据集广播出去,然后不同的task在节点上都能够获取到,这个数据在每个节点上只会存在一份。

3.说说Flink中的窗口?

Flink 支持两种划分窗口的方式,按照time和count。如果根据时间划分窗口,那么它就是一个time-window 如果根据数据划分窗口,那么它就是一个count-window。flink支持窗口的两个重要属性(size和interval)如果size=interval,那么就会形成tumbling-window(无重叠数据) 如果size>interval,那么就会形成sliding-window(有重

叠数据) 如果size< interval, 那么这种窗口将会丢失数据。比如每5秒钟,统计过去3秒的通过路口汽车的数据,将会漏掉2秒钟的数据。通过组合可以得出四种基本窗口:

time-tumbling-window 无重叠数据的时间窗口,设置方式举例:timeWindow(Time.seconds(5))

time-sliding-window 有重叠数据的时间窗口,设置方式举例:timeWindow(Time.seconds(5), Time.seconds(3))

count-tumbling-window无重叠数据的数量窗口,设置方式举例:countWindow(5)

count-sliding-window 有重叠数据的数量窗口,设置方式举例:countWindow(5,3)

4.说说Flink中的状态存储?

Flink在做计算的过程中经常需要存储中间状态,来避免数据丢失和状态恢复。选择的状态存储策略不同,会影响状态持久化如何和 checkpoint 交互。Flink提供了三种状态存储方式:MemoryStateBackend、FsStateBackend、RocksDBStateBackend。

5.Flink中的时间有哪几类

Flink 中的时间和其他流式计算系统的时间一样分为三类:事件时间,摄入时间,处理时间三种。

如果以EventTime 为基准来定义时间窗口将形成EventTimeWindow,要求消息本身就应该携带EventTime。

如果以IngesingtTime 为基准来定义时间窗口将形成 IngestingTimeWindow,以 source 的systemTime为准。

如果以ProcessingTime 基准来定义时间窗口将形成 ProcessingTimeWindow,以 operator 的systemTime 为准。

全部内容在[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、付费专栏及课程。

余额充值