第七章:HUE+Oozie(集群任务调度)
一、Oozie是什么?
Oozie:通过工作流会触发执行计算或者处理任务,在hadoop生态圈中,它可以把多个mapreduce作业组合到一个逻辑工作单元中,从而完成更大型的任务,例如在晚上可以设定一个时间来跑mapreduce任务
应用场景:
Hadoop集群计算任务调度和管理平台。
数据平台跑数据所面对的困难:
电商数据平台的报表维度有很多种,有总体简报角度、运营角度、媒体投放角度等,也可以有商品、商户、用户、竞品等维度,还有日报、周报和月报之分。所以对应了很多个计算任务。每一个计算任务可以视为一个工作流,毕竟计算过程是很复杂的、一环套一环。那么 HUE+Oozie 就是可视化管理和调度这些工作流的。
没有 Oozie 之前是什么样?
一、计算脚本被配置为定时任务,跑飞了只能从海量日志中大海捞针,不知道断在哪儿,只能手动清数据从头再跑。任务计算时间特别长,不知道当前跑到哪一步了,还需要多久能跑完。
二、难以精确控制任务A跑完了才能跑任务B,只能在不同定时任务之间留足够长的时间间隔,缺乏弹性。
Oozie的优势
Oozie是一种 Java Web 应用程序,它运行在 Tomcat 中,并使用数据库来存储以下内容:工作流定义、当前运行的工作流实例(包括实例的状态和变量)。 优势:
Oozie允许失败的工作流从任意点重新运行,这对于处理工作流中由于前一个耗时活动而出现瞬态错误的情况非常有用。
工作流执行过程可视化。
工作流的每一步的日志、错误信息都可以点击查看,并实时滚动,便于排查问题。
二、Hue是什么?
Hue是一个可以快速开发和调试Hadoop生态系统各种应用的一个基于浏览器的图形化接口,基于Python Web框架实现,Hue在管理Hbase/Pig/Hive方面有很大的优势,它还附带了一个Oozie的应用程序,用于创建和监控工作流程 。
Hue能做什么?
访问HDFS 和文件浏览
调试和开发hive以及数据结果展示
spark开发和调试
pig开发和调试
完成Oozie任务的开发,监控,和工作流协调调度
HBase数据查询和修改,数据展示
MapReduce任务进度查看,日志追踪
创建和提交MapReduce,Streaming,java job任务
Zookeeper的浏览和编辑
三、安装Hue服务
1、查看Inceptor是否开启Hive2服务,因为Hue目前只支持hive.server2服务
打开浏览器访问目标节点:8180端口
登录TDH管理页面:
查看Inceptor的配置:
如果是hive.server2.enable配置项为false,则需要重新安装inceptor
2、停止或者删除旧的inceptor之后,重新添加inceptor服务
在进入配置服务步骤时,选中高级参数。将hive.server2.enable设置为TRUE。认证方式按需求定,这里选择无。之后的步骤和第一次安装inceptor相同
3、重新安装hue服务:
选择依赖项是选择新安装的,开启hive2的inceptor服务
之后的步骤与原来相同,不需要重新配置
4、测试hue是否可以连接inceptor
查看hue服务的配置项可以得知端口号
访问hue服务器8888端口
之后选择query deitors -> inceptor
跳转页面,左边显示可供选择的数据库,以及相对应的表,则说明hue成功连接inceptor
同时hue提供可视化的inceptor查询: 点击执行,在下方界面会跳出查询结果
实例一:通过hue配置Oozie工作流
1、选择workflows编辑器
2、点击创建,创建一个新的workflow
即可通过拖拽各种操作,配置Oozie工作流
简单样例工作如下
3、创建工作流:
拖拽sqoop1到页面中间指定的位置
弹窗:
4、输入sqoop命令: import -connect jdbc:mysql://192.168.1.214:3306/mysql -username tdh -password 123456 -table user -target-dir /tmp/output -m 1
注意:上述sqoop命令和原生的sqoop命令有略微差别,特别是参数前面的双横杠变成了单横杠 输入完脚本后,必须点击文件,将连接mysql的jdbc驱动包添加进去
设置就完成后点击保存,再点击执行,显示接收job任务
这时进入8088界面,可以观察到接收到的是一个Oozie工作流的任务
实例二:通过hue查询Inceptor中的表的数据
定时完成workflow工作流
点击计划按钮:
设置频率,起止日期之后选择保存
提交之后就可以按照设定的频率执行工作流了(定时的workflow即为一个Coordinator)