oozie使用中的一些总结(持续完善)

本文详细介绍了 Oozie 的使用与配置方法,包括如何寻找所需的库文件、解决内存问题、配置 MySQL 数据库及驱动、正确设置 NameNode 属性等。此外还探讨了分支节点的限制与特殊场景下的注意事项。

 

 

 

0 关于oozie 寻找包寻找位置原则:

 

 

oozie在运行的时候 只会去两个地方寻找自己需要的lib
         1 回去当前提交任务的workflow所在的hdfs目录下的lib下寻找 
		  eg: /user/root/examples/apps/fork-merge的workflow下有  job.properties   lib   workflow.xml三个目录 会去lib目录下找对应jar
     
         2 如果是shell命令提交的话,他会主动去自己的公共资源库中寻找自己需要的jar文件,公共资源库为 /user/root/share/lib/lib_20150128185329
		   其中共享库里面存放的是oozie 常见action需要的包  比如hive  hive2 pig  sqoop oozie  hcatalog  distcp等
		   如果是java客户端提交任务的话,需要设置oozie.libpath(此时此路径下可以存放你工程需要的别的jar包而不需要存放在共享库中 防止混淆)
		   properties.setProperty("oozie.use.system.libpath","true");  ---> 设置使用oozie共享库
		   properties.setProperty("oozie.libpath","hdfs://master:9000/user/hdfs/examples/thirdlib");  ---> 设置存放工程使用的第三方的jar
		   
		 3 上面2是针对java代码写法,如果对应到job.properties写法为:
		   
		   nameNode=hdfs://master:9000
		   jobTracker=master:8032
		   queueName=default
		   examplesRoot=examples
		   
		   oozie.use.system.libpath=true
		   oozie.libpath=hdfs://master:9000/user/hdfs/examples/thirdlib
		   
		   oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/sqoop-sqlserver-to-hdfs

 

 

 

 

 

1 关于oozie使用调用sqoop action执行数据导出导入时对应的jar包

 

    1.1 需要将 mysql/sqlserver/oracle等主流数据库的驱动包放在oozie的共享库对应hdfs目录下 eg:

    hdfs://master:9000/user/root/share/lib/lib_20141031094140/sqoop下

    1.2 将 oozie-sharelib-sqoop-4.0.0-cdh5.1.0.jar   sqoop-1.4.4-cdh5.1.0.jar也放在上述目录中

    1.3 你环境中安装的sqoop是1.4.5的版本,那么你就需要在你的sqoop下将对应的包

         eg: sqoop-1.4.5.jar 放在oozie共享库的sqoop目录下,否则在oozie调用sqoop的时候 因为会找不到包

       而包各种奇怪的错。

 

 

2 hadoop运行时内存不足或者其他原因内存引起的错误

 

修改hadoop的配置文件 mapred-site.xml 增加如下内容

<property>
	<name>mapreduce.map.memory.mb</name>
	<value>1024</value>
</property>
<property>
	<name>mapreduce.reduce.memory.mb</name>
	<value>1024</value>
</property>
<property>
	<name>yarn.app.mapreduce.am.resource.mb</name>
	<value>500</value>
</property>

 
修改hadoop的配置文件 yarn-site.xml 增加如下内容

<property>
	<name>yarn.scheduler.minimum-allocation-mb</name>
	<value>512</value>
</property>
<property>
	<name>yarn.scheduler.maximum-allocation-mb</name>
	<value>2048</value>
</property>





 

3 关于oozie安装时mysql数据库问题和驱动这块:

 

由于oozie错误或者其他原因造成的oozie安装失败,第二次安装如果采用默认值可能会失败:eg 数据库初始化失败错误,
处理方式: 删除上一次默认的oozie数据文件data文件夹或者修改默认的值使得安装指向别的地方。

 

oozie要用mysql存储数据时,需要在搭建oozie时,将 mysql链接驱动拷贝 分别放在

oozie-4.2.0/lib下

oozie-4.2.0/oozie-server/lib下

oozie-4.2.0/libtools下

 

4 oozie提交任务时,job.properties文件的namenode属性值不建议写IP 建议写主机名

 

5 关于oozie分支的:

 

 oozie的节点分为 动作节点(action) 和控制节点(比如 start end  fork merge)  其中控制节点下目前只可以放动作节点
  分支节点下不支持在存放分支节点(即分支套分支的写法)
  案例来自官网: http://oozie.apache.org/docs/4.0.0/WorkflowFunctionalSpec.html#a3.1.5_Fork_and_Join_Control_Nodes
  
  <workflow-app name="sample-wf" xmlns="uri:oozie:workflow:0.1">
    ...
    <fork name="forking">
        <path start="firstparalleljob"/>
        <path start="secondparalleljob"/>
    </fork>
    <action name="firstparallejob">
        <map-reduce>
            <job-tracker>foo:8021</job-tracker>
            <name-node>bar:8020</name-node>
            <job-xml>job1.xml</job-xml>
        </map-reduce>
        <ok to="joining"/>
        <error to="kill"/>
    </action>
    <action name="secondparalleljob">
        <map-reduce>
            <job-tracker>foo:8021</job-tracker>
            <name-node>bar:8020</name-node>
            <job-xml>job2.xml</job-xml>
        </map-reduce>
        <ok to="joining"/>
        <error to="kill"/>
    </action>
    <join name="joining" to="nextaction"/>
    ...
</workflow-app>

 

5.2  oozie分支中,如果分支中出现的是  java节点 但是java节点类中调用的是 mr,

       那么这种情况下,

       要么用 cdh集成好的oozie来执行

       要么你编译apache oozie 然后 和 apache hadoop   hadoop sqoop一起使用,

     否则,如果你下载chd的oozie + cdh的hadoop ,执行5,.2这种情况下 会在分支这块卡死的。

 

    这个结论是工作中遇到 弄了好几个工作日得到的结论。

 

 

 

 

 

 

 

6 关于oozie 对应mysql数据库下表的说明:

 

 

 

 

 

7 关于oozie webservice api的部分说明:

 

 

 

 

 

 

其余问题后续需要跟进的:   需要等到7月份

 

a) 关于oozie流程设计图设计方面的技巧 规则 建议

 

b) 关于oozie 用户的,尤其是oozie在 cm版本上的用户  什么oozie用户 root用户 等等

    在cm上oozie用的是哪个账号提交任务  白名单等

   

 

c)  oozie提怎么提交任务给mr的,oozie是否有一些参数来规定提交到mr后 mr任务的启动的任务数,

    占有资源等

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值