Flink WaterMaker详解 Posted 2023-04-15
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink WaterMaker详解相关的知识,希望对你有一定的参考价值。
参考技术A
WaterMaker 水位线在很多地方都有应用, 其含义也不尽相同, 在Flink中,水位线是用来触发窗口计算的 其本质相当于一个flink流中的一个 带时间戳的Event , Flink在处理这个特殊 Event 的时候, 会认为该 Event携带的时间戳 之前时间的所有数据都已经到了。 因此根据这个特性会触发相关窗口的计算逻辑。
主要就是用来解决数据乱序问题
因为Flink是分布式并行计算的, 所以水位的传递不是线性那么简单
这是一张官网的图,我们来解读一下加深理解。
恩恩恩~~~~这部分就省略了.... 随便翻翻都有一堆.....
Flink 配置文件详解
前面文章我们已经知道 Flink 是什么东西了,安装好 Flink 后,我们再来看下安装路径下的配置文件吧。
安装目录下主要有 flink-conf.yaml 配置、日志的配置文件、zk 配置、Flink SQL Client 配置。
flink-conf.yaml
基础配置
123456789101112131415161718192021
# jobManager 的IP地址jobmanager.rpc.address: localhost# JobManager 的端口号jobmanager.rpc.port: 6123# JobManager JVM heap 内存大小jobmanager.heap.size: 1024m# TaskManager JVM heap 内存大小taskmanager.heap.size: 1024m# 每个 TaskManager 提供的任务 slots 数量大小taskmanager.numberOfTaskSlots: 1# 程序默认并行计算的个数parallelism.default: 1# 文件系统来源# fs.default-scheme
高可用性配置
1234567891011
# 可以选择 ‘NONE‘ 或者 ‘zookeeper‘.# high-availability: zookeeper# 文件系统路径,让 Flink 在高可用性设置中持久保存元数据# high-availability.storageDir: hdfs:///flink/ha/# zookeeper 集群中仲裁者的机器 ip 和 port 端口号# high-availability.zookeeper.quorum: localhost:2181# 默认是 open,如果 zookeeper security 启用了该值会更改成 creator# high-availability.zookeeper.client.acl: open
容错和检查点 配置
1234567891011
# 用于存储和检查点状态# state.backend: filesystem# 存储检查点的数据文件和元数据的默认目录# state.checkpoints.dir: hdfs://namenode-host:port/flink-checkpoints# savepoints 的默认目标目录(可选)# state.savepoints.dir: hdfs://namenode-host:port/flink-checkpoints# 用于启用/禁用增量 checkpoints 的标志# state.backend.incremental: false
web 前端配置
12345678
# 基于 Web 的运行时监视器侦听的地址.#jobmanager.web.address: 0.0.0.0# Web 的运行时监视器端口rest.port: 8081# 是否从基于 Web 的 jobmanager 启用作业提交# jobmanager.web.submit.enable: false
高级配置
123456789101112131415
# io.tmp.dirs: /tmp# 是否应在 TaskManager 启动时预先分配 TaskManager 管理的内存# taskmanager.memory.preallocate: false# 类加载解析顺序,是先检查用户代码 jar(“child-first”)还是应用程序类路径(“parent-first”)。 默认设置指示首先从用户代码 jar 加载类# classloader.resolve-order: child-first# 用于网络缓冲区的 JVM 内存的分数。 这决定了 TaskManager 可以同时拥有多少流数据交换通道以及通道缓冲的程度。 如果作业被拒绝或者您收到系统没有足够缓冲区的警告,请增加此值或下面的最小/最大值。 另请注意,“taskmanager.network.memory.min”和“taskmanager.network.memory.max”可能会覆盖此分数# taskmanager.network.memory.fraction: 0.1# taskmanager.network.memory.min: 67108864# taskmanager.network.memory.max: 1073741824
Flink 集群安全配置
1234567891011
# 指示是否从 Kerberos ticket 缓存中读取# security.kerberos.login.use-ticket-cache: true# 包含用户凭据的 Kerberos 密钥表文件的绝对路径# security.kerberos.login.keytab: /path/to/kerberos/keytab# 与 keytab 关联的 Kerberos 主体名称# security.kerberos.login.principal: flink-user# 以逗号分隔的登录上下文列表,用于提供 Kerberos 凭据(例如,`Client,KafkaClient`使用凭证进行 ZooKeeper 身份验证和 Kafka 身份验证)# security.kerberos.login.contexts: Client,KafkaClient
Zookeeper 安全配置
12345
# 覆盖以下配置以提供自定义 ZK 服务名称# zookeeper.sasl.service-name: zookeeper# 该配置必须匹配 "security.kerberos.login.contexts" 中的列表(含有一个)# zookeeper.sasl.login-context-name: Client
HistoryServer
12345678910111213141516
# 你可以通过 bin/historyserver.sh (start|stop) 命令启动和关闭 HistoryServer# 将已完成的作业上传到的目录# jobmanager.archive.fs.dir: hdfs:///completed-jobs/# 基于 Web 的 HistoryServer 的地址# historyserver.web.address: 0.0.0.0# 基于 Web 的 HistoryServer 的端口号# historyserver.web.port: 8082# 以逗号分隔的目录列表,用于监视已完成的作业# historyserver.archive.fs.dir: hdfs:///completed-jobs/# 刷新受监控目录的时间间隔(以毫秒为单位)# historyserver.archive.fs.refresh-interval: 10000
查看下另外两个配置 slaves / master
2、slaves
里面是每个 worker 节点的 IP/Hostname,每一个 worker 结点之后都会运行一个 TaskManager,一个一行。
3、masters
host:port
4、zoo.cfg
123456789101112131415161718
# 每个 tick 的毫秒数tickTime=2000# 初始同步阶段可以采用的 tick 数initLimit=10# 在发送请求和获取确认之间可以传递的 tick 数syncLimit=5# 存储快照的目录# dataDir=/tmp/zookeeper# 客户端将连接的端口clientPort=2181# ZooKeeper quorum peersserver.1=localhost:2888:3888# server.2=host:peer-port:leader-port
5、日志配置
Flink 在不同平台下运行的日志文件
1234567
log4j-cli.propertieslog4j-console.propertieslog4j-yarn-session.propertieslog4j.propertieslogback-console.xmllogback-yarn.xmllogback.xml
sql-client-defaults.yaml
12345678910111213141516171819202122232425
execution:
Flink sql client :你可以从官网这里了解 https://ci.apache.org/projects/flink/flink-docs-stable/dev/table/sqlClient.html
总结
本文拿安装目录文件下的配置文件讲解了下 Flink 目录下的所有配置。
你也可以通过官网这里学习更多:https://ci.apache.org/projects/flink/flink-docs-stable/ops/config.html
以上是关于Flink WaterMaker详解的主要内容,如果未能解决你的问题,请参考以下文章
从0到1Flink的成长之路(二十)-Time与Watermaker
Flink详解JobGraph
Flink Checkpoint 机制详解
Flink详解Flink的八种分区
Flink详解系列之六--窗口机制
Flink 配置文件详解