-
- Standalone 模式
-
-
- 安装
-
解压缩flink-1.10.1-bin-scala_2.12.tgz, 进入 conf 目录中。
修改 flink/conf/flink-conf.yaml 文件:
-
-
-
- 修改 /conf/slaves 文件:
-
-
分发给另外两台机子:
-
-
-
- 启动:
-
-
访问 http://localhost:8081 可以对 flink 集群和任务进行监控管理。
-
-
- 提交任务
-
- 准备数据文件(如果需要)
把含数据文件的文件夹,分发到taskmanage 机器中
如果从文件中读取数据, 由于是从本地磁盘读取, 实际任务会被分发到
taskmanage 的机器中, 所以要把目标文件分发。
执行程序
- 到目标文件夹中查看计算结果
注意: 如果计算结果输出到文件, 会保存到 taskmanage 的机器下, 不会在
jobmanage 下。
- 在webui 控制台查看计算过程
-
- Yarn 模式
以 Yarn 模式部署 Flink 任务时, 要求 Flink 是有 Hadoop 支持的版本, Hadoop 环境需要保证版本在 2.2 以上, 并且集群中安装有 HDFS 服务。
-
-
- Flink on Yarn
-
Flink 提供了两种在 yarn 上运行的模式,分别为 Session-Cluster 和 Per-Job-Cluster
模式。
Session-cluster 模式:
Session-Cluster 模式需要先启动集群, 然后再提交作业, 接着会向 yarn 申请一块空间后, 资源永远保持不变。如果资源满了, 下一个作业就无法提交, 只能等到yarn 中的其中一个作业执行完成后, 释放了资源, 下个作业才会正常提交。所有作业共享 Dispatcher 和 ResourceManager; 共享资源; 适合规模小执行时间短的作业。
在 yarn 中初始化一个 flink 集群, 开辟指定的资源, 以后提交任务都向这里提交。这个 flink 集群会常驻在 yarn 集群中, 除非手工停止。
- Per-Job-Cluster 模式:
一个 Job 会对应一个集群,每提交一个作业会根据自身的情况,都会单独向 yarn 申请资源, 直到作业执行完成, 一个作业的失败与否并不会影响下一个作业的正常提交和运行。独享 Dispatcher 和 ResourceManager,按需接受资源申请;适合规模大长时间运行的作业。
每次提交都会创建一个新的 flink 集群,任务之间互相独立,互不影响,方便管理。任务执行完成之后创建的集群也会消失。
-
-
- Session Cluster
-
- 启动hadoop 集群(略)
- 启动yarn-session
其中:
-n(--container): TaskManager 的数量。
-s(--slots): 每个 TaskManager 的 slot 数量,默认一个 slot 一个 core,默认每个taskmanager 的 slot 的个数为 1, 有时可以多一些 taskmanager, 做冗余。
-jm: JobManager 的内存( 单位 MB)。
-tm: 每个 taskmanager 的内存( 单位 MB)。
-nm: yarn 的 appName(现在 yarn 的 ui 上的名字)。
-d: 后台执行。
- 执行任务
- 去yarn 控制台查看任务状态
- 取消yarn-session
-
-
- Per Job Cluster
-
-
-
-
- 启动hadoop 集群(略)
-
-
-
-
-
- 不启动yarn-session,直接执行job
-
-
-
- Kubernetes 部署
容器化部署时目前业界很流行的一项技术,基于 Docker 镜像运行能够让用户更加方便地对应用进行管理和运维。 容器管理工具中最为流行的就是 Kubernetes
( k8s), 而 Flink 也在最近的版本中支持了 k8s 部署模式。
- 搭建Kubernetes 集群(略)
- 配置各组件的yaml 文件
在 k8s 上构建 Flink Session Cluster,需要将 Flink 集群的组件对应的 docker 镜像分别在 k8s 上启动, 包括 JobManager、TaskManager、JobManagerService 三个镜像服务。每个镜像服务都可以从中央镜像仓库中获取。
- 启动Flink Session Cluster
- 访问Flink UI 页面
集群启动后,就可以通过 JobManagerServicers 中配置的 WebUI 端口,用浏览器输入以下 url 来访问 Flink UI 页面了:
http://{JobManagerHost:Port}/api/v1/namespaces/default/services/flink-jobmanage r:ui/proxy