阿里云E-MapReduce这个ossref 是这样写的吧?

阿里云E-MapReduce这个ossref 是这样写的吧?org.apache.flink.client.deployment.ClusterDeploymentException: Couldn't deploy Yarn Application Cluster
at org.apache.flink.yarn.YarnClusterDescriptor.deployApplicationCluster(YarnClusterDescriptor.java:472)
at org.apache.flink.client.deployment.application.cli.ApplicationClusterDeployer.run(ApplicationClusterDeployer.java:67)
at org.apache.flink.client.cli.CliFrontend.runApplication(CliFrontend.java:214)
at org.apache.flink.client.cli.CliFrontend.parseAndRun(CliFrontend.java:1081)
at org.apache.flink.client.cli.CliFrontend.lambda$main$10(CliFrontend.java:1156)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1730)
at org.apache.flink.runtime.security.contexts.HadoopSecurityContext.runSecured(HadoopSecurityContext.java:41)
at org.apache.flink.client.cli.CliFrontend.main(CliFrontend.java:1156)
Caused by: org.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme "ossref"
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:3281)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:3301)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:124)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:3352)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:3320)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:479)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:365)
at org.apache.flink.yarn.Utils.lambda$getQualifiedRemoteSharedPaths$1(Utils.java:651)
at org.apache.flink.configuration.ConfigUtils.decodeListFromConfig(ConfigUtils.java:133)
at org.apache.flink.yarn.Utils.getRemoteSharedPaths(Utils.java:661)
at org.apache.flink.yarn.Utils.getQualifiedRemoteSharedPaths(Utils.java:647)
at org.apache.flink.yarn.YarnClusterDescriptor.startAppMaster(YarnClusterDescriptor.java:807)
at org.apache.flink.yarn.YarnClusterDescriptor.deployInternal(YarnClusterDescriptor.java:616)
at org.apache.flink.yarn.YarnClusterDescriptor.deployApplicationCluster(YarnClusterDescriptor.java:465)
-Dyarn.provided.lib.dirs=ossref://user/202119786/flink_app/flink-connector-kafka-1.15.1.jar \

展开
收起
真的很搞笑 2024-02-15 08:55:01 166 分享 版权
阿里云 AI 助理回答

根据您提供的错误信息和知识库内容,问题的核心是ossref文件系统方案(scheme)未被Hadoop的FileSystem类识别,导致Flink在提交YARN Application Cluster时失败。以下是详细的分析和解决方案:


问题分析

  1. 错误信息解析

    • 错误堆栈显示org.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme "ossref",表明Hadoop无法识别ossref作为文件系统的scheme。
    • ossref通常用于引用OSS上的资源,但它需要特定的配置才能被Hadoop或Flink正确解析。
  2. 可能的原因

    • Hadoop配置中缺少对ossref的支持。
    • Flink作业提交时未正确加载JindoSDK或其他支持OSS的依赖。
    • 提交命令中使用了不正确的路径格式。
  3. 相关知识库支持

    • 根据知识库,JindoSDK提供了对阿里云OSS的支持,并兼容Hadoop OSS Connector。
    • 知识库提到,Flink作业可以通过jfs://oss://前缀访问OSS,但未提及ossref的具体用法。
    • 知识库指出,JindoSDK支持多种Credential Provider设置方式,但需要正确配置。

解决方案

步骤一:确认Hadoop配置是否支持ossref

  1. 检查Hadoop的core-site.xml配置文件,确保已添加以下内容以支持OSS:

    <property>
       <name>fs.oss.impl</name>
       <value>com.aliyun.jindodata.oss.JindoOssFileSystem</value>
    </property>
    <property>
       <name>fs.AbstractFileSystem.oss.impl</name>
       <value>com.aliyun.jindodata.oss.OSS</value>
    </property>
    

    注意:如果使用ossref,需要额外确认其是否被JindoSDK支持。若不支持,建议改用oss://

  2. 如果未安装JindoSDK,请参考知识库安装并配置JindoSDK。

步骤二:修改Flink作业提交命令

  1. ossref://替换为oss://,并确保路径格式正确。例如:

    -Dyarn.provided.lib.dirs=oss://user/202119786/flink_app/flink-connector-kafka-1.15.1.jar
    
  2. 如果必须使用ossref,请确认其是否需要额外的依赖或插件支持。目前知识库中未明确提及ossref的用法,建议联系阿里云技术支持获取进一步指导。

步骤三:验证依赖加载

  1. 确保Flink集群中已加载JindoSDK的相关依赖。可以通过以下方式检查:

    • 在Flink客户端或集群节点上运行以下命令,确认JindoSDK JAR包是否存在:
      ls $FLINK_HOME/lib | grep jindo
      
    • 如果缺失,请将JindoSDK JAR包复制到$FLINK_HOME/lib目录下。
  2. 如果使用的是EMR集群,确保集群版本支持JindoSDK。根据知识库,EMR-5.17.x版本已包含JindoSDK。

步骤四:测试路径访问

  1. 使用hadoop fs命令测试OSS路径是否可访问。例如:

    hadoop fs -ls oss://user/202119786/flink_app/
    

    如果命令执行成功,说明OSS路径配置正确。

  2. 如果路径不可访问,请检查以下配置项:

    • jindofsx.oss.accessKeyId
    • jindofsx.oss.accessKeySecret
    • jindofsx.oss.endpoint

    配置方法可参考知识库。

步骤五:重新提交Flink作业

  1. 修改后的提交命令示例:

    flink run-application \
       -t yarn-application \
       -Dyarn.provided.lib.dirs=oss://user/202119786/flink_app/flink-connector-kafka-1.15.1.jar \
       /opt/apps/FLINK/flink-current/examples/streaming/TopSpeedWindowing.jar
    
  2. 如果问题仍然存在,请检查Flink日志以获取更多调试信息。


重要提醒

  • 加粗提示ossref的使用可能存在兼容性问题,建议优先使用oss://作为文件系统scheme。
  • 如果必须使用ossref,请联系阿里云技术支持确认其具体用法和支持情况。
  • 确保所有依赖和配置均已正确加载,避免因环境问题导致作业提交失败。

通过以上步骤,您可以解决UnsupportedFileSystemException问题并成功提交Flink作业。如果仍有疑问,请提供更多上下文信息以便进一步分析。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

阿里云EMR是云原生开源大数据平台,为客户提供简单易集成的Hadoop、Hive、Spark、Flink、Presto、ClickHouse、StarRocks、Delta、Hudi等开源大数据计算和存储引擎,计算资源可以根据业务的需要调整。EMR可以部署在阿里云公有云的ECS和ACK平台。

还有其他疑问?
咨询AI助理