FLINK LOCAL 模式启动过程源码阅读(二)

从StreamExecutionEnvironment跟进去可以看到,实现类里面有个LocalStreamEnvironment,这个就是local模式启动的入口从 StreamExecutionEnvironment.execute() 进去

public JobExecutionResult execute() throws Exception {
   
		return execute(DEFAULT_JOB_NAME);
	}

public JobExecutionResult execute(String jobName) throws Exception {
   
		Preconditions.checkNotNull(jobName, "Streaming Job name should not be null.");

		return execute(getStreamGraph(jobName));
	}

看到getStreamGraph(jobName) 先构建StreamGraph(有关Graph有关的构建之后说明)。
接着可以跟到execture(getStreamGraph(jobName))进入localStreamEnvironment 如下方法

@Override
public JobExecutionResult execute(StreamGraph streamGraph) throws Exception {
   
	JobGraph jobGraph = streamGraph.getJobGraph();
	jobGraph.setAllowQueuedScheduling(true);

	Configuration configuration = new Configuration();
	configuration.addAll(jobGraph.getJobConfiguration());
	configuration.setString(TaskManagerOptions.MANAGED_MEMORY_SIZE, "0");

	// add (and override) the settings with what the user defined
	configuration.addAll(this.configuration);

	if (!configuration.contains(RestOptions.BIND_PORT)) {
   
		configuration.setString(RestOptions.BIND_PORT, "0");
	}
    // 设置slot数量根据最大并行度(也就是编码的时候设置的并行度)
	int numSlotsPerTaskManager = configuration.getInteger(TaskManagerOptions.NUM_TASK_SLOTS, jobGraph.getMaximumParallelism());

	MiniClusterConfiguration cfg = new MiniClusterConfiguration.Builder()
		.setConfiguration(configuration)
		.setNumSlotsPerTaskManager(numSlotsPerTaskManager)
		.build();

	if (LOG.isInfoEnabled()) {
   
		LOG.info("Running job on local embedded Flink mini cluster");
	}
    //创建本地的迷你cluster
	MiniCluster miniCluster = new MiniCluster(cfg);

	try {
   
		miniCluster.start();
		configuration.setInteger(RestOptions.PORT, miniCluster.getRestAddress().get().getPort());

		return miniCluster.executeJobBlocking(jobGraph);
	
Flink standalone模式是一种使用Apache Flink进行分布式计算的方式。它使用了集群模式,其中一个节点担任JobManager的角色,负责接收和调度任务,其他节点担任TaskManager的角色,负责执行任务。 当我们启动Flink standalone模式时,首先我们需要启动JobManager。在启动JobManager之前,我们需要配置flink-conf.yaml文件,其中包括JobManager的地址和端口号等信息。然后,我们使用命令行工具来启动JobManager,通过命令"bin/start-cluster.sh"执行。启动成功后,我们可以在日志中看到JobManager的地址和端口号。 接下来,我们需要启动一些TaskManager节点来执行任务。我们可以在不同的机器上启动多个TaskManager节点,以便实现并行计算。启动TaskManager的方式类似于启动JobManager,我们需要配置flink-conf.yaml文件,并使用命令行工具启动TaskManager。 一旦所有的节点启动成功,并且JobManager和TaskManager之间的通信设置正确,Flink standalone集群就可以正常工作了。 当我们提交一个Flink任务时,它首先会通过JobManager获得一个执行计划。执行计划描述了任务的整体结构和执行流程。然后,JobManager会将计划发送给TaskManager,并启动任务的执行。 在任务执行过程中,JobManager负责监控任务的进度,并负责任务的恢复和故障处理。TaskManager负责实际执行任务的计算逻辑,并将中间结果发送给其他的TaskManager或JobManager。任务执行完成后,JobManager会汇总结果并返回给客户端。 总结起来,Flink standalone模式启动流程可以简单描述为:配置好集群的信息和通信设置,启动JobManager和TaskManager节点,提交任务,JobManager分配并发送执行计划给TaskManager,TaskManager执行任务逻辑并返回结果,JobManager汇总结果并返回给客户端。整个过程中,JobManager负责任务的调度和监控,TaskManager负责任务的执行和结果的传输。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值