E0405: 提交请求没有任何应用程序或库路径
E0405: Submission request doesn't have any application or lib path
这是第一次 运行来自 Oozie 的 mapreduce 程序。
这是我的 job.properties 文件
nameNode=file:/usr/local/hadoop_store/hdfs/namenode
jobTracker=localhost:8088
queueName=default
oozie.wf.applications.path=${nameNode}/Config
这是我的硬盘文件系统-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>Default block replication.
The actual number of replications can be specified when the file is created.
The default is used if replication is not specified in create time.
</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
</configuration>
这是我的核心-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.proxyuser.hduser.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hduser.groups</name>
<value>*</value>
</property>
</configuration>
但是当我 运行 Ozzie 命令 运行 我的 Mapreduce 程序时,它给出了找不到 lib
文件夹的错误。 Error: E0405 : E0405: Submission request doesn't have any application or lib path
oozie job -oozie http://localhost:11000/oozie -config job.properties -run
我在 HDFS
中创建了 Config
文件夹,并在该文件夹中也创建了 lib
文件夹。在 lib
文件夹中放置了我的 mapreduce jar 文件,在 Config
文件夹中放置了我的 workflow.xml
文件。 (全部在 HDFS 中)
我想我在 job.propertie
s 文件中提供了错误的 HDFS 路径 (nameNode
)。这就是为什么它找不到 {nameNode}/Config
,我可以知道 hdfs 路径是什么吗?
谢谢
更新 - 1 job.properties
nameNode=hdfs://localhost:8020
jobTracker=localhost:8088
queueName=default
oozie.wf.applications.path=${nameNode}/Config
仍然出现同样的错误:
Error: E0405 : E0405: Submission request doesn't have any application or lib path
更新 - 2 workflow.xml
在 HDFS 的 Config
文件夹中。
<workflow-app xmlns="uri:oozie:workflow:0.4" name="simple-Workflow">
<start to="RunMapreduceJob" />
<action name="RunMapreduceJob">
<map-reduce>
<job-tracker>localhost:8088</job-tracker>
<name-node>file:/usr/local/hadoop_store/hdfs/namenode</name-node>
<prepare>
<delete path="file:/usr/local/hadoop_store/hdfs/namenode"/>
</prepare>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>default</value>
</property>
<property>
<name>mapred.mapper.class</name>
<value>DataDividerByUser.DataDividerMapper</value>
</property>
<property>
<name>mapred.reducer.class</name>
<value>DataDividerByUser.DataDividerReducer</value>
</property>
<property>
<name>mapred.output.key.class</name>
<value>org.apache.hadoop.io.IntWritable</value>
</property>
<property>
<name>mapred.output.value.class</name>
<value>org.apache.hadoop.io.Text</value>
</property>
<property>
<name>mapred.input.dir</name>
<value>/data</value>
</property>
<property>
<name>mapred.output.dir</name>
<value>/dataoutput</value>
</property>
</configuration>
</map-reduce>
<ok to="end" />
<error to="fail" />
</action>
<kill name="fail">
<message>Mapreduce program Failed</message>
</kill>
<end name="end" />
</workflow-app>
<namenode>
标签不应是文件路径。它应该指向底层 Hadoop 集群的 NameNode,其中 Oozie 必须 运行 MapReduce 作业。您的名称节点应该是您的 core-site.xml.
中 fs.default.name 的值
nameNode=hdfs://localhost:9000
此外,将 属性 名称 oozie.wf.applications.path 更改为 oozie.wf.application.path(没有 s)。
将 属性 oozie.use.system.libpath=true
添加到您的属性文件。
来源:Apache Oozie,作者 Mohammad Kamrul Islam 和 Aravind Srinivasan
这是第一次 运行来自 Oozie 的 mapreduce 程序。
这是我的 job.properties 文件
nameNode=file:/usr/local/hadoop_store/hdfs/namenode
jobTracker=localhost:8088
queueName=default
oozie.wf.applications.path=${nameNode}/Config
这是我的硬盘文件系统-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>Default block replication.
The actual number of replications can be specified when the file is created.
The default is used if replication is not specified in create time.
</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
</configuration>
这是我的核心-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.proxyuser.hduser.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hduser.groups</name>
<value>*</value>
</property>
</configuration>
但是当我 运行 Ozzie 命令 运行 我的 Mapreduce 程序时,它给出了找不到 lib
文件夹的错误。 Error: E0405 : E0405: Submission request doesn't have any application or lib path
oozie job -oozie http://localhost:11000/oozie -config job.properties -run
我在 HDFS
中创建了 Config
文件夹,并在该文件夹中也创建了 lib
文件夹。在 lib
文件夹中放置了我的 mapreduce jar 文件,在 Config
文件夹中放置了我的 workflow.xml
文件。 (全部在 HDFS 中)
我想我在 job.propertie
s 文件中提供了错误的 HDFS 路径 (nameNode
)。这就是为什么它找不到 {nameNode}/Config
,我可以知道 hdfs 路径是什么吗?
谢谢
更新 - 1 job.properties
nameNode=hdfs://localhost:8020
jobTracker=localhost:8088
queueName=default
oozie.wf.applications.path=${nameNode}/Config
仍然出现同样的错误:
Error: E0405 : E0405: Submission request doesn't have any application or lib path
更新 - 2 workflow.xml
在 HDFS 的 Config
文件夹中。
<workflow-app xmlns="uri:oozie:workflow:0.4" name="simple-Workflow">
<start to="RunMapreduceJob" />
<action name="RunMapreduceJob">
<map-reduce>
<job-tracker>localhost:8088</job-tracker>
<name-node>file:/usr/local/hadoop_store/hdfs/namenode</name-node>
<prepare>
<delete path="file:/usr/local/hadoop_store/hdfs/namenode"/>
</prepare>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>default</value>
</property>
<property>
<name>mapred.mapper.class</name>
<value>DataDividerByUser.DataDividerMapper</value>
</property>
<property>
<name>mapred.reducer.class</name>
<value>DataDividerByUser.DataDividerReducer</value>
</property>
<property>
<name>mapred.output.key.class</name>
<value>org.apache.hadoop.io.IntWritable</value>
</property>
<property>
<name>mapred.output.value.class</name>
<value>org.apache.hadoop.io.Text</value>
</property>
<property>
<name>mapred.input.dir</name>
<value>/data</value>
</property>
<property>
<name>mapred.output.dir</name>
<value>/dataoutput</value>
</property>
</configuration>
</map-reduce>
<ok to="end" />
<error to="fail" />
</action>
<kill name="fail">
<message>Mapreduce program Failed</message>
</kill>
<end name="end" />
</workflow-app>
<namenode>
标签不应是文件路径。它应该指向底层 Hadoop 集群的 NameNode,其中 Oozie 必须 运行 MapReduce 作业。您的名称节点应该是您的 core-site.xml.
nameNode=hdfs://localhost:9000
此外,将 属性 名称 oozie.wf.applications.path 更改为 oozie.wf.application.path(没有 s)。
将 属性 oozie.use.system.libpath=true
添加到您的属性文件。
来源:Apache Oozie,作者 Mohammad Kamrul Islam 和 Aravind Srinivasan