读取文件,读取socket,基于集合,自定义source(SourceFunction|KafkaSource),kafkaSource
map,flatmap.filter,union,key
- 可以用于DataStream
- 可以用于keyBy之后,可以对于同一个可key的数据做处理
- 可以用于window之后,可以对一个窗口内地数据做处理
print,写入文件,写入socket(测试),自定义sink(SinkFunction,Rich function),kafkaSink
application-为每一个任务单独在yarn中启动一个flink的集群(jobmanager,taskmanager),数据流程图在jobmanager中构建
per job-为每个任务单独在yarn中启动一个flink集群(jobmanager,taskmanager),数据流程图在本地中构建
在提交到jobmanager
yarn session-现在yarn集群中启动一个flink的集群(jobmanager),所有的使用session模式提交的任务共用一个jobmanager,但是任务之间会有影响,一般用于测试。在提交任务的时候在动态的申请taskmanager,任务结束后就会释放taskmanager。提交方式:页面提交,命令行提交,远程rpc提交
checkpoint时flink的容错机制
flink通过checkpoint将计算过程的状态持久化到外部系统中,如果任务执行失败,可以从checkpoint的位置恢复保证数据的完整性
checkpoint流程:
- Jobmanager会定时的向source task 发送trigger
- source task 在数据流中安插barrier
- source task 将barrier 向下游传递,同时自己会同步做快照,并异步将状态持久化到hdfs中
- 将下游task收到上游所有的实例的barrier后就会作快照
- 当所有的task处理完同一次的checkpoint之后,一次checkpoint完成
- jobmanager会删除掉旧的checkpoint文件,保留最新的
可以理解为flink计算过程中产生的中间结果
- valueState
- listState
- mapState
- reducingState aggState
状态会被checkpoint持久滑倒hdfs中,如果任务执行失败,还可以挥复
kafka的副本机制,每一个分区有多个副本,可以保证数据不会丢失
生产者的等幂性,同一条数据由于各种原因重试多次,不会导致数据的重复
ack机制
acks=0, 生产者只负责生产数据,不管kafka是否保存成功, 会丢失数据,生产效率高
acks=1 (默认),生产者会等待第一个副本数据保存成功,再返回数据发生成功,如果这个时间第-个副本所在的节点挂了,会导致数据丢失
acks=-1, 生产者需要等待所有的副本数据都保存成功才返回成功,不会丢失数据,效率低
事务