yarn.provided.lib.dirs参数如官网所描述,它能够在提交作业时从你指定的HDFS目录中获取依赖,从而不必在每次本地提交作业时都将依赖也一同提交,我们使用下试试,首先将工程依赖包上传至HDFS目录/user/dev/flink-1.14.0-dependency,在提交时加上yarn.provided.lib.dirs参数并指定依赖包所在HDFS目录:
/opt/flink-1.14.0/bin/flink run-application \
-t yarn-application \
-c kl.Test01 \
-Dyarn.provided.lib.dirs="hdfs://klbigdata/user/dev/flink-1.14.0-dependency \
/home/ec2-user/FlinkSQLDemo/original-FlinkSQL-1.0.jar
提交报错:
The "yarn.provided.lib.dirs" has to also include the lib/, plugin/ and flink-dist jar. In other case, it cannot be used
这个错误说这个参数还要包含lib/、plugin/和flink-dist jar
我们需要做的就是将flink安装目录下的lib、plugins目录上传到HDFS,并在yarn.provided.lib.dirs参数上指定其路径,提交脚本修改后如下:
/opt/flink-1.14.0/bin/flink run-application \
-t yarn-application \
-c kl.Test01 \
-Dyarn.provided.lib.dirs="hdfs://klbigdata/user/dev/flink-1.14.0-dependency;hdfs://klbigdata/user/dev/flink-1.14.0-dependency/lib;hdfs://klbigdata/user/dev/flink-1.14.0-dependency/plugins" \
/home/ec2-user/FlinkSQLDemo/original-FlinkSQL-1.0.jar
提交正常。