Flink 是什么
in Note with 0 comment
Flink 是什么
in Note with 0 comment

是的,我们要引入 Flink ,去解决业务分析逻辑给 es 带来巨大压力的问题,所以需要去深入了解 Flink,为了更好地用好 Flink ,为了更好地服务产品。同时 Flink 会成为我们基础设施中最重要的一个。


计算引擎的发展

在国外一些社区,有很多人将大数据的计算引擎分成了 4 代,当然,也有很多人不会认同。我们先姑且这么认为和讨论。

第一代的计算引擎,无疑就是 Hadoop 承载的 MapReduce,它将计算分为两个阶段,分别为 Map 和 Reduce。对于上层应用来说,就不得不想方设法去拆分算法,甚至于不得不在上层应用实现多个 Job 的串联,以完成一个完整的算法,例如迭代计算。

由于这样的弊端,催生了支持 DAG (有向无环图)框架的产生。因此,支持 DAG 的框架被划分为第二代计算引擎。如 Tez 以及更上层的 Oozie。不过对于当时的 Tez 和 Oozie 来说,大多还是批处理的任务。

接下来就是以 Spark 为代表的第三代的计算引擎。第三代计算引擎的特点主要是 Job 内部的 DAG 支持(不跨越 Job),以及强调的实时计算。在这里,很多人也会认为第三代计算引擎也能够很好的运行批处理的 Job。

Flink 的诞生就被归在了第四代。这应该主要表现在 Flink 对流计算的支持,以及更一步的实时性上面。当然 Flink 也可以支持 Batch 的任务,以及 DAG 的运算。

Flink 是什么

其实早在 2008 年,Flink 的前身已经是柏林理工大学一个研究性项目, 在 2014 被 Apache 孵化器所接受,然后迅速地成为了 ASF(Apache Software Foundation)的顶级项目之一。

Apache Flink 是一个面向数据流处理和批量数据处理的可分布式的开源计算平台。Flink 的核心是流式执行模型(streaming execution model),在流引擎之上构建批处理,覆盖本机迭代支持,托管内存和程序优化。

Flink 在实现流处理和批处理时,与传统的一些方案完全不同,它从另一个视角看待流处理和批处理,将二者统一起来:Flink是完全支持流处理,也就是说作为流处理看待时输入数据流是无界的;批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的。

Flink 整体架构

1547200212989-2fb9e9db-5315-4623-be68-3943c3421ba4-image.png

从图中,我们可以了解到 Flink 几个最基础的概念,Client、JobManager 和 TaskManager。Client 用来提交任务给 JobManager,JobManager 分发任务给 TaskManager 去执行,然后 TaskManager 会心跳的汇报任务状态,TaskManager 之间是流(Stream)。

Flink 整体组件栈

1547193790418-facf54d8-7a92-43c4-9b89-c13901ee7abc-image.png

Flink 生态圈技术栈

1547193806757-8265d34a-8e2e-495e-8c0f-a40126a2bd97-image.png

这里不再进一步叙述,总之 Flink 的生态圈的 Stack 是稳健的。

竞品比较

相对于其他流处理系统的容错方案,Flink基于分布式快照的方案在功能和性能方面都具有很多优点,包括:

总结

嗯,Flink 很牛逼就对了。

Responses