Flink学习01 - Flink部署

学习资料

尚硅谷2021最新Java版Flink(武老师清华硕士,原IBM-CDL负责人)
我的flink练习代码地址(github)

Flink部署

Flink部署 - Standalone模式

启动flink

./bin/start-cluster.sh

停止flink

./bin/stop-cluster.sh

配置文件

  • conf/flink-conf.yaml
    • 主要配置项,内存、插槽等设置
    • 插槽可执行任务数量(默认为1)(推荐为CPU核心数):taskmanager.numberOfTaskSlots: 6
  • conf/masters
    • jobmanager,提交job的入口。localhost:8081
  • conf/slaves
    • taskmanager,任务管理者。可配集群

并行度优先级

单行代码 > 代码全局设置 > 提交任务时参数 > 集群配置文件中的默认并行度

socketTextStream - socket文本流默认并行度为1,设置不设置都是1

命令行提交job

./bin/flink run -c com.seafyliang.streamWordCount -p 3 /Users/seafyliang/DEV/Code_projects/Java_projects/study_projects/flink_study/target/flink_study-1.0-SNAPSHOT.jar --host localhost --port 7777

-c Entry Class 包名

-p Parallelism 并行度

—host —port 参数

如出现Job has been submitted with JobID 4560e07abc8fe42285e7b7075ef5d676,则提交成功

在这里插入图片描述

命令行取消job

./bin/flink list查看job目录

./bin/flink cancel jobID根据jobID取消job

在这里插入图片描述

./bin/flink list -a查看所有(包含被取消的)job目录

在这里插入图片描述

查看Flink输出

TaskManager -> stdout

在这里插入图片描述

Flink部署 - Yarn模式

最常见的资源管理平台:Yarn和K8S

​ 以Yarn模式部署Flink任务时,要求Flink是有Hadoop支持的版本,Hadoop环境需要保证版本在2.2以上,并且集群中安装有HDFS服务。

Flink on Yarn

​ Flink提供了两种在yarn上运行的模式,分别为Session-Cluster(会话集群模式)和Per-Job-Cluster(单一作业集群模式)模式。

1)Session-cluster模式:

在这里插入图片描述

​ Session-Cluster模式需要先启动集群,然后再提交作业,接着会向yarn申请一块空间后,资源永远保持不变。如果资源满了,下一个作业就无法提交,只能等到yarn中的其中一个作业执行完成后,释放了资源,下个作业才会正常提交。所有作业共享Dispatcher和ResourceManager;共享资源;适合规模小执行时间短的作业。

在yarn中初始化一个flink集群,开辟指定的资源,以后提交任务都向这里提交。这个flink集群会常住在yarn集群中,除非手工停止。

2)Per-Job-Cluster模式:

在这里插入图片描述

​ 一个Job会对应一个集群,每提交一个作业会根据自身的情况,都会单独向yarn申请资源,直到作业执行完成,一个作业的失败与否并不会影响下一个作业的正常提交和运行。独享Dispatcher和ResourceManager,按需接受资源申请;适合规模大长时间运行的作业。

每次提交都会创建一个新的flink集群,任务之间互相独立,互不影响,方便管理。任务执行完成之后创建的集群也会消失。

Session Cluster

  1. 启动hadoop集群

  2. 启动yarn-session

    ./yarn-session.sh -n 2 -s 2 -jm 1024 -tm 1024 -nm test -d

    其中:

    • -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:后台执行。

在这里插入图片描述

  1. 执行任务

    ./bin/flink run -c com.seafyliang.streamWordCount -p 3 /Users/seafyliang/DEV/Code_projects/Java_projects/study_projects/flink_study/target/flink_study-1.0-SNAPSHOT.jar --host localhost --port 7777

  2. 去yarn控制台查看任务状态

在这里插入图片描述

  1. 取消yarn-session

    yarn applicaion --kill application_1577588252906_0001

Per Job Cluster

  1. 启动hadoop集群

  2. 不启动yarn-session,直接执行job

    ./bin/flink run -m yarn-cluster -c com.seafyliang.streamWordCount -p 3 /Users/seafyliang/DEV/Code_projects/Java_projects/study_projects/flink_study/target/flink_study-1.0-SNAPSHOT.jar --host localhost --port 7777

Flink部署 - Kubernetes模式

​ 容器化部署时目前业界很流行的一项技术,基于 Docker 镜像运行能够让用户更 加 方 便 地 对 应 用 进 行 管 理 和 运 维 。 容 器 管 理 工 具 中 最 为 流 行 的 就 是 Kubernetes (k8s),而 Flink 也在最近的版本中支持了 k8s 部署模式。

  1. 搭建Kubernetes集群

  2. 配置各组件的yaml文件

    在 k8s 上构建 Flink Session Cluster,需要将 Flink 集群的组件对应的 docker 镜像 分别在 k8s 上启动,包括 JobManager、TaskManager、JobManagerService 三个镜像 服务。每个镜像服务都可以从中央镜像仓库中获取。

  3. 启动Flink Session Cluster

//启动jobmanager-service服务

kubectl create -f jobmanager-service.yaml 

//启动jobmanager-deployment服务

kubectl create -f jobmanager-deployment.yaml 

//启动taskmanager-deployment服务

kubectl create -f taskmanager-deployment.yaml 
  1. 访问Flink UI页面

    集群启动后,就可以通过 JobManagerServicers 中配置的 WebUI 端口,用浏览器输入以下 url 来访问 Flink UI 页面了: http://{JobManagerHost:Port}/api/v1/namespaces/default/services/flink-jobmanager:ui/proxy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值