点击下载:Flink On K8s实战课程2023 提取码: 2y46
目前项目中用到Flink作为离线ETL处理构建相关的特征系统,而特征系统主要是为数据科学家、数据工程师、机器学习工程师去使用,用来去构建AI特征库,用来做模型的训练、用来做数据测试以及一些数据的预测及模型的在线服务,主要特征系统是从大数据Hbase、Hive以及关系型数据库去拉取相应的库表,存储到特征库表中,而本身K8S 云原生也是相关的趋势,为什么flink 要基于K8s做部署?
主要有以下几个优势:
容器环境容易部署、清理和重建:不像是虚拟环境以镜像进行分发部署起来对底层系统环境依赖小,所需要的包都很方便的集成到镜像中。
更好的隔离性与安全性,应用部署以pod启动,pod之间相互独立,资源环境隔离后更安全。
k8s集群能够利用好资源,机器学习、在线服务等许多任务都可以混合部署。
云原生的趋势,丰富的k8s生态。
编写K8s资源描述文件
从Flink on Kubernetes 的架构如上图所示,Flink 任务在 Kubernetes 上运行的步骤有:
(1)首先往 Kubernetes 集群提交了资源描述文件后,会启动 Master 和 Worker 的 container。
(2)Master Container 中会启动 Flink Master Process,包含 Flink-Container ResourceManager、JobManager 和 Program Runner。
(3)Worker Container 会启动 TaskManager,并向负责资源管理的 ResourceManager 进行注册,注册完成之后,由 JobManager 将具体的任务分给 Worker Container ,再由 Container 去执行。
(4)需要说明的是,Master Container 与Worker Container是用一个镜像启动的,只是启动参数不一样,如下图所示,两个deployment文件的镜像是同一个。
首先,它会向 K8s Master 申请创建 Flink ConfigMap,在 ConfigMap 中提供了 Flink 集群运行所需要的配置,如:flink-conf.yaml 和 log4j.properties;
其次,创建 Flink JobManager 的 service,通过 service 来打通 TaskManager 和 JobManager 之间的联通性;
然后,创建 Flink Jobmanager 的 Deployment,用来启动 JobMaster,包含的组件有 Dispatcher 和 Resource manager。
最后,创建 Flink TaskManager 的 Deployment,用来启动 TaskManager,因为 Flink 官方 taskmanager-deployment.yaml 示例中指定了 2 个副本,所以图中展示了 2 个 TM 节点
标签:Container,启动,Flink,JobManager,Master,2023,K8s From: https://blog.51cto.com/u_16204320/7317584