我对 hive 还不够熟悉,所以就在这里。我们正在使用 Oozie 将一堆 Hive ql 作业链接在一起。我的任务是优化已经在我们的生产环境中运行的应用程序。业务合作伙伴不希望花费的时间超过 1.5 小时。我注意到的第一件事是,这个工作流程中有大约 90 个 oozie 操作。我们还与其他应用程序共享纱线队列。其中一半操作是 hive2 操作,每个 Hive QL 操作仅执行一个 HQL 语句。有时 HiveQL 操作之间会出现延迟,因为 Oozie 启动器在队列中等待,然后 HiveQL 在队列中等待。这正常吗?有没有办法解决这个问题。
对于时间敏感的 Hive 查询: 1) Oozie 是我们应该用来将时间敏感的 HiveQL 脚本链接在一起的正确工具吗 2) 有哪些替代方案(使用 Java 或 Python 启动和处理 HQL 之间的流程是否具有性能优势)?3)HQL本身有什么我们可以做的吗?(再说一次,我是 hive 的新手,主要是 MapReduce/Spark 和简单工作流程(少于 20 个操作)的经验 4)还有其他我没有提到的性能考虑因素吗?
谢谢你,
我正在尝试使用协调器运行工作流,但是当我尝试将工作流和协调器XML文件路径设置在一起时,我收到错误.这就是我的jobs.properties文件的样子:
nameNode=hdfs://10.74.6.155:9000
jobTracker=10.74.6.155:9010
queueName=default
oozie.use.system.libpath=true
oozie.wf.application.path=${nameNode}/user/${user.name}/examples/apps/test/
oozie.coord.application.path=${nameNode}/user/${user.name}/examples/apps/test/
Run Code Online (Sandbox Code Playgroud)
当我使用命令行运行我的工作流程时:
bin\oozie job -oozie http://localhost:11000/oozie -config examples\apps\test\job.properties -run
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error: E0302 : E0302: Invalid parameter [{0}]
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
谢谢!
我很想知道用Hadoop替换我的Oracle数据库并了解Hadoop生态系统.
我有很多PL/SQL脚本需要更换,如果我去这条路线.
我的印象是,通过一些努力,我可以将任何PL/SQL脚本转换/翻译成类似的Pig Latin脚本.如果不仅是Pig Latin,那么通过Oozie将Hive和Pig结合起来.
它是否正确?
当我尝试使用以下代码运行 oozie hive 操作时
<action name="Hive-Node">
<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>
<prepare>
<mkdir path="${nameNode}/hive/output"/>
</prepare>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
<property>
<name>hive.insert.into.multilevel.dirs</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>${hbaseZooQuorum}</value>
</property>
</configuration>
<script>${HIVE_QUERY_FILE}</script>
</hive>
<ok to="End" />
<error to="Fail" />
</action>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error: E0701 : E0701: XML schema error, cvc-complex-type.2.4.a: Invalid content was found starting with element 'prepare'. One of '{"uri:oozie:hive-action:0.2":configuration, "uri:oozie:hive-action:0.2":script}' is expected.
Run Code Online (Sandbox Code Playgroud)
但是在我修改了 hive action 中声明标签的顺序<job-xml>...</job-xml>后<prepare>...</prepare>,即移动后,它工作正常。
是否有必要在 oozie 操作中遵循这些命令?
我有一个在文件coordinator.xml中定义的oozie协调器作业,它运行在workflow.xml文件中定义的工作流作业。我想运行协调器作业,但是当我发出命令“ oozie job -oozie http://.../oozie/ -config ./job.properties -run”时,它将运行工作流而不是协调器。我如何告诉它运行协调器而不是工作流程?
我有一个以下shell脚本:
DATE= date +"%d%b%y" -d "-1 days"
Run Code Online (Sandbox Code Playgroud)
我如何传递DATE给Java动作?
我在Oozie中遇到过几个SparkAction作业的例子,其中大多数都是用Java编写的.我编辑了一下并在Cloudera CDH Quickstart 5.4.0(使用Spark版本1.4.0)中运行该示例.
workflow.xml
<workflow-app xmlns='uri:oozie:workflow:0.5' name='SparkFileCopy'>
<start to='spark-node' />
<action name='spark-node'>
<spark xmlns="uri:oozie:spark-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<prepare>
<delete path="${nameNode}/user/${wf:user()}/${examplesRoot}/output-data/spark"/>
</prepare>
<master>${master}</master>
<mode>${mode}</mode>
<name>Spark-FileCopy</name>
<class>org.apache.oozie.example.SparkFileCopy</class>
<jar>${nameNode}/user/${wf:user()}/${examplesRoot}/apps/spark/lib/oozie-examples.jar</jar>
<arg>${nameNode}/user/${wf:user()}/${examplesRoot}/input-data/text/data.txt</arg>
<arg>${nameNode}/user/${wf:user()}/${examplesRoot}/output-data/spark</arg>
</spark>
<ok to="end" />
<error to="fail" />
</action>
<kill name="fail">
<message>Workflow failed, error
message[${wf:errorMessage(wf:lastErrorNode())}]
</message>
</kill>
<end name='end' />
</workflow-app>
Run Code Online (Sandbox Code Playgroud)
job.properties
nameNode=hdfs://quickstart.cloudera:8020
jobTracker=quickstart.cloudera:8032
master=local[2]
mode=client
examplesRoot=examples
oozie.use.system.libpath=true
oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/spark
Run Code Online (Sandbox Code Playgroud)
Oozie工作流示例(在Java中)能够完成并完成其任务.
不过我spark-submit用Python/PySpark 编写了一份工作.我试着去除<class>罐子
<jar>my_pyspark_job.py</jar>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试运行Oozie-Spark作业时,我在日志中出错:
Launcher ERROR, reason: Main class [org.apache.oozie.action.hadoop.SparkMain], exit code [2]
Run Code Online (Sandbox Code Playgroud)
我想知道如果我使用Python/PySpark,我应该放置什么<class>和<jar>标签?
我有一个oozie工作流程.我正在提交所有的蜂巢行动
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
Run Code Online (Sandbox Code Playgroud)
但是对于几个hive操作,启动的作业不在指定的队列中; 它在默认队列中调用.
请告诉我这种行为和解决方案背后的原因.
这是每日/每周安排Spark Jobs的推荐工具.1)Oozie 2)Luigi 3)Azkaban 4)Chronos 5)气流
提前致谢.
我正在寻找一个使用通配符获取给定名称的所有工作流程ID的列表的命令。
当我从workflow.xml知道完整的工作流名称时,我正在使用以下命令来获取详细信息
oozie jobs -oozie http://oozie.org:11000/oozie
-filter name="workflow name"
Run Code Online (Sandbox Code Playgroud)
在这里,当我仅知道使用通配符的工作流的部分名称时,应如何使用filter命令。
如何使用name值中的通配符?寻找类似的东西
oozie jobs -oozie http://oozie.org:11000/oozie
-filter name="workflo*"
Run Code Online (Sandbox Code Playgroud)
这将列出名称以“ workflo ” 开头的工作流程的所有工作流程ID详细信息。
Oozie is failing with following error when workflow.xml is provided from s3, But the same worked provided workflow.xml from HDFS. Same has worked with earlier versions of oozie, Is there anything changed from 4.3 version of oozie.?
Env:
oozie.service.HadoopAccessorService.supported.filesystems=*Job.properties
nameNode=hdfs://ambari-master-1a.xdata.com:8020
jobTracker=ambari-master-2a.xdata.com:8050
queue=default
#OOZIE job details
basepath=s3a://mybucket/test/oozie
oozie.use.system.libpath=true
oozie.wf.application.path=${basepath}/jobs/test-hive?
Run Code Online (Sandbox Code Playgroud)
#(works with this change in Job.properties)
basepath=hdfs://ambari-master-1a.xdata.com:8020/test/oozie
workflow.xml
?<workflow-app xmlns="uri:oozie:workflow:0.5" name="test-hive">
<start to="hive-query"/>
<action name="hive-query" retry-max="2" retry-interval="10">
<hive xmlns="uri:oozie:hive-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<script>test_hive.sql</script>
</hive>
<ok to="end"/>
<error to="kill"/> …Run Code Online (Sandbox Code Playgroud) 在http:// localhost:11000/oozie /上浏览oozie
它在网页上显示以下错误 -
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 25 in the generated java file
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:356)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:321)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
org.apache.oozie.servlet.AuthFilter$2.doFilter(AuthFilter.java:126)
org.apache.hadoop.security.authentication.server.AuthenticationFilter.doFilter(AuthenticationFilter.java:585)
org.apache.hadoop.security.authentication.server.AuthenticationFilter.doFilter(AuthenticationFilter.java:548)
org.apache.oozie.servlet.AuthFilter.doFilter(AuthFilter.java:131)
org.apache.oozie.servlet.HostnameFilter.doFilter(HostnameFilter.java:84)
Run Code Online (Sandbox Code Playgroud)

目前我遇到一个问题确实需要一些帮助.我们正在尝试对我们的hadoop集群进行kerberize,包括hive server2和oozie.我的oozie作业在数据节点中旋转了一个java动作,试图连接到kerberized hive服务器2.没有用户的kerberos keytab进行身份验证.所以我只能在java动作中使用oozie传递的委托令牌连接到hive服务器2.我的问题是:有没有办法在oozie java动作中使用委托令牌连接到hive服务器2?如果是这样,我怎么能通过hive JDBC做到这一点?谢谢贾里