Flink学习笔记(三):任务提交详细流程

本文详细介绍了Flink的本地(local)、独立(standalone)和YARN三种提交模式,包括各自的使用场景和区别。重点讨论了YARN模式下的yarn-session和yarn-cluster,详细阐述了它们的工作原理和提交流程,并分析了在使用YARN模式后切换到standalone模式时遇到的问题及解决方法。
摘要由CSDN通过智能技术生成

1.Flink多种提交方式对比

常用提交方式分为local,standalone,yarn三种。

  • local:本地提交项目,可纯粹的在本地单节点运行,也可以将本地代码提交到远端flink集群运行。
  • standalone:flink集群自己完成资源调度,不依赖于其他资源调度器,需要手动启动flink集群。
  • yarn:依赖于hadoop yarn资源调度器,由yarn负责资源调度,不需要手动启动flink集群。需要先启动yarn和hdfs。又分为yarn-session和yarn-cluster两种方式。提交Flink任务时,所在机器必须要至少设置环境变量YARN_CONF_DIRHADOOP_CONF_DIRHADOOP_CONF_PATH中的一个,才能读取YARN和HDFS的配置信息(会按三者从左到右的顺序读取,只要发现一个就开始读取。如果没有正确设置,会尝试使用HADOOP_HOME/etc/hadoop),否则提交任务会失败。

1.1 local模式

local即本地模式,可以不依赖hadoop,可以不搭建flink集群。一般在开发时调试时使用。

1.1.1 纯粹的local模式运行

就是直接运行项目中的代码的方式,例如直接在idea中运行。创建ExecutionEnvironment的方式如下:

// getExecutionEnvironment()方法可以根据flink运用程序如何提交判断出是那种模式提交
//ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
ExecutionEnvironment env = ExecutionEnvironment.createLocalEnvironment();
1.1.2 local使用remote的方式运行

这种方式可以将本地代码提交给远端flink集群运行,需要指定集群的master地址。在flink集群的web ui会存在Running Job/Compaleted Jobs的记录。

public class TestLocal {
   
    public static void main(String[] args) throws Exception {
   

        ExecutionEnvironment env = ExecutionEnvironment.createRemoteEnvironment("remote_ip", 8090, "D:\\code\\flink-local.jar");

        System.out.println(env.getParallelism());

        env.readTextFile("hdfs://remote_ip:9000/tmp/test.txt")
                .print();
    }
}
1.1.3 本地提交到remote集群

例如有如下项目代码:

public class TestLocal {
   
    public static void main(String[] args) throws Exception {
   
        ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
        env.readTextFile("hdfs://remote_ip:9000/tmp/test.txt")
                .print();
    }
}

将项目打成jar包,在本机上使用flink run 指定集群的模式提交(这个机器可以不是flink集群的节点,但需要在local机器上有flink提交命令,)。如:

./flink run -m remote_ip:8090 -p 1 -c com.test.TestLocal /home/hdp/flink-local.jar
# -m flink 集群地址
# -p 配置job的并行度
# -c Job执行的main class

也会在flink web ui界面显示结果。

1.2 standalone模式

上面讲了flink在local机器上进行提交,需要指定flink的master信息。
standalone模式提交也是类似,不过可以不用指定master节点,还有个区别就是,提交是在flink集群的机器节点上。
两个提交命令示例:

# 前台提交
./flink run -p 1 -c com.test
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值