常见问题排查

本文介绍使用文件存储 HDFS 版文件系统SDK时遇到的常见问题及排查方法。

提示java.lang.ClassNotFoundException信息

执行hadoop命令或者任务失败,提示java.lang.ClassNotFoundException: Class com.alibaba.dfs.DistributedFileSystem not found信息时,请按如下步骤进行排查:

  1. 确认文件存储 HDFS 版文件系统SDK(aliyun-sdk-dfs-x.x.x.jar文件)已经放置在所有Hadoop环境下的CLASSPATH中。

    ${HADOOP_HOME}/share/hadoop/hdfs/
  2. 确认执行作业的用户对SDK有可读权限。

  3. 如果hadoop fs命令可以成功运行,但是无法执行分析任务,请确认YARN等任务执行框架在安装完文件存储 HDFS 版文件系统SDK后进行了重启。例如:您可以执行以下命令重启YARN:

    ${HADOOP_HOME}/sbin/stop-yarn.sh
    ${HADOOP_HOME}/sbin/start-yarn.sh

提示No FileSystem for scheme: dfs信息

执行hadoop命令行或者任务失败,提示No FileSystem for scheme: dfs信息时,请按如下步骤进行排查:

  1. 确认如下文件存储 HDFS 版相关配置已经添加到所有Hadoop环境的core-site.xml文件中。

    <configuration>
        <property>
             <name>fs.defaultFS</name>
             <value>dfs://x-xxxxxxxx.cn-xxxxx.dfs.aliyuncs.com:10290</value>
             <!-- 该地址填写您的文件存储HDFS版挂载点地址 -->
        </property>
        <property>
             <name>fs.dfs.impl</name>
             <value>com.alibaba.dfs.DistributedFileSystem</value>
        </property>
        <property>
             <name>fs.AbstractFileSystem.dfs.impl</name>
             <value>com.alibaba.dfs.DFS</value>
        </property>
    </configuration>
  2. 确认执行作业的用户对core-site.xml文件有可读权限。

  3. 如果hadoop fs命令可以成功运行,但是无法执行分析任务,您可以参考应用初始化在代码中直接加载文件存储 HDFS 版相关配置。

提示java.lang.NoClassDefFoundError信息

执行hadoop命令行或者任务失败,提示java.lang.NoClassDefFoundError信息时,请按如下步骤进行排查:

  1. 根据错误日志确认缺少的类是不是com.alibaba.dfs相关类。

  2. 如果缺少的类是com.alibaba.dfs相关的类,请更新您的SDK至最新版本。

  3. 如果与com.alibaba.dfs无关,则说明Hadoop的运行环境中缺少依赖的类,需要您根据错误日志下载相应的Jar包,并放置到Hadoop运行环境的CLASSPATH中。

    例如:执行hadoop命令或者任务出现如下错误时,表明org/apache/hadoop/fs/PathFilter相关的类不在Hadoop的运行环境中,该类所属的Jar包为hadoop-common-x.x.x.jar,需要您下载该Jar包的正确版本,并将其置于所有Hadoop环境下的CLASSPATH中。

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/PathFilter