标签: oozie

Oozie shell Action - 从shell问题运行配置单元

基于条件为真我在shell脚本中执行hive -e.它工作正常.当我在Oozie中将此脚本放入Shell操作并运行时,我得到一个scriptName.sh:第42行:hive:命令未找到异常.

我尝试在shell动作中传递<env-var> PATH =/usr/lib/hive </ env-var>,但我想我在那里犯了一些错误,因为我得到了同样的错误scriptName.sh:第42行:hive:找不到命令

编辑:which hive在shell脚本中使用过.它的输出不一致.我得到两个输出变量:
1./usr/bin/hive以及Delegation token can be issued only with kerberos or web authenticationJava IOException."

2.which : hive not in {.:/sbin:/usr/bin:/usr/sbin:...}

shell hadoop hive oozie

2
推荐指数
1
解决办法
5481
查看次数

在Oozie中运行Hive Action时出错

我正试图通过Oozie进行蜂巢动作.我的workflow.xml情况如下:

<workflow-app name='edu-apollogrp-dfe' xmlns="uri:oozie:workflow:0.1">
    <start to="HiveEvent"/>
    <action name="HiveEvent">
            <hive xmlns="uri:oozie:hive-action:0.2">
                    <job-tracker>${jobTracker}</job-tracker>
                    <name-node>${nameNode}</name-node>
                    <configuration>
                            <property>
                                    <name>oozie.hive.defaults</name>
                                    <value>${hiveConfigDefaultXml}</value>
                            </property>
                    </configuration>
                    <script>${hiveQuery}</script>
                    <param>OUTPUT=${StagingDir}</param>
            </hive>

            <ok to="end"/>
            <error to="end"/>
    </action>

    <kill name='kill'>
                    <message>Hive failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name='end'/>
Run Code Online (Sandbox Code Playgroud)

这是我的job.properties文件:

oozie.wf.application.path=${nameNode}/user/${user.name}/hiveQuery
oozie.libpath=${nameNode}/user/${user.name}/hiveQuery/lib
queueName=interactive

#QA
nameNode=hdfs://hdfs.bravo.hadoop.apollogrp.edu
jobTracker=mapred.bravo.hadoop.apollogrp.edu:8021

# Hive

hiveConfigDefaultXml=/etc/hive/conf/hive-default.xml

hiveQuery=hiveQuery.hql
StagingDir=${nameNode}/user/${user.name}/hiveQuery/Output
Run Code Online (Sandbox Code Playgroud)

当我运行此工作流程时,我最终得到此错误:

ACTION[0126944-130726213131121-oozie-oozi-W@HiveEvent] Launcher exception: org/apache/hadoop/hive/cli/CliDriver
java.lang.NoClassDefFoundError: org/apache/hadoop/hive/cli/CliDriver
Run Code Online (Sandbox Code Playgroud)

Error Code: JA018

Error Message: org/apache/hadoop/hive/cli/CliDriver

我不确定这个错误意味着什么.我哪里错了?

编辑

此链接说错误代码JA018是:JA018 is output directory exists error in workflow map-reduce action.但在我的情况下,输出目录不存在.这使得它更加令人困惑

hadoop hive mapreduce oozie

2
推荐指数
1
解决办法
1万
查看次数

如何使用在 oozie 中执行的脚本访问本地目录?

我在我的机器上运行带有 virtualbox 的 CDH4.5。在虚拟机内部,我有一个本地目录:/home/cloudera/logs/abc.log,我想做一个非常简单的事情,我在 oozie 中安排了一个非常简单的脚本来复制abc.log到 HDFS ( /user/cloudera/logs/)。

计划的作业已执行,但在 stderr 中,它向我显示: cannot access /home/cloudera/logs/abc.log: No such file or directory

有没有办法可以使这项工作?因为我想用 oozie 安排一个脚本,每天将文件从本地复制到 HDFS 作为沐浴作业。谢谢!!

shell hadoop copy oozie

2
推荐指数
1
解决办法
3898
查看次数

并行运行Oozie操作

我正在使用Hue的工作流编辑器来开发Oozie工作流程.有一些行动应该并行执行.

是否可以同时执行两个或多个操作?
我怎样才能在顺化中进行设置?

hadoop hue oozie

2
推荐指数
1
解决办法
8570
查看次数

通过 HUE 创建的 Oozie 工作流程的 Rest API

我通过 Hue 界面创建了 Oozie 工作流程。我有几个与此相关的问题

A。我可以看到创建的工作流程 XML。但我没有看到 job.properties 文件。Job.properties 存储在哪里?

b. 有 REST API 可以提交通过编写工作流程.xml 和 job.properties 创建的 Oozie 作业。对于通过 HUE 创建的 oozie 工作流程,REST API 是什么?任何样本都会有帮助。

hadoop hue oozie

2
推荐指数
1
解决办法
5248
查看次数

在Oozie Hive操作中的EL Expression中检查变量是否存在

我正在尝试为Oozie工作流创建一个通用模板,用于运行不同的配置单元脚本.每个配置单元脚本都有自己的参数.

在Oozie的Hive Action中,在使用PARAM标签设置参数时,我需要检查变量是否存在,如果它不存在,我需要将其默认为"".

我试过了,
<param> my_parameter_var = $ {empty my_parameter?"":my_parameter} </ param>

这只能检查my_parameter是空字符串还是空字符串.如果变量根本不存在,则此检查失败; 出现以下错误:

错误代码:EL_ERROR
错误消息:无法解析变量[my_parameter]

有人可以帮助我如何实现这一目标吗?

hadoop hive el oozie

2
推荐指数
1
解决办法
2234
查看次数

在oozie Java Action中传递HBase凭据

我需要安排一个与安全的hbase交互的oozie Java操作,所以我需要为Java操作提供hbase凭据.我使用的是安全的hortonworks 2.2环境,我的工作流XML如下所示

<workflow-app xmlns="uri:oozie:workflow:0.4" name="solr-wf">
    <credentials>
         <credential name="hbase" type="hbase">
         </credential>
      </credentials>

    <start to="java-node"/>
    <action name="java-node" cred="hbase">
        <java>  
             <job-tracker>${jobTracker}</job-tracker>
             <name-node>${nameNode}</name-node>
             <main-class>com.test.hbase.TestHBaseSecure</main-class>
            <arg>${arg1}</arg>
        </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"/>
</workflow-app>
Run Code Online (Sandbox Code Playgroud)

我还修改了oozie属性以包含HbaseCredentials类

oozie.credentials.credentialclasses=hcat=org.apache.oozie.action.hadoop.HCatCredentials,hbase=org.apache.oozie.action.hadoop.HbaseCredentials
Run Code Online (Sandbox Code Playgroud)

但我无法运行它抛出错误的工作,下面是堆栈跟踪

java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration
    at org.apache.oozie.action.hadoop.HbaseCredentials.copyHbaseConfToJobConf(HbaseCredentials.java:60)
    at org.apache.oozie.action.hadoop.HbaseCredentials.addtoJobConf(HbaseCredentials.java:49)
    at org.apache.oozie.action.hadoop.JavaActionExecutor.setCredentialTokens(JavaActionExecutor.java:1054)
    at org.apache.oozie.action.hadoop.JavaActionExecutor.submitLauncher(JavaActionExecutor.java:913)
    at org.apache.oozie.action.hadoop.JavaActionExecutor.start(JavaActionExecutor.java:1135)
    at org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:228)
    at org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:63)
    at org.apache.oozie.command.XCommand.call(XCommand.java:281)
    at org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:323)
    at org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:252)
    at org.apache.oozie.service.CallableQueueService$CallableWrapper.run(CallableQueueService.java:174)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)

其他工作运行良好,只有hbase交互失败的工作.我已经在我的lib目录中包含了所有的hbase jar,我无法弄清楚这个问题.

更新的workflow.xml:

<workflow-app xmlns="uri:oozie:workflow:0.4" name="${appName}">
<credentials>
        <credential name="hbase-cred" …
Run Code Online (Sandbox Code Playgroud)

hadoop hbase kerberos oozie hortonworks-data-platform

2
推荐指数
1
解决办法
1917
查看次数

Oozie shell动作:exec和文件标签

我是Oozie的新手,我已经阅读了一些Oozie shell动作示例,但这让我对某些事情感到困惑.

我见过的例子中没有<file>标签.

一些例子,像Cloudera的位置,重复文件标签shell脚本:

<shell xmlns="uri:oozie:shell-action:0.2">
    <exec>check-hour.sh</exec>
    <argument>${earthquakeMinThreshold}</argument>
    <file>check-hour.sh</file>
</shell>
Run Code Online (Sandbox Code Playgroud)

Oozie的网站上,将shell脚本(${EXEC}来自job.properties 的引用,指向script.sh文件)写入两次,用#分隔.

<shell xmlns="uri:oozie:shell-action:0.1">
    ...
    <exec>${EXEC}</exec>
    <argument>A</argument>
    <argument>B</argument>
    <file>${EXEC}#${EXEC}</file>
</shell>
Run Code Online (Sandbox Code Playgroud)

还有一些例子我看过路径(HDFS或本地?)script.sh#script.sh<file>标签内部之前的位置.

<shell xmlns="uri:oozie:shell-action:0.1">
    ...
    <exec>script.sh</exec>
    <argument>A</argument>
    <argument>B</argument>
    <file>/path/script.sh#script.sh</file>
</shell>
Run Code Online (Sandbox Code Playgroud)

据我所知,任何shell脚本文件都可以包含在工作流HDFS路径中(workflow.xml所在的路径).

有人能解释这些例子中的差异,以及如何<exec>,<file>,script.sh#script.sh,和/path/script.sh#script.sh使用?

oozie

2
推荐指数
1
解决办法
3644
查看次数

在Oozie中运行python脚本时如何导入本地python模块?

我有两个python文件 - my_python_A.py和my_python_B.py.第一个文件引用第二个(from my_python_B import *).

我正在Oozie中的shell动作执行第一个python文件(即脚本很简单python my_python_A.py),并且收到以下错误:

Traceback (most recent call last):
  File "my_python_A.py", line 2, in <module>
    from my_python_B import *
ImportError: No module named my_python_B
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.ShellMain], exit code [1]
Run Code Online (Sandbox Code Playgroud)

两个python文件都位于HDFS中的同一目录下.如何才能使此import语句生效?

python hdfs oozie

2
推荐指数
1
解决办法
2658
查看次数

Distcp - Container超出物理内存限制

我已经和distcp打了好几天了,我发誓我已经用Google搜索了.这是我的用例:

使用案例

我在某个位置有一个主文件夹说/ hdfs/root,有很多子目录(深度不固定)和文件.

卷:200,000个文件〜= 30个GO

我需要只为客户端复制一个子集,/ hdfs/root在另一个位置,比如说/ hdfs/dest这个子集由一个可以随时间更新的绝对路径列表定义.

卷:50,000个文件〜= 5个GO

你明白我不能使用简单的hdfs dfs -cp /hdfs/root /hdfs dest因为它没有被优化,它将占用每个文件,并且它没有一个更新模式.

解决方案POC

我最终以两种方式使用hadoop distcp:

Algo 1 (simplified):
# I start up to N distcp jobs in parallel for each subdir, with N=MAX_PROC (~30)

foreach subdir in mylist: 
    # mylist = /hdfs/root/dirX/file1 /hdfs/root/dirX/file2 ...
    mylist = buildList(subdirs)
    hadoop distcp -i -pct -update mylist /hdfs/dest/subdir &
Run Code Online (Sandbox Code Playgroud)

Algo 2
# I start one distcp that has a blacklist
blacklist = …
Run Code Online (Sandbox Code Playgroud)

hadoop jvm oozie hortonworks-data-platform distcp

2
推荐指数
1
解决办法
3449
查看次数

标签 统计

oozie ×10

hadoop ×8

hive ×3

hortonworks-data-platform ×2

hue ×2

shell ×2

copy ×1

distcp ×1

el ×1

hbase ×1

hdfs ×1

jvm ×1

kerberos ×1

mapreduce ×1

python ×1