Oozie 4.3.1+Hadoop2.7.3运行报错:No FileSystem for scheme: hdfs
解决Oozie运行时"No FileSystem for scheme: hdfs"错误
我之前在部署Oozie和Hadoop集群时也碰到过完全一样的问题,这个错误本质是Oozie无法找到HDFS对应的FileSystem实现类,大概率是jar包加载不全或者配置路径没设对。结合你的情况,给你几个可行的解决方案:
1. 重新部署并验证Oozie ShareLib
ShareLib是Oozie运行各类作业依赖的jar包集合,HDFS相关的jar包必须在这里面才能被Oozie调用:
- 首先运行命令重新创建ShareLib(替换成你的HDFS地址):
$OOZIE_HOME/bin/oozie-setup.sh sharelib create -fs hdfs://localhost:9000 -locallib $OOZIE_HOME/share/lib - 然后检查HDFS上的ShareLib目录,确认
/user/oozie/share/lib/mapreduce下存在hadoop-hdfs-2.7.3.jar、hadoop-common-2.7.3.jar这些核心jar包 - 最后重新执行ShareLib更新命令:
$OOZIE_HOME/bin/oozie admin -oozie http://localhost:11000/oozie -sharelibupdate
2. 确保Oozie能读取到Hadoop的配置文件
Oozie需要知道Hadoop的集群配置才能正确连接HDFS:
- 修改
$OOZIE_HOME/conf/oozie-site.xml,添加或修改以下配置项:
这里的<property> <name>oozie.service.HadoopAccessorService.hadoop.configurations</name> <value>*=/etc/hadoop/conf</value> </property>/etc/hadoop/conf要替换成你实际的Hadoop配置目录(比如$HADOOP_HOME/etc/hadoop) - 把Hadoop的
core-site.xml、hdfs-site.xml、yarn-site.xml复制到$OOZIE_HOME/conf目录下,确保Oozie启动时能加载到这些配置 - 重启Oozie服务,让配置生效:
$OOZIE_HOME/bin/oozied.sh stop $OOZIE_HOME/bin/oozied.sh start
3. 修正job.properties中的配置细节
有时候作业配置里的路径或参数有问题也会触发这个错误:
- 先验证Hadoop服务的实际地址:
- 用
hdfs dfsadmin -report确认NameNode地址是hdfs://localhost:9000 - 用
yarn resourcemanager status确认ResourceManager的地址是localhost:8032(注意Hadoop 2.x的jobTracker对应ResourceManager,端口以yarn-site.xml里的yarn.resourcemanager.address配置为准)
- 用
- 在job.properties中添加ShareLib的路径指定:
oozie.libpath=/user/oozie/share/lib/mapreduce
4. 检查Oozie启动脚本的ClassPath设置
如果上面的步骤都没用,可能是Oozie启动时没加载到Hadoop的jar包:
- 编辑
$OOZIE_HOME/bin/oozie脚本,在开头添加Hadoop的环境变量:export HADOOP_HOME=/path/to/your/hadoop-2.7.3 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib/*:$HADOOP_CONF_DIR - 保存后重启Oozie服务,再测试作业运行命令
每个步骤完成后,都可以先测试oozie admin -sharelibupdate命令,如果这个命令正常了,再去运行MapReduce示例作业。
内容的提问来源于stack exchange,提问作者Kamal Malik
相关产品推荐
相关产品推荐

