我需要管理ETL任务的大型工作流程,其执行取决于时间,数据可用性或外部事件.在执行工作流程期间,某些作业可能会失败,并且系统应该能够重新启动失败的工作流程分支,而无需等待整个工作流程完成执行.
python中有没有可以处理这个的框架?
我看到几个核心功能:
像Oozie这样的东西,但更通用的目的和python.
我是工作调度员的新手,正在寻找一个在大数据集群上运行工作的人.我对可用的选择很困惑.发现Oozie与TWS,Autosys等现有产品相比有很多局限性.
在Oozie vs. Airflow上需要一些比较点.
感谢您的帮助.
Oozie工作流程,协调员和捆绑包有什么区别?
Oozie工作流定义了一系列动作.我们需要在每次运行时手动调用它.可以通过协调员安排相同的工作流程.这种理解是否正确?
然后什么是额外捆绑?
我想它会再次用于安排一组协调员.那么为什么不能使用一个协调器来安排其他协调器,就像一个工作流可以有另一个子工作流.
我试图sh
通过Oozie 运行脚本,但我遇到了一个问题:
无法运行程序"script.sh"(在目录"/ mapred/local/taskTracker/dell/jobcache/job_201312061003_0001/attempt_201312061003_0001_m_000000_0/work"):java.io.IOException:error = 2,没有这样的文件或目录.
请帮我完成必要的步骤.
从Oozie CLI我想做这样的事情:
oozie job -oozie http://host:port/oozie -config jobConfig.properties, baseConfig.properties -submit
Run Code Online (Sandbox Code Playgroud)
我正在运行很多不同的工作,其中.properties文件的一部分是相同的.我希望能够将该重复部分移动到单个baseConfig.properties文件中,并在我提交作业时将其与作业特定部分相结合.
我是oozie的新手,在更改oozie默认时区时遇到问题.我正在编写oozie协调员工作,并试图指定时区
<coordinator-app name="hello-coord" frequency="${coord:days(1)}"
start="2009-01-02T08:00Z" end="2009-01-04T08:00Z" timezone="GMT+05:30"
xmlns="uri:oozie:coordinator:0.1">
Run Code Online (Sandbox Code Playgroud)
如此处所述http://oozie.apache.org/docs/3.2.0-incubating/CoordinatorFunctionalSpec.html#a4._Datetime_Frequency_and_Time-Period_Representation 但它不起作用.任何人都可以告诉我哪里出错了?
其次,我想获得oozie工作流程开始的日期时间.假设我想在过去的某个日期(例如一周前)运行协调员工作,该工作运行了一整天,频率为15分钟.我想要的是在工作流程开始时有日期时间.
非常感谢你宝贵的时间
我正在尝试使用oozie做一个简单的工作.
这将是一个简单的猪行动.
我有一个文件:FirstScript.pig包含:
dual = LOAD 'default.dual' USING org.apache.hcatalog.pig.HCatLoader();
store dual into 'dummy_file.txt' using PigStorage();
Run Code Online (Sandbox Code Playgroud)
和一个workflow.xml包含:
<workflow-app name="FirstWorkFlow" xmlns="uri:oozie:workflow:0.2">
<start to="FirstJob"/>
<action name="FirstJob">
<pig>
<job-tracker>hadoop:50300</job-tracker>
<name-node>hdfs://hadoop:8020</name-node>
<script>/FirstScript.pig</script>
</pig>
<ok to="okjob"/>
<error to="errorjob"/>
</action>
<ok name='okjob'>
<message>job OK, message[${wf:errorMessage()}]</message>
</ok>
<error name='errorjob'>
<message>job error, error message[${wf:errorMessage()}]</message>
</error>
</workflow-app>
Run Code Online (Sandbox Code Playgroud)
我创建了结构:
FirstScript
|- lib
|---FirstScript.pig
|- workflow.xml
Run Code Online (Sandbox Code Playgroud)
现在怎么办?如何部署它并与oozie一起运行?
任何人都可以获得经验帮助
关心
帕维尔
如何使用格式的今天日期创建参数:
yyyy-mm-dd
Run Code Online (Sandbox Code Playgroud)
在oozie.我将此变量传递给hive脚本,该脚本正在添加该日期的分区,我找到了使用以下命令创建时间戳的函数:
<param>DATE=${wf:timestamp()}</param>
Run Code Online (Sandbox Code Playgroud)
应该以下列形式返回输出:
(YYYY-MM-DDThh:mm:ss.sZ). I.e.: 1997-07-16T19:20:30.45Z
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
No function is mapped to the name "wf:timestamp"
Run Code Online (Sandbox Code Playgroud)
另外我只想YYYY-MM-DD
从时间戳开始,并且没有子串函数也可以给我前10个字符串的字符串.
我有几个关于oozie 2.3共享库的问题:
目前,我在coordinator.properties中定义了共享库:
oozie.use.system.libpath=true
oozie.libpath=<hdfs_path>
Run Code Online (Sandbox Code Playgroud)
这是我的问题:
共享库被复制到其他数据节点时,有多少数据节点将获得共享库?
共享库是根据协调器作业中的wf数复制到其他数据节点还是每个协调器作业只复制一次?
我为hive脚本创建了一个oozie工作流,以便在表中加载数据.
我的workflow.xml包含 -
<workflow-app xmlns="uri:oozie:workflow:0.4" name="Hive-Table-Insertion">
<start to="InsertData"/>
<action name="InsertData">
<hive xmlns="uri:oozie:hive-action:0.4">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<prepare>
<delete path="${workflowRoot}/output-data/hive"/>
<mkdir path="${workflowRoot}/output-data"/>
</prepare>
<job-xml>${workflowRoot}/hive-site.xml</job-xml>
<configuration>
<property>
<name>oozie.hive.defaults</name>
<value>${workflowRoot}/hive-site.xml</value>
</property>
</configuration>
<script>load_data.hql</script>
</hive>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Hive failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>
Run Code Online (Sandbox Code Playgroud)
我的job.properties文件包含 -
nameNode=hdfs://localhost:8020
jobTracker=localhost:8021
queueName=default
workflowRoot=HiveLoadData
oozie.libpath=${nameNode}/user/oozie/share/lib
oozie.wf.application.path=${nameNode}/user/${user.name}/${workflowRoot}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用命令"oozie job -oozie http:// localhost:11000 / oozie -config /user/oozie/HiveLoadData/job.properties -submit"提交我的工作时,我收到以下错误,
java.io.IOException: configuration is not specified
at org.apache.oozie.cli.OozieCLI.getConfiguration(OozieCLI.java:729)
at org.apache.oozie.cli.OozieCLI.jobCommand(OozieCLI.java:879)
at org.apache.oozie.cli.OozieCLI.processCommand(OozieCLI.java:604)
at org.apache.oozie.cli.OozieCLI.run(OozieCLI.java:577)
at org.apache.oozie.cli.OozieCLI.main(OozieCLI.java:204)
configuration is not …
Run Code Online (Sandbox Code Playgroud)