从第二工作流作业运行中从Oozie运行Hive Action时遇到了一些问题。 在Worfklow的第一轮工作中,乔布斯和Pig& Hive Action,但是每当Job要在其第二个实例上运行时,在预定的时间,同一个作业失败,Hive异常表示无法访问Metastore derby。 {不确定哪个Jar正在检查Derby,在哪里使用Oracle,同样在hive-site.xml中更新,hive-default.xml}
如果作业在杀死前一个实例后刚刚开始,则按预期完成同样的工作。
使用Hive0.9和Oozie 3.3.0,使用Oracle的Metastore 已更新HDFS中的hive-site.xml,hive-default.xml,oozie-user-hive-default.xml以及DFS Oozie的本地和共享位置,但仍然无效。
我的工作流程如下:
<action name="hiveForUploadData">
<hive xmlns="uri:oozie:hive-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>oozie.launcher.mapred.job.queue.name</name>
<value>default</value>
</property>
<property>
<name>oozie.hive.defaults</name>
<value>${namenode}/user/hive-default/hive-default.xml</value> -- {have tried with hive-site.xml & oozie-user-hive-default.xml as well }
</property>
</configuration>
<script>UploadScripts.q</script>
<param>inputfile_name=/user/input/table/filename</param>
</hive>
<ok to="end"/>
<error to="error"/>
</action>
<kill name="error">
<message>Hive Action Failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
1st Run取得了成功,工作正常的Oracle Meta Store也得到了更新 第二轮运行失败:无法访问Metastore {derby} 1836 [main] INFO hive.ql.parse.ParseDriver - Parse Completed 1959 [main] INFO org.apache.hadoop.hive.metastore.HiveMetaStore - 0:使用实现类打开原始存储:org.apache.hadoop.hive.metastore.ObjectStore 1985 [main] INFO org.apache.hadoop.hive.metastore.ObjectStore - ObjectStore,initialize被调用 2278 [main] ERROR DataNucleus.Plugin - Bundle&#34; org.eclipse.jdt.core&#34;需要&#34; org.eclipse.core.resources&#34;但它无法解决。 2278 [main] ERROR DataNucleus.Plugin - Bundle&#34; org.eclipse.jdt.core&#34;需要&#34; org.eclipse.core.runtime&#34;但它无法解决。 2278 [main] ERROR DataNucleus.Plugin - Bundle&#34; org.eclipse.jdt.core&#34;需要&#34; org.eclipse.text&#34;但它无法解决。 2420 [main] INFO DataNucleus.Persistence - 属性datanucleus.cache.level2 unknown - 将被忽略 2421 [main] INFO DataNucleus.Persistence - 属性javax.jdo.option.NonTransactionalRead unknown - 将被忽略 2421 [主要] INFO DataNucleus.Persistence - =================持久性配置=============== 2426 [主要] INFO DataNucleus.Persistence - DataNucleus持久性工厂 - 供应商:&#34; DataNucleus&#34;版本:&#34; 2.0.3&#34; 2426 [main] INFO DataNucleus.Persistence - 为数据存储区初始化的DataNucleus Persistence Factory URL =&#34; jdbc:derby :; databaseName = metastore_db; create = true&#34;驾驶员=&#34; org.apache.derby.jdbc.EmbeddedDriver&#34;的userName =&#34; APP&#34; 2426 [主要] INFO DataNucleus.Persistence - ========================================= ================== 8704 [main] INFO DataNucleus.Datastore.Schema - 初始化目录&#34;&#34;,Schema&#34; APP&#34;使用&#34;无&#34;自动启动选项 8704 [main] INFO DataNucleus.Datastore.Schema - Catalog&#34;&#34;,Schema&#34; APP&#34;初始化 - 管理0个班级 8795 [main] INFO org.apache.hadoop.hive.metastore.ObjectStore - 使用hive.metastore.cache.pinobjtypes =&#34;表,StorageDescriptor,SerDeInfo,分区,数据库,类型,FieldSchema,Order&设置MetaStore对象引脚类#34; 8832 [main] INFO DataNucleus.MetaData - 注册元数据初始化的监听器 8858 [main] INFO org.apache.hadoop.hive.metastore.ObjectStore - 初始化的ObjectStore
我不确定为什么Oozie没有阅读用户定义的&#34; hive-default.xml&#34;同样是从Some Jar读取,不确定使用哪个Jar。 同样为什么/如何每一次新鲜的Oozie工作获得成功,从第二次运行开始,这项工作无法阅读相同的内容。 你能帮助我找出丢失的地方或需要更新的地方
答案 0 :(得分:0)
您需要在<configuration>
标记上方插入:
<job-xml>[HIVE SETTINGS FILE]</job-xml>
其中[HIVE SETTINGS FILE]
是最常称为hive-site.xml
的文件。这将使您的Hive脚本能够连接到Metastore。
答案 1 :(得分:0)
一旦将OJDBC驱动程序放在HDFS的共享Lib位置,问题就解决了。
在Oozie Shared Location中没有提供所述Jar,因为Derby Jar可用,所以Oozie试图连接Derby for Hive-MetaStore。默认情况下。