Hadoop离线数据分析平台实战——430MR和Hive任务Oozie部署
参考:oozie\package-info.java
项目进度
模块名称 | 完成情况 |
---|---|
用户基本信息分析(MR)� | 完成 |
浏览器信息分析(MR) | 完成 |
地域信息分析(MR) | 完成 |
外链信息分析(MR) | 完成 |
用户浏览深度分析(Hive) | 完成 |
订单分析(Hive) | 完成 |
事件分析(Hive) | 完成 |
MR程序Oozie workflow部署
MR程序有两种方式进行oozie部署,
第一种就是使用oozie的mapreduce action进行部署,
第二种就是使用普通的java action进行部署。
由于我们的mr程序读取的是hbase中的数据结构,
所以我们采用第二种部署方式来进行mr程序的部署操作。
注意:
在我们打包的时候,需要将TransformerBaseRunner类中的initJob方法中的TableMapReduceUtil.initTableMapperJob调用设置为集群运行(最后一个参数为true)。
以及AnalyserLogDataRunner类中run方法中的TableMapReduceUtil.initTableReducerJob设置为集群运行(最后一个参数为true)。
Hive&Sqoop脚本Oozie部署
针对Hive和sqoop脚本,oozie提供了专门的hive action和sqoop action,
但是我们这里采用将hive脚本和sqoop脚本写入到shell文件中,
通过shell命令给定参数,然后运行脚本的方式。
所以在这里我们采用oozie部署shell action来进行hive和sqoop的运行。
Oozie最终部署情况
我们定义一个定时的oozie的Coordinator,在其中包含所有的workflow,对应workflow的分支操作来进行组合。
需要注意的是:
oozie是通过异常信息来判断是否执行成功的,
所以我们需要注意mr成功执行失败的情况下,
我们需要进行异常的抛出。
作业:自己完善oozie部署
注意:
oozie的运行要求启动hdfs、yarn、historyserver这三个服务(必须),
针对具体的workflow还需要启动hbase、hivemetastore、mysql等服务。
MR和Hive的区别(优缺点)
- 运算资源消耗
无论从时间,数据量,计算量上来看,一般情况下mr都是优于或者等于hive的。mr的灵活性是毋庸置疑的。在转换到hive的过程中,会有一些为了实现某些场景的需求而不得不用多步hive来实现的时候。 - 开发成本&维护成本
相比于mr每次开发&维度都需要修改代码逻辑外,hive脚本可以比较容易的进行逻辑修改和代码管理(文本),但是在超大型或者大型的生成集群上,调试hive脚本相对于调试mr成功更加复杂和困难。