Flink的部署介绍

本文介绍了Flink的三种部署模式:Local-cluster适用于测试与学习;Standalone为独立集群模式,适用于生产环境;Yarn模式利用Yarn进行资源调度,包括Session-Cluster、Per-Job-Cluster及Application Mode等子模式。

local-cluster模式

Flink中的Local-cluster(本地集群)模式,主要用于测试, 学习。

1.flink官网下载 Apache Flink: Stateful Computations over Data Streams

2.解压至工具目录,将其复制并改名为flink-local

3.把上个文章中的无界流处理wordcount的API打包为jar包传入flink-local目录

4.启动本地集群

bin/start-cluster.sh

5.在hadoop102中启动netcat

nc -lk 9999

6.命令行提交Flink应用

bin/flink run -m hadoop102:8081 -c com.hpu.flink.wd_test.stream_test02 ./flink_test-1.0-SNAPSHOT.jar 

7.在浏览器中输入http://hadoop102:8081/查看应用执行情况,也可以在log文件中.out文件查看

 8.也可以在WEB UI提交应用

 Standalone模式

        Standalone模式又叫独立集群模式。

1.解压至工具目录,将其复制并改名为flink-standalone

2.修改配置文件:flink-conf.yaml

jobmanager.rpc.address: hadoop102

3.修改配置文件:workers

hadoop102

hadoop103

hadoop104

4.把上个文章中的无界流处理wordcount的API打包为jar包传入flink-local目录

5.启动本地集群

启动bin/start-cluster.sh
 bin/flink run -m hadoop102:8081 -c com.hpu.flink.wd_test.stream_test02 ./flink_test-1.0-SNAPSHOT.jar

5.查看结果与local方式一致,可以在网页提交任务

Yarn模式

        独立部署(Standalone)模式由Flink自身提供计算资源,无需其他框架提供资源,这种方式降低了和其他第三方资源框架的耦合性,独立性非常强。但是Flink主要是计算框架,而不是资源调度框架,所以本身提供的资源调度并不是它的强项,所以还是和其他专业的资源调度框架集成更靠谱。

        把Flink应用提交给Yarn的ResourceManager, Yarn的ResourceManager会申请容器从Yarn的NodeManager上面. Flink会创建JobManager和TaskManager在这些容器上。Flink会根据运行在JobManger上的job的需要的slot的数量动态的分配TaskManager资源

 1.解压至工具目录,将其复制并改名为flink-yarn

2.配置环境变量export HADOOP_CLASSPATH=`hadoop classpath`

3.开启任务 bin/flink run -t yarn-per-job -c com.hpu.flink.wd_test.stream_test02 flink_test-1.0-SNAPSHOT(开启监听)

4.点击applicationMaster进入UI界面

 3种部署模式

        Session-Cluster,Application ModePer-Job-Cluster

Session-Cluster

 

 

        Session模式:适合需要频繁提交的多个小job,并且执行时间都不长,因为flink会在yarn中启动一个session集群,这个集群主要用来申请资源的,后续提交的其他作业,都会直接提交到这个session集群中,不需要频繁创建flink集群,这样效率会变高,但是,作业之间相互不隔离。

Session-Cluster模式需要先启动Flink集群,向Yarn申请资源。以后提交任务都向这里提交。这个Flink集群会常驻在yarn集群中,除非手动停止。

        在向Flink集群提交Job的时候, 如果资源被用完了,则新的Job不能正常提交.

        缺点: 如果提交的作业中有长时间执行的大作业, 占用了该Flink集群的所有资源, 则后续无法提交新的job。所以, Session-Cluster适合那些需要频繁提交的多个小Job, 并且执行时间都不长的Job.

Per-Job-Cluster

 

        每提交一个job会在yarn中启动一个flink集群,并且这些作业是相互隔离的,同时main方法是在本地上运行。

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

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

Application Mode

        每提交一个任务(application)可能会包含多个job,一个application对应一个flink集群,main方法是在集群中运行。

        Application Mode会在Yarn上启动集群, 应用jar包的main函数(用户类的main函数)将会在JobManager上执行. 只要应用程序执行结束, Flink集群会马上被关闭. 也可以手动停止集群.

        与Per-Job-Cluster的区别:就是Application Mode下, 用户的main函数是在集群中执行的,并且当一个application中有多个job的话,per-job模式则是一个job对应一个yarn中的application,而Application Mode则这个application中对应多个job。

### Apache Flink 部署指南 #### 集群配置 Apache Flink 支持多种部署模式,包括单机模式、YARN 模式以及 Kubernetes 模式。每种模式都有其适用的场景和特点。 - **单机模式**:适用于开发和测试环境,可以快速启动一个独立的 Flink 集群[^3]。在单机模式下,Flink 作业管理器(JobManager)和任务管理器(TaskManager)运行在同一台机器上。 - **YARN 模式**:适用于生产环境,利用 Hadoop YARN 资源调度框架进行资源管理和分配。通过 `bin/flink` 脚本提交作业到 YARN 集群,例如: ```bash $ bin/flink run -d -t yarn-per-job -c com.test.StreamWordCount FlinkTutorial-1.0-SNAPSHOT.jar ``` 上述命令中的 `-t yarn-per-job` 参数表示使用 YARN per-job 模式,每个 Flink 作业都会启动一个新的 YARN 应用程序[^3]。 - **Kubernetes 模式**:适用于云原生环境,利用 Kubernetes 进行容器编排和管理。可以通过 Helm 图表或直接应用 YAML 文件来部署 Flink Operator 和相关资源[^4]。项目根目录中包含 `charts` 目录用于存放 Helm 图表,`manifests` 目录用于存放可以直接应用于 Kubernetes 集群的 YAML 文件。 #### 应用部署 在实际应用中,Flink 可以与 Apache Kafka 进行集成,实现高效的流处理架构。这种架构利用了 Kafka 的发布-订阅模式作为数据源,并通过 Flink 的有状态机制进行实时数据处理[^1]。 - **数据源集成**:Flink 提供了 Kafka 连接器,可以通过简单的 API 将 Kafka 主题中的数据流读取为 Flink 数据流。例如: ```java Properties properties = new Properties(); properties.setProperty("bootstrap.servers", "localhost:9092"); properties.setProperty("group.id", "flink-consumer-group"); FlinkKafkaConsumer<String> kafkaSource = new FlinkKafkaConsumer<>( "input-topic", new SimpleStringSchema(), properties ); DataStream<String> stream = env.addSource(kafkaSource); ``` - **状态管理**:Flink 的有状态机制允许在流处理过程中维护和更新状态信息,这对于需要持久化中间结果的应用非常有用。状态可以通过检查点(Checkpointing)机制进行定期保存,确保故障恢复时的数据一致性。 - **配置参数**:在部署 Flink 应用时,需要合理配置各种参数以优化性能和可靠性。这些参数包括但不限于并行度、内存大小、网络超时时间等。详细的配置方法可以在 AWS Connectors 使用与部署指南中找到,其中涵盖了项目目录结构、启动文件及配置方法等内容[^2]。 - **Kubernetes Operator**:对于 Kubernetes 环境,Flink 提供了专门的 Operator 来简化部署和管理工作。Operator 包含控制器逻辑,能够自动处理资源的状态同步,确保集群始终处于期望的状态。`controller` 目录中包含了调和逻辑代码,而 `config` 目录则存放了 RBAC 权限配置文件[^4]。 通过上述方式,可以灵活地将 Flink 应用于不同的场景,并结合 Kafka 实现强大的实时数据处理能力。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值