本文介绍使用文件存储 HDFS 版文件系统SDK时遇到的常见问题及排查方法。
提示java.lang.ClassNotFoundException
信息
执行hadoop
命令或者任务失败,提示java.lang.ClassNotFoundException: Class com.alibaba.dfs.DistributedFileSystem not found
信息时,请按如下步骤进行排查:
确认文件存储 HDFS 版文件系统SDK(aliyun-sdk-dfs-x.x.x.jar文件)已经放置在所有Hadoop环境下的CLASSPATH中。
${HADOOP_HOME}/share/hadoop/hdfs/
确认执行作业的用户对SDK有可读权限。
如果
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
信息时,请按如下步骤进行排查:
确认如下文件存储 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>
确认执行作业的用户对core-site.xml文件有可读权限。
如果
hadoop fs
命令可以成功运行,但是无法执行分析任务,您可以参考应用初始化在代码中直接加载文件存储 HDFS 版相关配置。
提示java.lang.NoClassDefFoundError
信息
执行hadoop
命令行或者任务失败,提示java.lang.NoClassDefFoundError
信息时,请按如下步骤进行排查:
根据错误日志确认缺少的类是不是com.alibaba.dfs相关类。
如果缺少的类是com.alibaba.dfs相关的类,请更新您的SDK至最新版本。
如果与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