标签: oozie

通过Oozie运行Docker容器

我正在尝试构建一个 Oozie 工作流程来每天执行需要特定库才能运行的 python 脚本。

目前,我在集群的一个节点(由 11 个节点组成)上创建了一个 python 虚拟环境(使用 venv)。通过 Oozie,我发现可以使用指定包含虚拟环境的节点的 SSH 操作来运行脚本。或者,可以使用 Shell 操作来运行 python 脚本,但这需要在将执行 shell 的节点(任何集群节点)上创建虚拟环境,并在库方面具有相同的依赖关系。

我想避免共享密钥或配置所有集群节点来实现这一点,并在文档中查找我发现节讨论使用 Docker 容器启动应用程序,但在我的集群的 Hadoop 版本中,此功能是实验性的且不完整(Hadoop 3.0 .0)。我认为,如果您可以从 shell 启动 Docker 容器,那么您应该也可以从 Oozie 启动它们。

所以我的问题是:有人尝试过这样做吗?这样使用docker是不是有什么技巧呢?

我遇到过这个问题,但迄今为止 2019/09/30 还没有具体答案。


更新:我尝试这样做,并且它有效(您可以在我对这个问题的回答中找到更多信息)。我仍然想知道这是否是正确的方法。

hadoop oozie docker hadoop3 oozie-workflow

5
推荐指数
0
解决办法
324
查看次数

如何触发现在预定的oozie作业?

我已使用以下命令向 Oozie 提交了一份作业:

oozie job -config ${config_file} -submit
Run Code Online (Sandbox Code Playgroud)

我的作业计划在每天 5 UTC 运行(频率 = 1440)。我的问题是 - 如何在这个时间范围之外触发​​执行?假设我已在 7 UTC 提交了一份作业,但不想等到第二天 5 UTC,并且希望在提交后立即手动触发它。

我尝试过开始工作:

oozie job -oozie host -start coordinatior-job-id-C 
Run Code Online (Sandbox Code Playgroud)

但得到:

Error: E0303 : E0303: Invalid parameter value, [action] = [start]
Run Code Online (Sandbox Code Playgroud)

属性文件内容:

nameNode=hdfs://<namenode>:8020
jobTracker=http://<namenode>:23140
queueName=root.oozie
user=${user.name}
oozie.libpath=/user/oozie/share/lib
oozie.use.system.libpath=true
oozie.coord.application.path=${nameNode}/user/${user.name}/<job.location>
appPath=${oozie.coord.application.path}
initTime=2020-04-20T00:15Z
interval=0
frequency=1440
start=2020-04-20T00:50Z
oozie.launcher.mapreduce.map.cpu.vcores=1
Run Code Online (Sandbox Code Playgroud)

谢谢

scheduling oozie oozie-coordinator

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

处理oozie工作流程中的循环

我有一个用于检查输入数据可用性的oozie用例,并根据数据的可用性触发mapreduce作业.所以我编写了一个shell脚本来检查输入数据并在oozie中为它创建了一个ssh动作,

输入数据检查的重试次数和重试间隔应该是可配置的,并且在每次重试之后如果数据仍然丢失,我必须发送警报,在指定的重试次数后,mapreduce作业可以从可用数据开始

我写了一个工作流程如下:

<start to="datacheck" />

<action name="datacheck">
    <ssh xmlns="uri:oozie:ssh-action:0.1">
        <host>${sshUserHost}</host>
        <command>${Oozieutilsscript}</command>
    </ssh>
    <ok to="datacheckswitch" />
    <error to="fail" />
</action>

<decision name="datacheckswitch">
    <switch>
        <case to="mapreduce">${(wf:actionData('datacheck')['datatransfer'] == "complete" )}</case>
        <case to="retry">${(wf:actionData('datacheck')['datatransfer'] == "incomplete" )}</case>        
        <default to="fail" />    
    </switch>
</decision>

<action name="retry">
    <ssh xmlns="uri:oozie:ssh-action:0.1">
        <host>${sshUserHost}</host>
        <command>${Oozieutilsscript1}</command>
    </ssh>
    <ok to="retryswitch" />
    <error to="fail" />
</action>

<decision name="retryswitch">
    <switch>
        <case to="datacheck">${(wf:actionData('datacheck')['retry'] == "notfinished" )}</case>
        <case to="datacheck">${(wf:actionData('datacheck')['retry'] == "finished" )}</case>     
        <default to="fail" />    
    </switch>
</decision>

<action name="mapreduce">
...............
</action>


<!--Kill and End portion-->
<kill name="fail"> …
Run Code Online (Sandbox Code Playgroud)

hadoop oozie

4
推荐指数
1
解决办法
9931
查看次数

运行Oozie工作流程时的并发性:多少以及如何限制

假设我们有一个Oozie工作流,它有一个复制操作节点,然后是一个Shell操作节点.我可以启动这样一个OOzie工作流的多个实例并并行运行吗?并发数量如何达到数千和/或甚至数百万的水平.这是可能的,甚至Oozie是否支持高级并发?

如果没有,那么我们将不得不考虑限制并对可以有多少并发Oozie工作流实例设置上限.我们更喜欢在服务器/ Oozie端(基本上使用任何开箱即用的Oozie软件功能)限制它,而不是在客户端/被叫方端.例如,我们有一个巨大的启动脚本,其中包含这样的行.我们希望一次性运行它,然后让Oozie弄清楚如何在自身上限制所有这些实例.我们不想将它分成多个较小的块,然后一次启动一个块.

oozie job -oozie http://myhost.com:11000/oozie -config job1.properties -run
oozie job -oozie http://myhost.com:11000/oozie -config job2.properties -run
......
oozie job -oozie http://myhost.com:11000/oozie -config job1000000.properties -run
Run Code Online (Sandbox Code Playgroud)

concurrency throttling oozie

4
推荐指数
1
解决办法
9823
查看次数

Oozie的工作岗位处于运行状态

我在hadoop 2.2集群上安装了oozie 4.0.1.之后,我尝试运行一个oozie作业(java动作).一切似乎都很好:

  • 当我运行job.properties时,它通常会提供作业ID.
  • 当我检查oozie控制台作业处于运行状态.
  • 它运行java代码.

但是,oozie突然停止并显示以下错误.

  ACTION[0000001-140526105244150-oozie-labu-W@javaMainAction] Exception in check().    Message[java.net.ConnectException: Call From labuser-VirtualBox/127.0.1.1 to localhost:10020 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused]
java.io.IOException: java.net.ConnectException: Call From labuser-VirtualBox/127.0.1.1 to localhost:10020 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
    at org.apache.hadoop.mapred.ClientServiceDelegate.invoke(ClientServiceDelegate.java:331)
    at org.apache.hadoop.mapred.ClientServiceDelegate.getJobStatus(ClientServiceDelegate.java:416)
    at org.apache.hadoop.mapred.YARNRunner.getJobStatus(YARNRunner.java:522)
    at org.apache.hadoop.mapreduce.Cluster.getJob(Cluster.java:183)
    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:580)
    at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:578)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1491)
    at org.apache.hadoop.mapred.JobClient.getJobUsingCluster(JobClient.java:578)
    at org.apache.hadoop.mapred.JobClient.getJob(JobClient.java:596)
    at org.apache.oozie.action.hadoop.JavaActionExecutor.getRunningJob(JavaActionExecutor.java:992)
    at org.apache.oozie.action.hadoop.JavaActionExecutor.check(JavaActionExecutor.java:1005)
    at org.apache.oozie.command.wf.ActionCheckXCommand.execute(ActionCheckXCommand.java:177)
    at org.apache.oozie.command.wf.ActionCheckXCommand.execute(ActionCheckXCommand.java:56)
    at …
Run Code Online (Sandbox Code Playgroud)

java hadoop oozie

4
推荐指数
1
解决办法
3853
查看次数

Oozie shell动作内存限制

我们有一个oozie工作流,其shell操作需要比Yarn默认提供的map任务更多的内存.

我们怎样才能给它更多的记忆?

我们尝试将以下配置添加到操作中:

<configuration>
  <property>
    <name>mapreduce.map.memory.mb</name>
    <value>6144</value> <!-- for example -->
  </property>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我们都将其设置为内联(在workflow.xml中)配置和jobXml.两者都没有任何影响.

oozie hadoop-yarn

4
推荐指数
1
解决办法
7721
查看次数

Oozie协调员有多个工作流程

我有三个Workflow XML文件,如WF1 WF2 WF3.我可以在一个协调员中将所有这些工作流程链接到以下操作吗?WF1是时间相关的WF2是文件依赖性WF3是没有任何依赖性.

oozie oozie-coordinator

4
推荐指数
2
解决办法
6628
查看次数

Oozie协调员以sysdate作为开始时间

我想以开始时间作为sysdate运行oozie coordinator.我怎么做?
是否可以将sysdate作为开始日期?它会赶上吗?

oozie oozie-coordinator

4
推荐指数
1
解决办法
3613
查看次数

如何在OOZIE工作流程中使用逻辑运算符

我有一个oozie工作流,它在谓词中使用决策控制节点,我要“ &&”两个不同的条件,并且我需要在它们之间使用“ &&”来获得最终的TRUE / FALSE结果

我找不到这种情况的谓词语法

我正在使用这个

 <decision name="comboDecision">
        <switch>
            <case to="alpha">
              ---------
            </case>
        </switch>
  </decision>
Run Code Online (Sandbox Code Playgroud)

我想这样做=

<decision name="comboDecision">
        <switch>
            <case to="alpha">
             condition1 && condition2
            </case>
        </switch>
  </decision>
Run Code Online (Sandbox Code Playgroud)

有人可以帮我语法吗?

workflow controls hadoop oozie

4
推荐指数
1
解决办法
7408
查看次数

错误:E0708:E0708:转换无效

使用本教程我为hive脚本创建了工作流,但是当我在命令下运行时给出了错误:

 oozie job -oozie http://xxx.xx.xx.xx:11000/oozie -config  /home/ec2-user/ankit/oozie_job1/job.properties -submit
Run Code Online (Sandbox Code Playgroud)

我得到的错误是这样的:

错误:E0708:E0708:转换无效,节点[Oozie_test]转换[Tester]

我的工作流程代码如下:

<workflow-app name="Tester" xmlns="uri:oozie:workflow:0.1">
<start to="Oozie_test"/>
<action name="Oozie_test">
<hive xmlns="uri:oozie:hive-action:0.2">
 <job-tracker>xxx.xx.xx.xx:8021</job-tracker>
 <name-node>xxx.xx.11.xx:8020</name-node>
 <configuration>
    <property>
         <name>oozie.hive.defaults</name>
         <value>/home/ec2-user/ankit/oozie_job1/hive-default.xml</value>
    </property>
 </configuration>
 <script>hive_job1.hql</script>
</hive>
<ok to="Tester"/>
<error to="fail"/>
</action>
<end name="end"/>
</workflow-app>
Run Code Online (Sandbox Code Playgroud)

由于这是我的第一个oozie工作流程,我无法得到我错在哪里或我错过了什么.

我试图在互联网上搜索解决方案,但找不到任何运气.

请让我知道如何解决此错误以及我方需要的其他信息.

hadoop oozie hadoop2

4
推荐指数
1
解决办法
4942
查看次数