彻底了解大数据实时计算框架_flink
差别
这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
彻底了解大数据实时计算框架_flink [2019/12/08 20:59] – 创建 plough | 彻底了解大数据实时计算框架_flink [2019/12/08 21:51] (当前版本) – plough | ||
---|---|---|---|
行 28: | 行 28: | ||
===== Flink 整体架构 ===== | ===== Flink 整体架构 ===== | ||
- | {{wiki:drsi9h.jpg}} | + | {{:pasted: |
- | 从下至上: | + | |
+ | 从下至上: | ||
- 部署: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 支持多种方式部署 ===== | ||
+ | {{: | ||
+ | Flink 是支持以 Standalone、YARN、Kubernetes、Mesos 等形式部署的。 | ||
+ | * Local:直接在 IDE 中运行 Flink Job 时则会在本地启动一个 mini Flink 集群 | ||
+ | * Standalone:在 Flink 目录下执行 bin/ | ||
+ | * YARN:YARN 是 Hadoop 集群的资源管理系统,它可以在群集上运行各种分布式应用程序,Flink 可与其他应用并行于 YARN 中,Flink on YARN 的架构如下: | ||
+ | {{: | ||
+ | * Kubernetes:Kubernetes 是 Google 开源的容器集群管理系统,在 Docker 技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性,Flink 也支持部署在 Kubernetes 上,在 GitHub 看到有下面这种运行架构的。 | ||
+ | {{: | ||
+ | |||
+ | 通常上面四种居多,另外还支持 AWS、MapR、Aliyun OSS 等。 | ||
+ | |||
+ | ===== Flink 分布式运行 ===== | ||
+ | Flink 作业提交架构流程见下图: | ||
+ | {{: | ||
+ | |||
+ | - 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 20:59 由 plough