flink入门到精通

1、lambada架构需要同时搭建批处理(保证数据准确)和流处理(低延迟)两套架构。而flink结合spark-streaming(高吞吐,数据准确性)和storm(低延迟)的优点,这样相当于一套架构实现了lambada架构。
2、flink,spark streaming,storm区别

  • flink和spark streaming都能保持exactlyonce,但是spark为了实现exactlyonce要做的东西很多操作
  • flink吞吐量比storm大,storm只能保持“至少一次”语意,storm不支持状态管理
  • flink是真正流处理,spark streaming是微批处理
  • flink的数据模型是dataflow,即数据流,sparkstreaming是dstream,即rdd的集合

3、flink流的wordcount中,经过map keyBy sum算的单词总数是累计值,即sum的是keyedstream的一个分区的总数据
4、flink有standalone,yarn,k8s集群模式
yarn模式下,rm会在一个nodemanager启动一个am,然后在这个am上启动flink的jobmanager,然后在其他的nodemanager启动taskmanager
5、一个slot是一个并行度,一个slot运行部分数据的整个代码流程,而spark里面一个task运行一个部分数据的某个stage代码流程
6、operator chain: 对于one-to-one的算子(窄依赖),并且并行度(分区)一样的,可以将这些算子任务封装成一个operator chain,这样一个operator chain里面的算子之间就不用进行网络传输,序列化等操作了,提升效率。其实类似于spark的stage,遇到shuffle操作就分为两个operator chain。但是flink的operator chain可以由代码控制哪些算子合并为一个operator chain
7、sparkstreaming读取Kafka,需要在程序最后面自己提交偏移量保证消费准确性。而flink消费Kafka不需要,flink自动保证这方面的准确
8、官方实现了kafkasink,essink,redissink等,但是没有实现mysqlsink,所以需要自己实现
9、window()必须在keyby后面才能使用,windowall在datastream上使用,即所有数据在一个分区
11、flink端到端的exactlyonece:以下的这些策略在flink里面都实现了,不用自己实现

  • source端:利用flink-kafka-consumer可以保持source端offset的exactlyonece
  • 内部:利用checkpoint保持exactlyonece
  • sink端:
    幂等写入
    事务写入:实现方式一:预写日志。二:两阶段提交

12、table api and sql:就是将流转换成表,然后对表进行sql操作,最后将表转换成流
13、状态管理
1)checkpoint
2)state
keyed state:基于keyedstream的状态,每一个key对应一个state。有这几种状态类型:ValueState;ListState;MapState;
operator state:非keyedstream的状态。与operator绑定的state,整个operator(transform算子)对应一个state
14、flink核心api: DataStream(流处理)和DataSet(批处理)
15、keyBy() (根据key的哈希值重新分区,分组)
16、Flink运行时包含两种类型的进程:

  • 该JobManagers(也称为Masters)协调分布式执行。他们安排任务,协调检查点,协调故障恢复等。总是至少有一个Job
    Manager。高可用性设置将具有多个JobManagers,其中一个始终是Leader,其他人处于待机状态。
  • 该TaskManagers(也叫worker)执行任务(或者更具体地说,子任务)的数据流,以及缓冲器和交换数据流。必须始终至少有一个TaskManager

一个TaskManager有多个slot,一个 Slot 代表一个可用线程,该线程具有固定的内存,注意 Slot 只对内存隔离,没有对 CPU 隔离
17、Flink任务提交后,Client向HDFS上传Flink的Jar包和配置,之后向Yarn ResourceManager提交任务,ResourceManager分配Container资源并通知对应的NodeManager启动ApplicationMaster, ApplicationMaster启动后加载Flink的Jar包和配置构建环境,然后启动JobManager,之后ApplicationMaster向ResourceManager申请资源启动TaskManager,ResourceManager分配Container资源后,由ApplicationMaster通知资源所在节点的NodeManager启动TaskManager,NodeManager加载Flink的Jar包和配置构建环境并启动TaskManager,TaskManager启动后JobManager发送心跳包,并

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值