本文介紹使用文件存儲 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