开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

请教各位大佬一个问题,我使用yarn application提交任务的时候,怎么样可以带上我应用程序

请教各位大佬一个问题,我使用yarn application提交任务的时候,怎么样可以带上我应用程序的lib依赖

展开
收起
巴拉巴拉巴拉 2023-07-28 19:33:52 98 0
3 条回答
写回答
取消 提交回答
  • 在使用 YARN 提交 Flink 应用程序时,可以通过以下几种方式来包含应用程序的依赖库:

    1. 使用 Assembly JAR:将所有应用程序及其依赖打包到一个可执行的 JAR 文件中,通常称为 "assembly JAR"。这样,你可以直接将该 JAR 文件提交给 YARN,YARN 会将其分发到集群中的各个节点,并包含在应用程序的类路径中。

    2. 使用 Uber JAR:Uber JAR 是将应用程序、Flink 运行时以及所有依赖项合并到一个大的 JAR 文件中的一种技术。这样做可以简化部署过程,但也会导致 JAR 文件变得非常大。你可以使用相关工具(如 Maven 或 Gradle)来构建 Uber JAR,并将其提交给 YARN。

    3. 使用库缓存目录(Library Cache Directory):如果你不想打包所有依赖到 JAR 文件中,你可以将依赖的库上传到 Hadoop 分布式缓存(Hadoop Distributed Cache)中。在 Flink 的 flink-conf.yaml 配置文件中,设置 env.java.opts 参数指定依赖的库所在的目录,例如:

      env.java.opts: "-Djava.library.path=<lib_cache_directory>"
      

      <lib_cache_directory> 是 HDFS 上的目录路径,用于存放依赖的库。然后,在提交应用程序时,将该目录传递给 YARN,并将其添加到应用程序的类路径中。

    4. 使用 Flink 提供的 Dynamic Classpath(动态类路径):Flink 提供了 Dynamic Classpath 的特性,允许你在运行时动态地加载类和依赖项。你可以将依赖的库上传到 HDFS 或其他文件系统中,并通过设置 fs.hdfs.hadoopconf 参数来指定文件系统配置。然后,使用 .addJar() 方法将依赖的库添加到 Flink 程序的类路径中:

      env.registerCachedFile("hdfs://<dependency_path>#<dependency_name>", "<dependency_name>");
      

      <dependency_path> 是依赖库的路径,<dependency_name> 是依赖库的名称。之后,在 Flink 程序中可以使用 ExecutionEnvironmentStreamExecutionEnvironment.addJar() 方法来添加该依赖。

    2023-07-31 22:17:27
    赞同 展开评论 打赏
  • -Dyarn.provided.lib.dirs

    此答案来自钉钉群“【2】Apache Flink China 社区"

    2023-07-29 16:36:06
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    在使用YARN提交应用程序时,可以将应用程序打包成一个可执行的JAR文件,并在提交命令中指定JAR包的位置。以下是一个提交应用程序的示例命令:
    Copy
    yarn jar myapp.jar com.example.MyApp -arg1 value1 -arg2 value2
    在上述命令中,myapp.jar是应用程序的JAR包文件,com.example.MyApp是应用程序的入口类,-arg1和-arg2是应用程序所需要的参数。您可以根据自己的实际情况,修改上述命令,以适应您的应用程序。
    如果您的应用程序依赖于其他库文件,可以使用-libjars参数指定库文件的位置,例如:
    Copy
    yarn jar myapp.jar com.example.MyApp -libjars /lib/.jar -arg1 value1 -arg2 value2
    在上述命令中,-libjars参数用于指定应用程序所依赖的库文件的位置,/lib/
    .jar表示将所有/lib/目录下的JAR文件都添加到应用程序的classpath中。

    2023-07-29 13:43:41
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
深度学习+大数据 TensorFlow on Yarn 立即下载
Docker on Yarn 微服务实践 立即下载
深度学习+大数据-TensorFlow on Yarn 立即下载