大数据实时计算领域
流式及批量分析应用:数据实时采集、计算和下游发送
实时数据仓库和ETL(extract transform load)
核心概念
streams:有界流(固定大小的数据),无界流(随时间增加而增长)
state:进行流式计算过程中的信息
time:event time、ingestion time、processing time,判断业务状态是否滞后、延迟的依据
api:不同抽象级别支持开发流式或批处理程序
算子链:多个算子放在一个任务中,由同一个线程执行,减少线程间的切换、消息序列反序列化、数据在缓冲区的交换,减少延迟的同时提高吞吐量
集群中两类进程
- jobmanager集群管理者,负责调度任务、协调checkpoints、协调故障恢复、收集job状态信息,管理flink集群从节点taskManager
- taskmanager,jvm进程;执行计算的worker,执行flink job上的一组task,所在节点的管理员,负责将本节点服务器信息:内存、磁盘、任务运行情况告诉jobManager
- client用户先创建客户端再提交flink工程
task slot:计算资源子集;taskmanager使用独立线程执行task,为控制taskmanager能接受*个task提出task slot概念,一个taskmanager的计算资源被task slot平分,不同的task在不同的slot执行,用来做内存隔离,对cpu不起作用,so同一个jvm的task共享tcp连接,提高运行效率、降低资源消耗
- 分布式缓存:flink提供分布式缓存类型hadoop,分布式环境中每一个taskmanager保存同一份数据或文件,当前计算节点的task像读取本地文件一样拉取这些配置
- 故障恢复:配置jobmanager.execution.failover-strategy值可为full(task故障时所有task重启)region局部重启
- 重启策略:restart-strategy值可为none(任务直接退出)fixed-delay(据用户配置重试次数隔*时间重试)failure-rate(失败率重启,指定时间内超过*次失败了job失败)
- 并行度:算子级别>执行环节级别>提交任务级别>系统配置级别
- 水印watermark,解决实时计算中数据乱序问题,本质是datastream中带时间戳的元素,是flink判断迟到数据的标准,也是窗口触发的标记