用户工具

站点工具


彻底了解大数据实时计算框架_flink

这是本文档旧的修订版!


大数据计算引擎

随着这些年大数据的飞速发展,也出现了不少计算的框架(Hadoop、Storm、Spark、Flink)。在网上有人将大数据计算引擎的发展分为四个阶段。

第一代:Hadoop 承载的 MapReduce 第二代:支持 DAG(有向无环图)框架的计算引擎 Tez 和 Oozie,主要还是批处理任务 第三代:支持 Job 内部的 DAG(有向无环图),以 Spark 为代表 第四代:大数据统一计算引擎,包括流处理、批处理、AI、Machine Learning、图计算等,以 Flink 为代表

重要的是体会各个框架的差异,以及更适合的场景。并进行理解,没有哪一个框架可以完美的支持所有的场景,也就不可能有任何一个框架能完全取代另一个。

数据集类型

  • 无穷数据集:无穷的持续集成的数据集合
  • 有界数据集:有限不会改变的数据集合

常见的无穷数据集:

  • 用户与客户端的实时交互数据
  • 应用实时产生的日志
  • 金融市场的实时交易记录

数据运算模型

  • 流式:只要数据一直在产生,计算就持续地进行
  • 批处理:在预先定义的时间内运行计算,当计算完成时释放计算机资源

Flink 是一个针对流数据和批数据的分布式处理引擎,代码主要是由 Java 实现,部分代码是 Scala。它可以处理有界的批量数据集、也可以处理无界的实时数据集。对 Flink 而言,其所要处理的主要场景就是流数据,批数据只是流数据的一个极限特例而已,所以 Flink 也是一款真正的流批统一的计算引擎。

20191208-210604.jpeg

从下至上:

  1. 部署:Flink 支持本地运行(IDE 中直接运行程序)、能在独立集群(Standalone 模式)或者在被 YARN、Mesos、K8s 管理的集群上运行,也能部署在云上。
  2. 运行:Flink 的核心是分布式流式数据引擎,意味着数据以一次一个事件的形式被处理。
  3. API:DataStream、DataSet、Table、SQL API。
  4. 扩展库:Flink 还包括用于 CEP(复杂事件处理)、机器学习、图形处理等场景。

Flink 是支持以 Standalone、YARN、Kubernetes、Mesos 等形式部署的。

  • Local:直接在 IDE 中运行 Flink Job 时则会在本地启动一个 mini Flink 集群
  • Standalone:在 Flink 目录下执行 bin/start-cluster.sh 脚本则会启动一个 Standalone 模式的集群
  • YARN:YARN 是 Hadoop 集群的资源管理系统,它可以在群集上运行各种分布式应用程序,Flink 可与其他应用并行于 YARN 中,Flink on YARN 的架构如下:

  • Kubernetes:Kubernetes 是 Google 开源的容器集群管理系统,在 Docker 技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性,Flink 也支持部署在 Kubernetes 上,在 GitHub 看到有下面这种运行架构的。

通常上面四种居多,另外还支持 AWS、MapR、Aliyun OSS 等。

彻底了解大数据实时计算框架_flink.1575810829.txt.gz · 最后更改: 2019/12/08 21:13 由 plough

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki