Flink作为一个软件栈,是一个分层系统。栈的不同层相互叠加,并提高它们接受的程序表示的抽象级别:
- 运行时(runtime)层以JobGraph的形式接收程序。JobGraph是一个通用的并行数据流,其中包含消费数据流和生成数据流的任务。
- DataStream API和DataSet API都可以通过各自的编译过程生成JobGraphs。DataSet API使用优化器(optimizer)来确定程序的最佳计划,而DataStream API使用流构建器(stream builder)。
- JobGraph是根据Flink中可用的各种部署选项执行的(例如,本地(local)、远程(remote)、YARN等)。
- 与Flink绑定的库和API生成DataSet或者DataStream API程序。这些表用于执行逻辑表上的查询,FlinkML用于机器学习,Gelly用于图处理。