【Flink原理和应用】:Blink做了哪些改进

1. Runtime

  1. 引入了可插拔的Shuffle策略。
  2. 自定义调度器,开发者根据计算模型自身的特点定制不同调度器。
  3. Blink可以更加灵活地将算子chain在一起,避免不必要的数据传输。
  4. 引入全新的JM FailOver机制,JM 发生错误之后,新的 JM 会重新接管整个 JOB 而不是重启 JOB,从而大大减少了 JM FailOver 对 JOB 的影响。

2. SQL/TableAPI

  1. 提出了全新的 Query Processor(QP):它包括了一个优化层(Query Optimizer)和一个算子层(Query Executor)。这样一来,流计算和批计算的在这两层大部分的设计工作就能做到尽可能地复用。
  2. SQL 和 TableAPI 的程序最终执行的时候将不会翻译到 DataStream 和 DataSet 这两个 API 上,而是直接构建到可运行的 DAG 上来,这样就使得物理执行算子的设计不完全依赖底层的 API,有了更大的灵活度,同时执行代码也能够被灵活的 codegen 出来。
  3. Blink 引入了二进制的数据结构 BinaryRow,极大的减少了数据存储上的开销以及数据在序列化和反序列化上计算的开销。
  4. 引入CodeGen 技术。
  5. Blink 加入了 miniBatch 的执行模式:使流计算减少了很多IO。
  6. 批计算方面,首先 Blink batch SQL 能够完整地跑通 TPC-H 和 TPC-DS,且性能上较Spark有3-5倍的提升。

3. Hive兼容性

  1. 在元数据(meta data)和数据层将 Flink 和 Hive 对接和打通。这样子可以直接用 Flink SQL 去查询 Hive 的数据,真正能够做到在 Hive 引擎和 Flink 引擎之间的自由切换。

4. Zeppelin for Flink

  1. 提供更好的可视化和交互式体验。

5. Flink Web

  1. 在资源使用方面,新增了 Cluster、TaskManager 与 Job 三个级别的资源信息,使得资源的申请与使用情况一目了然。
  2. 作业的拓扑关系及数据流向可以追溯至 Operator 级别,Vertex 增加了 InQueue,OutQueue 等多项指标,可以方便的追踪数据的反压、过滤及倾斜情况。
  3. TaskManager 和 JobManager 的日志功能得到大幅度加强,从 Job、Vertex、SubTask 等多个维度都可以关联至对应日志,提供多日志文件访问入口,以及分页展示查询和日志高亮功能。
  4. 我们使用了较新的 Angular 7.0 对 Flink web 进行了全面重构,页面运行性能有了一倍以上的提升。

参考:

  1. https://github.com/apache/flink/tree/blink

你可能感兴趣的:(Flink,Flink原理和应用)