flink1.11.0基于java代码实现Application模式的踩坑总结

flink1.11提出了一种新的部署模式:Application模式

以下是在application模式中,通过java代码提交任务遇到的问题以及一些总结:

一、SubmitJobApplicationMode

1、将core-site.xml,flink-conf.yaml,hdfs-site.xml,mapred-site.xml,yarn-site.xml放到resources目录下

2、无法读取到本地的conf文件

org.apache.hadoop.conf.Configuration conf = new org.apache.conf.Configuration();
conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");

3、指定flink下的conf目录

String configurationDirectory = "/opt/flink-1.11.0/conf";

4、将flink目录下的lib目录中的文件上传至hdfs

String flinkLibs = "hdfs://192.168.30.100:8020/flinkApplication/libs";

5、指定要运行flink代码的jar

String userJarPath = "hdfs://192.168.30.100:8020/flinkApplication/jars/demo-1.0-SNAPSHOT.jar";

6、指定flink-yarn_2.11-1.11.0.jar的hdfs路径

String flinkDistJar = "hdfs://192.168.30.100:8020/flinkApplication/yarnJar/flink-yarn_2.11-1.11.0.jar";

7、设置用户jar的参数和主类

ApplicationConfiguration appConfig = new ApplicationConfiguration(args,"com.test.demo.TestDemo");

8、pom文件中


    org.apache.hadoop
    hadoop-client
    3.0.0
    provided

    org.apache.flink
    flink-yarn_${scala.binary.version}
    ${flink.version}
    
        
            org.apache.hadoop
            hadoop-yarn-common
        
    

二、StopYarnJob

1、指定yarn的ApplicationId

2、指定flink的jobId

3、指定flink的savePoint的地址(hdfs上)

三、linux运行

java    -cp    demo-1.0-SNAPSHOT.jar    cluster.SubmitJobApplicationMode

四、其他问题:

根据flink官方文档:

在flink-conf.yaml中,配置参数:

rest.bind-port: 50010

 在防火墙后面的YARN上运行Flink

一些YARN群集使用防火墙来控制群集与网络其余部分之间的网络流量。在这些设置中,只能将Flink作业从群集网络内部(在防火墙之后)提交到YARN会话。如果这对于生产用途不可行,则Flink允许为其REST端点配置端口范围,该端口范围用于客户端群集通信。配置了此范围后,用户还可以将作业提交给穿越防火墙的Flink。

用于指定REST端点端口的配置参数如下:

  • rest.bind-port

此配置选项接受单个端口(例如:“ 50010”),范围(“ 50000-50025”)或两者的组合(“ 50010,50011,50020-50025,50050-50075”)。

请确保rest.port未指定配置选项,因为该选项优先于rest.bind-port并且不接受范围。

(Hadoop使用的是类似的机制,其中的配置参数称为yarn.app.mapreduce.am.job.client.port-range。)

参考文章

flink教程-详解flink 1.11中的新部署模式-Application模式

完整代码请参考:
https://github.com/zhangjun0x01/bigdata-examples/blob/master/flink/src/main/java/cluster/SubmitJobApplicationMode.java

你可能感兴趣的:(大数据)