Flink分布式standalone部署方式(第二种方式)

本文详细介绍如何在Hadoop YARN环境中启动并配置Apache Flink集群,包括通过特定URL监控集群状态,以及如何在集群上运行示例WordCount任务。此外,还深入探讨了如何自定义Flink任务,从修改Maven配置到提交自定义Jar到Flink集群的过程。

接着上面一节中介绍的,浏览器中输入地址http://swarm-manager:8088/cluster,输出如下:
在这里插入图片描述
拿到application_1569070146084_0001,然后在控制台先kill掉:./yarn application -kill application_1569070146084_0001
在这里插入图片描述
在这里插入图片描述

Run a single Flink job on YARN

之前介绍了在一个Hadoop Yarn 环境中启动一个Flink集群,此外,还可以仅仅通过执行一个任务来启动一个flink
./bin/flink run -m yarn-cluster -yn 1 ./examples/batch/WordCount.jar
其中-m yarn-cluster表示使用yarn集群,-yn 1表示taskmanager的数量。
这个任务提交后,很快就可以运行完成:
在这里插入图片描述

自定义一个任务,并提交到Flink集群中

写一个最简单的代码

public class JavaHDFSBatchApp {
    public static void main(String[] args) throws Exception {
        ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
        DataSource<String> dataSource = env.readTextFile("hdfs://swarm-manager:9000/LICENSE-2.0.txt");
        dataSource.print();
    }
}

在原有的maven基础上修改pom.xml文件,指定main class:

<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-shade-plugin</artifactId>
				<version>3.0.0</version>
				<executions>
					<!-- Run shade goal on package phase -->
					<execution>
						<phase>package</phase>
						<goals>
							<goal>shade</goal>
						</goals>
						<configuration>
							<artifactSet>
								<excludes>
									<exclude>org.apache.flink:force-shading</exclude>
									<exclude>com.google.code.findbugs:jsr305</exclude>
									<exclude>org.slf4j:*</exclude>
									<exclude>log4j:*</exclude>
								</excludes>
							</artifactSet>
							<filters>
								<filter>
									<!-- Do not copy the signatures in the META-INF folder.
									Otherwise, this might cause SecurityExceptions when using the JAR. -->
									<artifact>*:*</artifact>
									<excludes>
										<exclude>META-INF/*.SF</exclude>
										<exclude>META-INF/*.DSA</exclude>
										<exclude>META-INF/*.RSA</exclude>
									</excludes>
								</filter>
							</filters>
							<transformers>
								<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
									<mainClass>com.vincent.course08.JavaHDFSBatchApp</mainClass>
								</transformer>
							</transformers>
						</configuration>
					</execution>
				</executions>
			</plugin>

maven install生成文件springboot-flink-train-1.0-shaded.jar,导入到/home/iie4bu/app/flink-1.8.2/examples/batch下,然后运行命令:./bin/flink run -m yarn-cluster -yn 1 ./examples/batch/springboot-flink-train-1.0-shaded.jar

<think>嗯,用户想了解Flink的高可用部署,我需要详细解释清楚。首先,得回忆一下Flink的高可用性机制,尤其是基于Standalone和YARN模式的不同。可能要从架构组件开始,比如JobManager的高可用,因为它是关键。 用户可能已经知道Flink的基础,但需要深入高可用部分。应该分点说明,比如高可用原理、部署步骤、配置要点,还有注意事项。需要确保每个部分都结构清晰,逐步引导用户理解。 高可用通常依赖ZooKeeper,所以得提到ZK的作用,比如领导者选举和状态存储。要解释JobManager的主备切换流程,以及如何通过ZooKeeper实现。资源管理器方面,Standalone和YARN的区别可能需要分开讨论,特别是YARN模式下如何自动重启JobManager。 配置参数是关键,比如high-availability模式设为zookeeper,配置ZK地址,文件系统存储路径。这些配置示例要准确,避免用户出错。另外,HA的存储目录需要外部系统,如HDFS或S3,这点必须强调,否则用户可能会忽略导致部署失败。 部署步骤方面,Standalone模式需要修改配置文件,启动ZooKeeper集群,然后是JobManager和TaskManager。而YARN模式则有所不同,可能更依赖YARN本身的资源管理,自动处理故障转移,但需要配置application master的重试次数。 注意事项部分,要提醒ZK集群的稳定性,存储系统的可靠性,网络和硬件冗余的重要性。还有监控和日志的必要性,帮助用户排查问题。可能用户在实际部署中会遇到配置错误或者依赖服务的问题,所以这些点都要覆盖到。 需要检查是否遗漏了重要配置项,比如high-availability.cluster-id,还有文件系统路径的正确格式。确保示例中的端口和地址是占位符,提醒用户替换实际信息。另外,版本差异可能影响配置,比如不同Flink版本是否有参数变化,但用户没有指定版本,所以保持通用性。 最后,总结高可用部署的意义,确保用户理解各个组件协作的重要性,以及正确配置带来的容错能力。可能用户是系统管理员或开发人员,需要实际操作指南,所以步骤和配置示例要具体,避免过于理论化。</think>Flink高可用部署的核心是通过冗余组件和故障自动转移机制,确保集群在节点故障时仍能持续运行。以下是分步说明: 1. **高可用原理** - **JobManager冗余**:至少部署2个及以上JobManager节点,通过ZooKeeper实现主备选举 - **状态持久化**:将JobManager的元数据存储到分布式存储系统(如HDFS) - **故障检测**:ZooKeeper监控节点存活状态,触发故障转移 $$ \text{故障转移时间} = \text{检测间隔} + \text{恢复时间} $$ 2. **部署架构** ```mermaid graph TD A[ZooKeeper集群] -->|领导者选举| B(Active JobManager) A -->|状态同步| C(Standby JobManager) B -->|任务调度| D[TaskManager集群] C -->|热备| D ``` 3. **关键配置(conf/flink-conf.yaml)** ```yaml # 高可用模式 high-availability: zookeeper # ZooKeeper地址 high-availability.zookeeper.quorum: zk1:2181,zk2:2181,zk3:2181 # 存储路径(需HDFS/S3路径) high-availability.storageDir: hdfs:///flink/ha/ # 集群唯一ID high-availability.cluster-id: /default-cluster ``` 4. **部署步骤** - **Standalone模式**: 1. 在所有节点部署Flink 2. 启动ZooKeeper集群 3. 修改配置文件后依次启动JobManager: ```bash # 第一个节点 bin/jobmanager.sh start # 后续节点 bin/jobmanager.sh start --host <ip> --webui-port 8081 ``` 4. 启动TaskManager节点 - **YARN模式**: 1. 配置yarn-site.xml启用资源持久化 2. 提交任务时设置HA参数: ```bash bin/flink run -m yarn-cluster \ -yD high-availability=zookeeper \ -yD high-availability.zookeeper.quorum=zk1:2181,zk2:2181,zk3:2181 ``` 5. **验证方法** ```bash # 查看当前Leader echo stat | nc zk1 2181 | grep Mode # 模拟故障(kill JobManager进程) # 观察日志中是否触发新选举 ``` 6. **注意事项** - ZooKeeper集群建议至少3节点 - 存储路径high-availability.storageDir必须所有JobManager可访问 - 网络延迟需小于zk会话超时时间(默认60000ms) - 建议配置监控: - JobManager进程状态 - ZooKeeper连接数 - 故障转移次数指标:`flink_jobmanager_numFailedCheckpoints` **典型故障场景处理**: 当Active JobManager宕机时: 1. ZooKeeper检测到会话过期(默认60秒) 2. 剩余JobManager发起新选举 3. 新Leader从持久化存储恢复作业状态 4. TaskManager重新注册到新JobManager 5. 作业继续从最近检查点恢复 实际生产环境建议配合K8s Operator实现更完善的Pod故障自愈能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值