标签: oozie

Oozie HDFS动作可以使用文件模式还是glob?

我可以在Oozie移动动作中使用通配符(例如*)或文件模式(例如{})吗?

我试图将我的工作结果移动到存档目录中.

目录结构的状态:

output
 - 201304
 - 201305
archive
 - 201303
Run Code Online (Sandbox Code Playgroud)

我的行动:

<fs name="archive-files">
    <move source="hdfs://namenode/output/{201304,201305}"
          target="hdfs://namenode/archive" />
    <ok to="next"/>
    <error to="fail"/>
</fs>
Run Code Online (Sandbox Code Playgroud)

结果错误:

FS006: move, source path [hdfs://namenode/output/{201304,201305}] does not exist
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以在glob或bash语法中移动多个文件?想要做类似这个hadoop命令的事情:

hadoop fs -mv hdfs://namenode/output/{201304,201305} hdfs://namenode/archive
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?hadoop fs命令接受glob.Oozie?

oozie

5
推荐指数
1
解决办法
3066
查看次数

从oozie的网络用户界面中删除作业?

Oozie将在其Web UI中列出所有提交的作业,包括RUNNING,KILLED,PREP等.
有没有办法从oozie的Web UI删除作业而不直接编辑Metastore DB?

hadoop oozie

5
推荐指数
1
解决办法
5051
查看次数

获取 OOZIE 错误 E0900:不允许 Jobtracker [localhost:8021],不在 Oozies 白名单中]

我正在尝试在 CDH 虚拟机上运行 Oozie 示例。我运行了 Cloudera Manager 并执行以下命令:

oozie job -oozie http://localhost:11000/oozie -config examples/apps/map-reduce/job.properties -run
Run Code Online (Sandbox Code Playgroud)

当我检查状态时,我收到了 HadoopAccessorException。

我检查了 oozie 日志,看到以下堆栈跟踪:

2013-07-22 14:25:56,179 WARN org.apache.oozie.command.wf.ActionStartXCommand:
USER[cloudera] GROUP[-] TOKEN[] APP[map-reduce-wf] JOB[0000001-130722142323751-oozie
oozi-W] ACTION[0000001-130722142323751-oozie-oozi-W@mr-node] Error starting action
[mr-node]. ErrorType [ERROR], ErrorCode [HadoopAccessorException], Message
[HadoopAccessorException: E0900: Jobtracker  not allowed, not in
Oozies whitelist] org.apache.oozie.action.ActionExecutorException:
HadoopAccessorException: E0900: Jobtracker not allowed, not in Oozies
Whitelist
Run Code Online (Sandbox Code Playgroud)

oozie-site.xml 和 oozie-default.xml设置了oozie.service.HadoopAccessorService.jobTracker.whitelistoozie.service.HadoopAccessorService.nameNode.whitelist

任何帮助,将不胜感激。

谢谢。

戴夫

hadoop oozie

5
推荐指数
1
解决办法
4583
查看次数

无法使用java操作运行oozie工作流程

我正在提交一个oozie工作流程,我在Hue设计它包含一些java动作.

Hue提交并尝试执行oozie工作流程,我总是得到以下错误.

 Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.JavaMain], main() threw exception, begin > end in range (begin, end)
Caused by java.lang.IllegalArgumentException: begin > end in range (begin, end): (1399708804155, 1399694415805)
Run Code Online (Sandbox Code Playgroud)

我不知道它意味着什么以及我应该怎么做.从错误消息中,我能够推断工作流的提交时间晚于完成时间.

但我不知道造成这种情况的原因以及解决这个问题需要做些什么.

对此的任何输入都会有所帮助.

java hadoop hue oozie

5
推荐指数
1
解决办法
2869
查看次数

从oozie到Hue运行shell脚本

我在Hue使用oozie编辑器调用bash shell脚本.

我在工作流中使用了shell动作,并在shell命令中尝试了以下不同的选项:

  1. 使用"选择文件"上传shell脚本
  2. 提供存在shell脚本的本地目录路径
  3. 提供存在shell脚本的HDFS路径

但所有这些选项都给出了以下错误:

无法运行程序"sec_test_oozie.sh"(在目录"/ data/hadoop/yarn/local/usercache/user/appcache/application_1399542362142_0086/container_1399542365422_0086_01_000002"):java.io.IOException:error = 2,没有这样的文件或目录

我应该如何给出shell脚本执行命令?shell脚本文件应该驻留在哪里?

bash hadoop hue oozie

5
推荐指数
4
解决办法
7449
查看次数

如何在工作流本身中使用 Oozie 工作流配置属性?

我有一个 Oozie 协调器,用于监视某个目录中显示的文件。该协调器每天运行。如果正在观看的文件出现,则会启动工作流程。

工作流采用正在监视的文件/目录的参数。Oozie 将其传递给它。它是一个完全限定的路径(即:hdfs://myhost/dir1/dir2/2015-02-17)。

我需要获取 /dir1/dir2/2015-02-17 并将其传递到 Hive 脚本中,该脚本似乎没有采用完全合格的 HDFS 路径。这意味着我需要使用 Workflow EL 函数来去除 hdfs://myhost 部分。我认为 replaceAll() 会做到这一点。问题是将结果传递给 Hive。

有没有办法在工作流本身中使用工作流配置属性?

例如,我希望能够使用“dateToProcess”,它是作为工作流输入的目录名称的一部分:

  <workflow-app name="mywf" xmlns="uri:oozie:workflow:0.4">
  <parameters>
    <property>
       <name>region</name>
    </property>
    <property>
       <name>hdfsDumpDir</name>
    </property>
    <property>
      <name>hdfsWatchDir</name>
      <value>${nameNode}${watchDir}</value>
    </property>
  </parameters>

  <start to="copy_to_entries"/>
  <action name="copy_to_entries">
    <hive xmlns="uri:oozie:hive-action:0.2">
      <job-tracker>${jobTracker}</job-tracker>
      <name-node>${nameNode}</name-node>
      <job-xml>hive-site.xml</job-xml>

      <configuration>
        <property>
          <name>mapred.job.queue.name</name>
          <value>${queueName}</value>
        </property>
        <property>
          <name>dateToProcess</name>
          <value>${replaceAll(hdfsDumpDir, hdfsWatchDir,"")}</value>
        </property>
      </configuration>

      <script>myhivescript.q</script>
      <!--
           Parameters referenced within Hive script.
      -->
      <param>INPUT_TABLE=dumptable</param>
      <param>INPUT_LOCATION=${watchDir}/${wf:conf('dateToProcess')}</param>
    </hive>
    <ok to="cleanup"/>
    <error to="sendEmailKill"/>
  </action>
  ...
  </workflow>
Run Code Online (Sandbox Code Playgroud)

当我使用 $wf:conf('dateToProcess') 时,我得到一个空字符串。使用 ${dateToProcess} 时找不到变量。 …

hadoop hive oozie

5
推荐指数
1
解决办法
2242
查看次数

需要使用Hive将Shell Action中的变量传递给Oozie Shell

所有,

希望将变量从shell动作传递给oozie shell.我在我的脚本中运行这样的命令:

#!/bin/sh
evalDate="hive -e 'set hive.execution.engine=mr; select     max(cast(create_date as int)) from db.table;'"
evalPartition=$(eval $evalBaais)
echo "evaldate=$evalPartition"
Run Code Online (Sandbox Code Playgroud)

诀窍是它是shell中的hive命令.

然后我运行它来获取它在oozie中:

${wf:actionData('getPartitions')['evaldate']}
Run Code Online (Sandbox Code Playgroud)

但它每次都是空白!我可以在我的shell中运行这些命令很好,它似乎工作,但oozie没有.同样,如果我在群集的其他框上运行命令,它们也可以正常运行.有任何想法吗?

shell hive oozie

5
推荐指数
1
解决办法
2136
查看次数

Oozie工作陷入PREP状态的START行动

我有一个Oozie工作,我从java客户端开始,它停留在START操作,它说它正在运行,但START节点处于PREP状态.

为什么这样以及如何解决问题?

Oozie工作流只包含一个java动作.群集上的Hadoop版本是2.4.0,集群上的Oozie是4.0.0.

这是workflow.xml

<workflow-app xmlns='uri:oozie:workflow:0.2' name='java-filecopy-wf'>
<start to='java1'/>
    <action name='java1'>
    <java>
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <configuration>
            <property>
                <name>mapred.job.queue.name</name>
                <value>default</value>
            </property>
        </configuration>           
        <main-class>testingoozieclient.Client</main-class>
        <capture-output/>
    </java>
    <ok to="end" />
    <error to="fail" />
</action>
<kill name="fail">
    <message>Java failed, error message[${wf:errorMessage(wf:lastErrorNode())}]
        </message>
</kill>
<end name='end' />
Run Code Online (Sandbox Code Playgroud)

这是java客户端

    OozieClient oozieClient = new OozieClient(args[0]);

    Properties conf = oozieClient.createConfiguration();
    conf.setProperty(OozieClient.APP_PATH, args[1]);

    conf.setProperty("nameNode", args[2]);
    conf.setProperty("jobTracker", args[3]);

    String jobId = null;

    try{
        jobId = oozieClient.run(conf);
    }
    catch(OozieClientException ex){
        Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);

    }
Run Code Online (Sandbox Code Playgroud)

由于我尝试了几次,现在有5,6个工作流都以RUNNING作为状态,但是当我通过Web界面查看时,我可以看到所有这些都停留在PREP状态的START节点上?


在一些提交的工作流程被杀后,我能够启动另一个工作流程.这次工作流从开始到java动作,但以类似的方式陷入java动作 - 它保持在PREP状态.

这是日志的样子

2015-06-22 17:54:37,366  INFO …
Run Code Online (Sandbox Code Playgroud)

hadoop oozie

5
推荐指数
1
解决办法
7096
查看次数

使用Oozie(使用Hue)在YARN上运行Spark应用程序的正确方法是什么?

我在Scala中编写了一个使用Spark的应用程序.
该应用程序包含两个模块 - App包含具有不同逻辑的类的Env模块,以及包含环境和系统初始化代码的模块,以及实用程序功能.
入口点位于Env初始化之后,它在App(根据args,使用Class.forName)中创建一个类并执行逻辑.
模块被导出到2个不同的JAR(即env.jarapp.jar).

当我在本地运行应用程序时,它执行得很好.下一步是将应用程序部署到我的服务器.我使用Cloudera的CDH 5.4.

我使用Hue使用Spark任务创建一个新的Oozie工作流,其中包含以下参数:

  • Spark Master: yarn
  • 模式: cluster
  • 应用名称: myApp
  • Jars/py文件: lib/env.jar,lib/app.jar
  • 主类:( env.MainEnv模块中)
  • 参数: app.AggBlock1Task

然后我将2个JAR放在lib工作流文件夹(/user/hue/oozie/workspaces/hue-oozie-1439807802.48)中的文件夹中.

当我运行工作流时,它会抛出一个FileNotFoundException并且应用程序不会执行:

java.io.FileNotFoundException: File file:/cloudera/yarn/nm/usercache/danny/appcache/application_1439823995861_0029/container_1439823995861_0029_01_000001/lib/app.jar,lib/env.jar does not exist
Run Code Online (Sandbox Code Playgroud)

然而,当我离开星火主和模式参数为空,这一切工作正常,但是当我检查spark.master编程设置为local[*],而不是yarn.此外,在观察日志时,我在Oozie Spark动作配置下遇到了这个:

--master
null
--name
myApp
--class
env.Main
--verbose
lib/env.jar,lib/app.jar
app.AggBlock1Task
Run Code Online (Sandbox Code Playgroud)

我假设我做得不对 - 没有设置Spark master和mode参数并且运行应用程序spark.master设置为local[*].据我所知,SparkConf …

cloudera hue oozie hadoop-yarn apache-spark

5
推荐指数
1
解决办法
1811
查看次数

Oozie:oozie会生成输出事件吗?

在oozie中,input-events非常简单,如果指定的文件/文件夹不存在,协调器作业将保持WAITING状态.但我无法理解是什么output-events.

根据我的理解,output-events标签中指定的文件/文件夹应由oozie创建,以防所有指定的操作成功.但这不会发生.我也找不到任何相关的日志.文件也没有明确说明这一点.

所以,问题是,Oozie真的创建了指定的文件/文件夹output-events吗?或者它只是提到这些特定的文件/文件夹是在工作流程中创建的,创建的责任在于工作,而不是在Oozie上?

相关的代码可以在https://gist.github.com/venkateshshukla/de0dc395797a7ffba153找到

hadoop oozie oozie-coordinator

5
推荐指数
2
解决办法
719
查看次数

标签 统计

oozie ×10

hadoop ×7

hue ×3

hive ×2

apache-spark ×1

bash ×1

cloudera ×1

hadoop-yarn ×1

java ×1

oozie-coordinator ×1

shell ×1