大数据任务调度系统-Hera

2020/06/12 10:36
阅读数 187

一、前言

在大数据平台,随着业务发展,每天承载着成千上万的ETL(Extract-Transform-Load 数据抽取,转换,装载)任务调度,这些任务集中在hive,shell脚本调度。怎么样让大量的ETL任 务准确的完成调度而不出现问题,甚至在任务调度执行中出现错误的情况下,任务能够完成自我恢复甚至执行错误告警与完整的日志 查询。hera任务调度系统就是在这种背景下衍生的一款分布式调度系统。随着hera集群动态扩展,可以承载成千上万的任务调度。 它是一款原生的分布式任务调度,可以快速的添加部署wokrer节点,动态扩展集群规模。支持shell,hive,spark脚本调度,可以动态的扩展支持python等服务器端脚本调度。

Hera源码下载:https://github.com/chenxingxing6/hera/tree/hera-2.4.1

赫拉(hera)分布式任务调度系统之操作文档
赫拉(hera)分布式任务调度系统之架构,基本功能(一)
赫拉(hera)分布式任务调度系统之项目启动(二)
赫拉(hera)分布式任务调度系统之开发中心(三)
赫拉(hera)分布式任务调度系统之版本(四)
赫拉(hera)分布式任务调度系统之Q&A(五)


二、架构

赫拉系统只是负责调度以及辅助的系统,具体的计算还是要落在hadoop、hive、yarn、spark等集群中去。所以此时又一个硬性要求,如果要执行hadoop,hive,spark等任务,我们的hera系统的worker一定要部署在这些集群某些机器之上。如果仅仅是shell,那么也至少需要linux系统。对于windows系统,可以把自己作为master进行调试。
在这里插入图片描述

主节点:任务调度触发与任务分发器,从节点:具体的任务执行器
在这里插入图片描述


三、功能

在了解之前,最后先了解过大数据,Hadoop集群,MaperReduce这些东西都有玩过。

  1. 支持任务的定时调度、依赖调度、手动调度、手动恢复 支持丰富的任务类型:shell,hive,python,spark-sql,java
  2. 可视化的任务DAG图展示,任务的执行严格按照任务的依赖关系执行某个任务的上、下游执行状况查看,通过任务依赖图可以清楚的判断当前任务为何还未执行,删除该任务会影响那些任务。
  3. 支持上传文件到hdfs,支持使用hdfs文件资源 支持日志的实时滚动 支持任务失败自动恢复实现集群HA,机器宕机环境实现机器断线重连与心跳恢复与hera集群HA,节点单点故障环境下任务自动恢复,master断开,worker抢占master
  4. 支持对master/work 负载,内存,进程,cpu信息的可视化查看
  5. 支持正在等待执行的任务,每个worker上正在执行的任务信息的可视化查看
  6. 支持实时运行的任务,失败任务,成功任务,任务耗时top10的可视化查看 支持历史执行任务信息的折线图查看具体到某天的总运行次数,总失败次数,总成功次数,总任务数,总失败任务数,总成功任务数
  7. 支持关注自己的任务,自动调度执行失败时会向负责人发送邮件 对外提供API,开放系统任务调度触发接口,便于对接其它需要使用hera的系统组下任务总览、组下任务失败、组下任务正在运行 支持map-reduce任务和yarn任务的实时取消。 支持任务超时提醒
  8. 支持用户与组的概念 支持任务操作历史记录查看与恢复 支持任务告警定位到个人 告警类型支持邮箱以及自定义的钉钉、企业微信、短信、电话等
  9. 支持任务各种条件的模糊搜索 支持阿里云emr的自动创建、销毁 支持亚马逊emr的自动创建、销毁、弹性伸缩

四、脚本

4.1 启动脚本
#!/bin/sh
 
JAVA_OPTS="-server -Xms4G -Xmx4G -Xmn2G -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=5 -XX:+CMSParallelInitialMarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:/opt/logs/spring-boot/gc.log -XX:MetaspaceSize=128m -XX:+UseCMSCompactAtFullCollection -XX:MaxMetaspaceSize=128m -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/logs/spring-boot/dump"
 
log_dir="/opt/logs/spring-boot"
log_file="/opt/logs/spring-boot/all.log"
jar_file="/opt/app/spring-boot/hera.jar"
 
 
#日志文件夹不存在,则创建
if [ ! -d "${log_dir}" ]; then
    echo "创建日志目录:${log_dir}"
    mkdir -p "${log_dir}"
    echo "创建日志目录完成:${log_dir}"
fi
 
 
#父目录下jar文件存在
if [ -f "${jar_file}" ]; then
    #启动jar包 错误输出的error 标准输出的log
    nohup java $JAVA_OPTS -jar ${jar_file} 1>"${log_file}" 2>"${log_dir}"/error.log &
    echo "启动完成"
    exit 0
else
    echo -e "\033[31m${jar_file}文件不存在!\033[0m"
    exit 1
fi
4.2 关闭脚本
#!/bin/bash
pid=`ps | grep java | grep hera | awk '{print $1}'`
 
[ ! $pid ] && echo "找不到hera的进程,请确认hera已经启动" && exit 0
 
res=`kill -9 $pid`
 
echo 关闭hera成功,pid:$pid


五、Hera管理后台

5.1 任务基本信息

在这里插入图片描述

  1. 任务id :系统自动生成,任务的唯一标识 名称:新建任务时用户填写,最好见名知意,尽可能短
  2. 任务类型:编辑任务时可选shell、hive、spark三种类型 自动调度: 自动调度是否开启,可以通过右侧的开启/关闭按钮来操作
  3. 任务优先级:编辑任务时可选low,medium,high,当队列中任务很多时会根据该优先级进行分发任务执行 描述:必填项,任务信息的描述
  4. 调度类型:编辑任务时可选定时调度、依赖调度,定时调度时需要填写cron 表达式,依赖调度时需要选择所依赖的任务 ID
  5. 定时表达式:调度类型为定时调度时所填写的 cron 表达式 依赖任务:调度类型为依赖调度时所选择的依赖任务 ID 的列表
  6. 重试次数:任务自动调度/手动恢复失败时重试的次数 重试间隔:任务自动调度/手动恢复失败后需要等待多久进行重试
  7. 预计时长:整数,0表示无限大。当任务执行超出预计时长时会进行告警
  8. 报警类型:任务任务自动调度/手动恢复失败,并且重试次数已经用完进行邮件、企业微信、电话告警,告警级别依次升高。当选择电话告警时,三种告警都会触发
  9. 所有人:任务创建者所属的用户组
  10. 关注人员:任务失败后告警的人员,默认是任务的创建者。其它用户也可以在这里点击关注或者管理员在监控管理界面添加
  11. 管理员:该任务还允许哪些用户组的用户操作,可以通过操作按钮的配置管理员进行添加
  12. 重复执行:是否运行同一时间允许两个或两个以上实例执行。比如:每个小时触发的任务,任务的执行时间超出了一个小时,如果设置为否,则下个小时的任务不会执行,直到漏跑检测到才会执行
  13. 机器组:该任务需要在哪个机器组执行。机器组的创建请参考上面的机器组管理 区域:任务需要在哪个区域执行。默认是 all ,如果你们的hera 数据库做了多区同步,那么可以选择需要执行的区域,在不是所选择的区域执行该任务时会直接设置为成功。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部