一个目录中可以有两个oozie workflow.xml文件吗?
如果是这样,我怎样才能指导oozie跑步者跑哪一个?
我有一个处于这种状态的Java操作已被暂停5天,我不知道oozie想要我做什么。有任何想法吗?
我在执行oozie sqoop动作时遇到问题.在日志中我可以看到sqoop能够将数据导入临时目录,然后sqoop创建hive脚本来导入数据.
将临时数据导入配置单元时失败.
在日志中我没有任何异常.
下面是我正在使用的sqoop动作.
<workflow-app name="testSqoopLoadWorkflow" xmlns="uri:oozie:workflow:0.4">
<credentials>
<credential name='hive_credentials' type='hcat'>
<property>
<name>hcat.metastore.uri</name>
<value>${HIVE_THRIFT_URL}</value>
</property>
<property>
<name>hcat.metastore.principal</name>
<value>${KERBEROS_PRINCIPAL}</value>
</property>
</credential>
</credentials>
<start to="loadSqoopDataAction"/>
<action name="loadSqoopDataAction" cred="hive_credentials">
<sqoop xmlns="uri:oozie:sqoop-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<job-xml>/tmp/hive-oozie-site.xml</job-xml>
<configuration>
<property>
<name>oozie.hive.defaults</name>
<value>/tmp/hive-oozie-site.xml</value>
</property>
</configuration>
<command>job --meta-connect ${SQOOP_METASTORE_URL} --exec TEST_SQOOP_LOAD_JOB</command>
</sqoop>
<ok to="end"/>
<error to="kill"/>
</action>
Run Code Online (Sandbox Code Playgroud)
下面是我用来导入数据的sqoop作业.
sqoop job --meta-connect ${SQOOP_METASTORE_URL} --create TEST_SQOOP_LOAD_JOB -- import --connect '${JDBC_URL}' --table testTable -m 1 --append --check-column pkId --incremental append --hive-import --hive-table testHiveTable;
Run Code Online (Sandbox Code Playgroud)
在mapred日志中,我得到以下异常.
72285 [main] INFO org.apache.sqoop.hive.HiveImport - Loading uploaded …Run Code Online (Sandbox Code Playgroud) 请记住,我是 oozie 的完全新手。我知道可以使用 arg 标签在 oozie 工作流 xml 中指定命令行参数。我想知道如何指定一个可选的命令行参数,以便 oozie 不会抱怨如果用户没有指定缺少必需的参数?
提前谢谢了。如果我提供的信息不够具体,我可以在明天登录我的工作机器时提供一个具体示例。我们使用 apache commons CLI 选项来解析选项。
例如,我想将以下参数设为可选:
-e${endDateTime}
我运行了一个 Oozie 协调器,它每小时运行一个工作流。我没有它的 id,当我运行命令时oozie jobs -oozie http://localhost:11000/oozie,它只向我显示工作流作业,没有协调器。我想阻止此协调器进一步处理,我该怎么做?
我正在尝试使用<java>操作在Oozie工作流中执行Map-Reduce任务.
O'Reilley的Apache Oozie(Islam和Srinivasan 2015)指出:
虽然不推荐,但可以使用Java操作来运行Hadoop MapReduce作业,因为MapReduce作业毕竟只是Java程序.调用的主类可以是Hadoop MapReduce驱动程序,可以调用Hadoop API来运行MapReduce作业.在该模式下,Hadoop根据需要生成更多映射器和Reducer,并在群集上运行它们.
但是,我没有成功使用这种方法.
工作流中的操作定义如下所示:
<java>
<!-- Namenode etc. in global configuration -->
<prepare>
<delete path="${transformOut}" />
</prepare>
<configuration>
<property>
<name>mapreduce.job.queuename</name>
<value>default</value>
</property>
</configuration>
<main-class>package.containing.TransformTool</main-class>
<arg>${transformIn}</arg>
<arg>${transformOut}</arg>
<file>${avroJar}</file>
<file>${avroMapReduceJar}</file>
</java>
Run Code Online (Sandbox Code Playgroud)
Tool实现的main()实现如下所示:
public static void main(String[] args) throws Exception {
int res = ToolRunner.run(new TransformTool(), args);
if (res != 0) {
throw new Exception("Error running MapReduce.");
}
}
Run Code Online (Sandbox Code Playgroud)
每次都会出现"Error MapReduce"错误导致工作流崩溃的情况; 如何获取MapReduce的输出来诊断问题?使用它Tool来运行MapReduce应用程序有问题吗?我使用错误的API调用吗?
我非常不愿意使用Oozie <map-reduce>操作,因为工作流中的每个操作都依赖于几个单独版本的AVRO模式.
这是什么问题?我正在使用'新' mapreduceAPI来完成任务. …
我正在写Oozie作业,我想将它们部署到hadoop集群中。
但是,我不想使用手动方式,而是要使用Jenkins为我完成此部署。
我在网上搜索并没有找到oozie的任何插件....因此,如果您在hadoop集群上使用oozie,能否请您告诉我使用Jenkins进行自动化构建和部署的最佳方法是什么?
如何重新运行工作流程中失败的任何操作?
我知道从命令行或彻底的色调手动重新运行的方法.
$oozie job -rerun ...
Run Code Online (Sandbox Code Playgroud)
我们可以在工作流程中设置或提供任何参数,以便在操作失败时自动重试吗?
我是hadoop的新手,现在我只用一个sqoop动作来测试简单的工作流程.如果我使用普通值 - 而不是全局属性,它可以工作.
但是,我的目标是job-xml在全局部分的tag中引用的文件中定义一些全局属性.
经过长时间的斗争和阅读许多文章,我仍然无法使其工作.我怀疑一些简单的事情是错误的,因为我发现文章暗示这个功能正常.
希望你能给我一个提示.
简而言之:
dbserver,dbuser并dbpassword在中定义/user/dm/conf/environment.xml/user/dm/jobs/sqoop-test/workflow.xmlEL_ERROR说法,即dbserver变量无法解析这是详细信息:
我正在使用单节点上安装的Cloudera 5.7.1发行版.
environment.xml文件已上传到hdfs到/user/dm/conf文件夹中.这是内容:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property>
<name>dbserver</name>
<value>someserver</value>
</property>
<property>
<name>dbuser</name>
<value>someuser</value>
</property>
<property>
<name>dbpassword</name>
<value>somepassword</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)
workflow.xml文件已上传到/user/dm/jobs/sqoop-test-job.这是内容:
<?xml version="1.0" encoding="UTF-8"?>
<workflow-app xmlns="uri:oozie:workflow:0.4" name="sqoop-test">
<global>
<job-xml>/user/dm/conf/env.xml</job-xml>
</global>
<start to="get-data"/>
<action name="get-data">
<sqoop xmlns="uri:oozie:sqoop-action:0.3">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<prepare>
<delete path="${outputRootPath}"/>
</prepare>
<arg>import</arg>
<arg>--connect</arg>
<arg>jdbc:sqlserver://${dbserver};user=${dbuser};password=${dbpassword}</arg>
<arg>--query</arg>
<arg>select col1 from …Run Code Online (Sandbox Code Playgroud) 我试图将数据从本地文件系统移动到Hadoop分布式文件系统,但我无法通过oozie移动它我们可以使用oozie将数据从本地文件系统移动或复制到HDFS吗?