一百三十、海豚调度器——用DolphinScheduler定时调度HiveSQL任务

一、目标

用海豚调度器对Hive数仓各层数据库的SQL任务进行定时调度。比如,DWD层脱敏清洗表的动态插入数据、DWS层指标表的动态插入数据

二、工具版本

1、海豚调度器:apache-dolphinscheduler-2.0.5-bin.tar.gz

2、Hive:apache-hive-3.1.2-bin.tar.gz

三、实施步骤

(一)在海豚调度器的数据源中心模块创建Hive各数据库的数据源

第一步,点击海豚调度器的数据源中心模块

第二步,点击创建数据源

第三步,编辑数据源,包括数据源类型、数据源名称、IP主机名、端口、用户名、数据库名

第四步,点击测试连接

第五步,连接测试弹出成功提示后,点击编辑

(二)在海豚调度器的项目管理模块创建项目

第一步,点击海豚调度器的项目管理模块

第二步,点击创建项目

第三步,编辑项目名称和所属用户

第四步,项目名称和所属用户编辑好后点击编辑

(三)点击创建好的项目,在工作流定义模块中创建工作流

第一步,点击创建好的项目

 第二步,在项目中的工作流定义模块中,点击创建工作流

 第三步,在工作流中,拖拽需要的SHELL控件,然后在SHELL节点编辑HiveSQL脚本

 1、由于是通过HiveSQL编辑的脚本去定时调度,因此这里选择拖拽SHELL控件
2、在SHELL节点,修改节点名称以及描述
3、最重要的是,在SHELL节点编辑HiveSQL脚本。脚本内容如下:

#! /bin/bash
source /etc/profile

hive -e "
use hurys_dc_dws;

set hive.vectorized.execution.enabled=false;
set hive.auto.convert.join=false;
set mapreduce.map.memory.mb=10150;
set mapreduce.map.java.opts=-Xmx6144m;
set mapreduce.reduce.memory.mb=10150;
set mapreduce.reduce.java.opts=-Xmx8120m;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.dynamic.partition=true;
set hive.exec.parallel=true;
set hive.support.concurrency=false;
set mapreduce.map.memory.mb=4128;
set hive.vectorized.execution.enabled=false;

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.dynamic.partitions.pernode=1000;
set hive.exec.max.dynamic.partitions=1500;

insert  overwrite  table  dws_queue_dynamic_statistics_30min  partition(day)
select
      t1.device_no,
      t1.create_time,
       case when  minute(create_time ) >= 30 then
        concat(substr(create_time, 1, 14), '30:00') else
        concat(substr(create_time, 1, 14), '00:00')end as start_time,
        t1.lane_no,
        t2.name,
        t3.direction,
        t1.queue_count,
        t1.queue_len,
        t1.day
from hurys_dc_dwd.dwd_queue_dynamic as t1
  right join hurys_dc_dws.dws_device_name as t2
                        on t2.device_no = t1.device_no
  right join hurys_dc_dws.dws_device_direction as t3
                        on t3.device_no = t1.device_no
where t1.create_time is not null
group by t1.device_no, t1.create_time,t1.lane_no, t2.name, t3.direction, t1.queue_count, t1.queue_len, t1.day
"

注意:最后一条SQL不需要加分号;

4、除了节点名称、描述、脚本需要编辑外,其他默认即可。最后点击确认添加

第四步,在SHELL节点确认添加后点击保存、然后设置DAG图名称

1、在SHELL节点编辑完确认添加后点击页面右上方的保存
2、在设置DAG图名称窗口,设置DAG图的名称和描述,选择租户
3、设置名称完后点击添加

(四)工作流创建好后,先上线工作流,再点击运行工作流

 (五)工作流运行后,在工作流实例和任务实例可以查看工作流执行结果

 (六)工作流运行结束后,在Hive中验证一下数据是否成功动态插入

 从新建的空白表到工作流运行后查询表中有数据,说明海豚调度HiveSQL任务成功!!!

(七)如果要设置定时执行的话,就在工作流建好后设置定时

 第一步,在工作流设置定时

 第二步,设置定时参数,设置好后点击创建

 第三步,创建好定时后点击工作流的定时管理

第四步,点击定时管理中的定时上线

 第五步,这样定时任务就设置好了,可以看到工作流的定时任务已经上线

到这里,用海豚调度器定时调度HiveSQL脚本任务的演示就结束了!

(八)最后总结一下,有两点需要注意

第一点:海豚对于HiveSQL的SQL调度能力似乎不是特别好,尤其是对一些复杂SQL的调度。因此海豚调度的是HiveSQL的脚本任务,而不是直接调度HiveSQL

第二点:SHELL节点脚本中最后一条SQL不要加分号;

乐于奉献共享,帮助你我他!!!

海豚调度是一个分布式任务调度框架,主要用于大数据平台中的批处理任务调度和管理。它提供了易用性、高可靠性和高可扩展性的特点,可以支持各种数据处理和计算框架,例如Hadoop、Spark、Flink等。 海豚调度的主要功能包括: 1. 任务调度和管理:海豚调度可以根据时间表和事件触发等方式,实现对任务的自动调度和执行,支持多种调度方式和调度策略,例如定时调度、依赖调度、手动调度等。 2. 任务流程和编排:海豚调度支持任务流程的编排和管理,可以实现对任务的依赖关系、执行顺序、并发度等进行管理和调整,提高任务执行效率和质量。 3. 分布式部署和管理:海豚调度支持分布式部署和管理,可以实现对多个节点的任务进行统一管理和调度,同时支持集群部署和资源池管理等功能。 4. 任务监控和报警:海豚调度提供了任务监控和报警等功能,可以及时发现和解决任务执行中的问题,保证任务的正常执行和数据的准确性。 5. 可扩展和定制化:海豚调度具有较高的可扩展性和灵活性,可以与其他任务调度系统和工作流引擎进行对接和集成,同时提供了丰富的插件接口和API,可以进行定制化和扩展开发。 因此,海豚调度主要用于大数据平台中的批处理任务调度和管理,可以提高任务的执行效率和质量,减少人工干预和管理成本,为企业决策提供支持。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天地风雷水火山泽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值