基于hive的dip-data-analyze 重发

应公司要求,特别写了一个博客,提交给公司,这里也再重发下。


基于hiveserverDip-Data-Analyze

一、           hive 简介

        hive 是一个基于 hadoop 的开源数据仓库工具,用于存储和处理海量结构化数据。    它把海量数据存储于hadoop 文件系统,而不是数据库,但提供了一套类数据库的数据存储和处理机制,并采用 HQL (类 SQL )语言对这些数据进行自动化管理和处理。我们可以把 hive 中海量结构化数据看成一个个的表,而实际上这些数据是分布式存储在 HDFS 中的。 Hive 经过对语句进行解析和转换,最终生成一系列基于 hadoop 的 map/reduce 任务,通过执行这些任务完成数据处理。

        Hive 诞生于 facebook 的日志分析需求,面对海量的结构化数据, hive 以较低的成本完成了以往需要大规模数据库才能完成的任务,并且学习门槛相对较低,应用开发灵活而高效。

        Hive 自 2009.4.29 发布第一个官方稳定版 0.3.0 至今,不过一年的时间,正在慢慢完善,网上能找到的相关资料相当少,尤其中文资料更少,本文结合业务对 hive 的应用做了一些探索,并把这些经验做一个总结,所谓前车之鉴,希望读者能少走一些弯路。

        Hive 的官方 wiki 请参考这里 :

        http://wiki.apache.org/hadoop/Hive

        官方主页在这里:

        http://hadoop.apache.org/hive/

        hive-0.5.0 源码包和二进制发布包的下载地址

        http://labs.renren.com/apache-mirror/hadoop/hive/hive-0.5.0/

二、Dip-Data-Analyze的诞生

 

进入公司以来,就专心研究下hadoop,hive,感觉hive让分析人员分析数据b变的极为方便,通过将日志转成表,像操作mysql的方式去统计数据,无疑是方便很多。但是也带来个问题:分析人员直接操作hive,需要分析人员对hive有比较深得了解 ,而且很多功能像udf之类需要频繁加载,效率低下;对于一些一天跑几次或者定期执行的任务,很多流行的做法是通过脚本加入cron,来调度,这样的结果是随着任务增多,对这些分析任务的管理就会非常复杂,因为管理人员不知道一个脚本具体负责什么,更无法跟踪这个任务做了什么,如果失败怎么恢复,任务结果如何管理等等。

正是基于以上的想法,才产生了dip-data-analyze

三、Dip-Data-Analyze的架构

技术架构:

基于hive的dip-data-analyze 重发_第1张图片

可以看到dip-data-analyze是构建在hadoop\hive之上的系统。用户通过系统提供的界面可以创建分析任务(Job),这些Job有几种类型(暂时包含3种),可以帮助用户完成常见的分析任务。同时系统提供了计划的管理,通过将任务与计划融合,组成计划任务,用户的任务就可以按照计划去执行。

任务提交后由系统的调度系统根据计划调度执行,通过jobcache记录任务的实时状态,并可控制每秒并行任务的个数,以防并行任务过多,对hiveserver压力过大。

任务运行过程中,DataProcessor会产生jobtrace对象,跟踪记录每一个任务运行轨迹,并将jobtrace保存到数据库。Jobtable记录任务产生的表,并为后执行的任务提供数据源。DataProcessor负责从Jobtable获取需要的hive表给依赖于其他任务的任务。最后DataProcessor正确保存任务产生的数据。目前是存在hdfs,未来会支持存入mysqlhbase.

系统提供了友好的报警通知机制,用户既可以采用全局报警也可以对每个任务定义报警。

另外系统提供了非计划任务,支持用户执行一次性任务,并可以通过jobtrace进行重试操作.

四、业务逻辑

    Dip-data-analyze总体业务逻辑图

 基于hive的dip-data-analyze 重发_第2张图片

目前任务支持三种任务类型:LoadDataJobBase_AnalyzeTop_Analyze.

通过系统调度框架执行任务,任务通过系统中的支持并发的CentralJobExecution来执行job.执行过程产生的jobtablejobtrace及报警信息会及时保存或发送。

五、执行模式

 基于hive的dip-data-analyze 重发_第3张图片

目前任务执行模式大体分为3,如图所示.

六、系统演示

目前系统为beta版,已经试运行一段时间。

系统概况

计划任务:

共48个其中正在运行的42个已经停止 6个。
按类型统计,数据加载任务共 22个基础分析任务共 3个, TOP分析任务共 23个。

非计划任务:

共22个, 按类型统计,数据加载任务共 10个基础分析任务共 3个, TOP分析任务共 9个

系统截图:


任务监控中完成的任务列表:


如对系统有其他问题或建议,请发我邮箱

[email protected][email protected]


你可能感兴趣的:(数据库,hadoop,存储,数据仓库,任务,分布式存储)