序列化

  • flink可以将任何可序列化的对象转化为流,自带的序列化器有:
    • 基本类型:String、Long、Integer、Boolean、Array
    • 复合类型:Tuples、POJOs、scala case class
  • POJO 满足以下所有条件,将识别为POJO
    • 类:public且独立(无 非静态内部类)
    • 类:有public的无参构造函数
    • 类及父类:除了static、transient的属性,下面两个条件任意满足一个:
      • 属性有public getter setter方法
      • 属性是public 且非final
  • transient:添加本属性的参数 不会被序列化 ```java //示例: public class Person { public String name;
    public Integer age;
    public Person() {} public Person(String name, Integer age) {
    1. . . .
    } }

Person person = new Person(“Fred Flintstone”, 35); ```


Flink三大组件

  • jobManager:申请资源、对task进行分发-调度-容错、检查点操作
    • JobMaster(每个job独有一个):负责每个job的dataflow、检查点
    • ResourceManager(job共用):负责taskManager中slot的调度、向资源平台yarn申请 释放资源
    • Dispatcher(job共用):分发作业、为每个job启动JobMaster、启动一个webUI
  • taskManager:slot的数量表示并发处理task的数量。
    • slot目前仅仅隔离内存 而不会隔离CPU
  • Flink Client: 将批处理或流处理编译成dataflow,提交到jobManager
    • 命令行界面
    • REST 端点
    • SQL 客户端
    • Python REPL

image.png