通常flink打包的时候会依赖很多flink相关的依赖,最后打出来的jar包非常大。在spark里面on yarn模式下,我们可以在spark下,通过将spark jars上传到hdfs的目录下,然后在提交任务的时候指定spark.yarn.jars配置就可以实现,thin jar的方式提交,这样会节省很多的网络带宽资源。
在flink1.11之后也可以实现这样的操作,如下:
1.先将flink的lib、opt、plugins等目录上传到hdfs的目录下:hdfs://myhdfs/remote-flink-dist-dir。
2.提交任务的时候指定yarn.provided.lib.dirs配置为hdfs的路径。
./bin/flink run-application -t yarn-application \
-Djobmanager.memory.process.size=2048m \
-Dtaskmanager.memory.process.size=4096m \
-Dyarn.provided.lib.dirs="hdfs://myhdfs/remote-flink-dist-dir" \
./MyApplication.jar
3.或者也可以将用户的任务的jar一起上传到hdfs上,然后提交任务。
./bin/flink run-application -t yarn-application \
-Djobmanager.memory.process.size=2048m \
-Dtaskmanager.memory.process.size=4096m \
-Dyarn.provided.lib.dirs="hdfs://myhdfs/remote-flink-dist-dir" \
hdfs://myhdfs/jars/MyApplication.jar
这将使作业提交更加轻量,因为所需的 Flink jar 和应用程序 jar 将从指定的远程位置获取,而不是由客户端发送到集群。客户端将发送到集群的唯一内容是您的应用程序的配置,其中包括所有上述路径。
参考博客: Apache Flink: Application Deployment in Flink: Current State and the new Application Modehttps://flink.apache.org/news/2020/07/14/application-mode.html
|