1、checkpoint与状态后端的关系?
每传入一条数据,有状态的算子任务都会读取和更新状态。状态的存储、访问以及维护,由一个可插入的组件决定,这个组件就是状态后端。
状态后端将检查点(checkpoint)状态写入远程存储,说白了状态后端就是保存checkpoint的。
2、领导要扩充集群,运维说磁盘不够给扩充,为啥需要加节点?
1、因为不是磁盘不够,是cpu和内存资源不够用,所以要加节点。 2、加节点是为了解决算力资源问题,不是空间问题。
3、如果不想加节点,那就给升级目前机器的配置,比如把32c/64g升级到64c/128g,这样也是一样的。
3、建议是 core = 1/2 倍 slot,CPU利用率高
4、多个cdc监控同一张表,要指定每一个cdc serverid啊,有参数可以配置,可以看官网
链接: 多个cdc监控同一张表
可以看里边中文版FAQ,有问题的解决方案。
5、taskmanager 作为一个JVM进程,在yarn下是运行于container中的,而container是yarn的参数 最大、最小分配核心数控制。
flink TaskManager 这个container的核心数 不仅是和 受最大最小核心数控制也和调度有关
容量调度时
yarn默认情况下是使用“DefaultResourceCalculator”分配策略,只根据内存调度cpu资源,所以flink on yarn运行的时候,在yarn的资源管理页面上看到每个容器的vcore个数还是
相关配置在capacity-scheduler.xml 文件
DominarResourceCalculator 会综合考虑内存+flink slot个数来考虑给的核心数
使用公平调度时 可以参考官网
yarn.containers.vcores解释
The number of virtual cores (vcores) per YARN container. By default, the number of vcores is set to the number of slots per TaskManager, if set, or to 1, otherwise. In order for this parameter to be used your cluster must have CPU scheduling enabled. You can do this by setting the
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler.
注: 改配置不会超过yarn-site.xml配置文件中单个容器核心数的最大值 默认8或者通过-Dyarn.containers.vcores=3 强行指定核心数。
6、Kafka的精准一次性
①首先Flink的内部一定是exactly-once的.因为他利用了CheckPoint机制,把状态存盘,发生故障的时候可以从HDFS文件系统中恢复.
②如果你的Source是kafka的话.可不可以做到呢?
可以的.因为kafka的source是可以做到偏移量(offset)重置的.而且可以随意重置.甚至Flink他会自动帮我重置的.就是在故障恢复的时候他会自动帮我重置的.所以代码我都可以不用写.
③那Sink,kafka支持什么呢?
kafka支持两阶段提交.实际上说白了就是真正意义上的事务.
这个一个前提条件,就是你必须在kafka的配置文件中设置隔离级别和开启我们kafka的事务.这是kafka的配置,是需要我们自己去配的.他和我们Flink的代码是没有关系的.
而且我们kafka 的producer的sink本身就继承了这个TwoPhaseCommitSinkFunction(两阶段提交函数). 上面我们说过有两个父类.一个支持预写日志(WAL)的父类GenriceWriteAheadSink模板类,这个模板类就是父类.还有一个是两阶段提价(2PC)的父类
sink段如果是mysql ,那就使用事务。
7、
processFunction是富函数的高阶,也就是富函数实现不了的功能,那么就让processFunction实现。
如果一个需求要输出到测输出流、用到定时器,那么只能用processfunction了。