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

请教一下,使用yarn application提交任务的时候,这个我看到官网上说的是需要预先把lib

请教一下,使用yarn application提交任务的时候,这个我看到官网上说的是需要预先把lib上传到hdfs上,有没有什么方式可以不传

展开
收起
巴拉巴拉巴拉 2023-07-28 19:33:00 82 0
3 条回答
写回答
取消 提交回答
  • 在使用 YARN 提交 Flink 应用程序时,确实需要将应用程序的依赖库上传到 HDFS 上。这是因为 YARN 默认会将应用程序分发到集群中的各个节点,并在每个节点上启动任务。为了确保每个节点上都可以找到应用程序所需的依赖库,需要将这些库提前上传到 HDFS,以便所有节点都能够访问。

    然而,你可以通过以下方式绕过将依赖库上传到 HDFS 的要求:

    1. 使用 Dynamic Classpath:Flink 提供了 Dynamic Classpath 的特性,允许在运行时动态加载类和依赖项。你可以在提交 Flink 应用程序时,使用 ExecutionEnvironmentStreamExecutionEnvironment.addJar() 方法,直接指定本地文件系统上的依赖库路径,而无需事先将其上传到 HDFS:

      env.addJar("file:///path/to/dependency.jar");
      

      这种方式允许直接从本地文件系统加载依赖库,并将其添加到 Flink 应用程序的类路径中。但请注意,这样做的话,你需要确保所有任务执行器所在的节点上都有相同的依赖库可用。

    2. 搭建本地 Maven 仓库:你可以搭建一个本地的 Maven 仓库,用于存储应用程序的依赖库。在提交 Flink 应用程序时,使用 Maven 的 file:// URL 访问本地 Maven 仓库,并通过 .addJar() 方法将依赖库添加到 Flink 应用程序的类路径中。

      env.addJar("file:///path/to/maven/repository/dependency.jar");
      

      这种方式相对灵活,可以避免直接依赖于 HDFS,但需要确保在所有执行任务的节点上都能访问到本地 Maven 仓库。

    需要注意的是,无论选择哪种绕过上传到 HDFS 的方式,都要确保所有执行任务的节点上都能够访问到应用程序所需的依赖库。否则,可能会导致任务启动失败或运行时出错。

    希望以上信息对你有所帮助!如果还有其他问题,请随时提问。

    2023-07-31 22:18:45
    赞同 展开评论 打赏
  • 不传你flink lib里面放进去也行,或者把依赖打到程序包中。

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

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

    在使用YARN提交任务时,确保任务所依赖的库文件已经上传到HDFS,是一个非常重要的步骤。这是因为,YARN会在运行任务时从HDFS中获取任务所需要的资源和依赖库。如果任务所依赖的库文件没有上传到HDFS,可能会导致任务无法正常执行。
    为了上传任务所依赖的库文件,您可以按照以下步骤进行操作:
    将依赖库文件上传到HDFS:使用HDFS命令,将任务所依赖的库文件上传到HDFS中。
    在任务提交命令中添加参数:在使用YARN提交任务的时候,需要在提交命令中添加参数,以告诉YARN任务所需要的资源和依赖库文件的位置。以下是一个提交任务的示例命令:
    Copy
    yarn jar myapp.jar com.example.MyApp -libjars /lib/*.jar -files /conf/myapp.conf
    在上述命令中,-libjars参数用于指定任务所依赖的库文件的位置,-files参数

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

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

相关电子书

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