用户工具

站点工具


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

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
彻底了解大数据实时计算框架_flink [2019/12/08 12:59]
plough 创建
彻底了解大数据实时计算框架_flink [2019/12/08 13:51] (当前版本)
plough
行 28: 行 28:
  
 ===== Flink 整体架构 ===== ===== Flink 整体架构 =====
-{{wiki:drsi9h.jpg}} +{{:pasted:20191208-210604.jpeg}}
-从下至上:+
  
 +从下至上:
   - 部署:Flink 支持本地运行(IDE 中直接运行程序)、能在独立集群(Standalone 模式)或者在被 YARN、Mesos、K8s 管理的集群上运行,也能部署在云上。   - 部署:Flink 支持本地运行(IDE 中直接运行程序)、能在独立集群(Standalone 模式)或者在被 YARN、Mesos、K8s 管理的集群上运行,也能部署在云上。
   - 运行:Flink 的核心是分布式流式数据引擎,意味着数据以一次一个事件的形式被处理。   - 运行:Flink 的核心是分布式流式数据引擎,意味着数据以一次一个事件的形式被处理。
   - API:DataStream、DataSet、Table、SQL API。   - API:DataStream、DataSet、Table、SQL API。
   - 扩展库:Flink 还包括用于 CEP(复杂事件处理)、机器学习、图形处理等场景。   - 扩展库:Flink 还包括用于 CEP(复杂事件处理)、机器学习、图形处理等场景。
 +
 +===== Flink 支持多种方式部署 =====
 +{{:pasted:20191208-210932.png}}
 +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 的架构如下:
 +{{:pasted:20191208-211203.png}}
 +  * Kubernetes:Kubernetes 是 Google 开源的容器集群管理系统,在 Docker 技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性,Flink 也支持部署在 Kubernetes 上,在 GitHub 看到有下面这种运行架构的。
 +{{:pasted:20191208-211338.png}}
 +
 +通常上面四种居多,另外还支持 AWS、MapR、Aliyun OSS 等。
 +
 +===== Flink 分布式运行 =====
 +Flink 作业提交架构流程见下图:
 +{{:pasted:20191208-211854.png}}
 +
 +  - Program Code:我们编写的 Flink 应用程序代码
 +  - Job Client:Job Client 不是 Flink 程序执行的内部部分,但它是任务执行的起点。 Job Client 负责接受用户的程序代码,然后创建数据流,将数据流提交给 Job Manager 以便进一步执行。 执行完成后,Job Client 将结果返回给用户
 +  - Job Manager:主进程(也称为作业管理器)协调和管理程序的执行。 它的主要职责包括安排任务,管理 checkpoint ,故障恢复等。机器集群中至少要有一个 master,master 负责调度 task,协调 checkpoints 和容灾,高可用设置的话可以有多个 master,但要保证一个是 leader, 其他是 standby; Job Manager 包含 Actor system、Scheduler、Check pointing 三个重要的组件
 +  - Task Manager:从 Job Manager 处接收需要部署的 Task。Task Manager 是在 JVM 中的一个或多个线程中执行任务的工作节点。 任务执行的并行性由每个 Task Manager 上可用的任务槽(Slot 个数)决定。 每个任务代表分配给任务槽的一组资源。 例如,如果 Task Manager 有四个插槽,那么它将为每个插槽分配 25% 的内存。 可以在任务槽中运行一个或多个线程。 同一插槽中的线程共享相同的 JVM。
 +
 +同一 JVM 中的任务共享 TCP 连接和心跳消息。Task Manager 的一个 Slot 代表一个可用线程,该线程具有固定的内存,注意 Slot 只对内存隔离,没有对 CPU 隔离。默认情况下,Flink 允许子任务共享 Slot,即使它们是不同 task 的 subtask,只要它们来自相同的 job。这种共享可以有更好的资源利用率。
彻底了解大数据实时计算框架_flink.1575809956.txt.gz · 最后更改: 2019/12/08 12:59 由 plough