文章目录
- q:依赖任务的周期怎么填?
- q:新加的任务什么时候会加入调度
- q:想立刻加入调度怎么办 || 找不到版本
- q:资源文件怎么上传不成功
- q:开启/关闭/失效按钮的区别
- q:如何控制任务的并行数量
- q:任务执行会冲突吗
- q:任务为什么不执行
- q:什么是漏跑检测重试
- q:什么是任务信号丢失重试
- q:为什么任务无法关闭
- q:为什么任务无法开启
- q:为什么任务一直在运行中
- q:`master`挂了,`work`会抢占`master`吗
- q:`master`挂了,哪些`work`会抢占`master`
- q:`master`挂了,`work`正在执行的任务怎么办
- q:`work`挂了怎么办
- q:如何手动指定`master`?`ip`能自己指定吗?
- q:为什么添加任务按钮是灰色的
- q:`hera`可以提交`flink`任务吗
- q:`hera`如何执行`hive/map-reduce/spark`任务
- q:如何查看当前work运行的任务及任务队列的任务
加入群聊
开源群人员也有60个了,把问的最多的,解释一下。
q&a
q:依赖任务的周期怎么填?
a:对于任务的依赖,由于我们公司内部暂时不需要,所以就没开发。不过如果天任务一定要依赖于小时任务,可以把该任务依赖于小时任务然后再依赖于一个天任务
(可以是简单的输出语句),这样就能实现同样的效果。(需要更新到hera-2.1
版本以上)1863 依赖于1861和1862 。1861每小时一次,1862每四个小时一次,那么1863也每四个小时一次。 如果依赖于一个周任务,下游就一周一次了
q:新加的任务什么时候会加入调度
a:由于我们的任务调度是根据版本实现的,在内部我们的版本会在每个小时的0分附近生成版本,任务量
8000+
生成的版本时间为90S
左右(需要更新到hera-2.1
版本以上),新增定时任务和依赖任务在生成版本后会加入调度。
q:想立刻加入调度怎么办 || 找不到版本
a: 对于定时任务可以直接点击操作栏的版本生成即立刻加入调度。对于依赖任务可以通过
hera
系统提供的全量版本生成的接口(按钮等待开发)来实现,调用此接口work
会向master
发送生成全量版本的信号,接口名称为:http://localhost:8080/hera/scheduleCenter/generateAllVersion
。等版本生成完成之后,任务即加入调度。
q:资源文件怎么上传不成功
a:上传功能依赖于
hdfs
,如果你的master/work
机器没有hadoop
环境,则不能上传资源。
q:开启/关闭/失效按钮的区别
a:开启,意味着该任务会加入调度,关闭和失效都不会加入调度。关闭和失效的区别在于,失效意味着该任务可能会被删除(删除操作由管理员操作,删除前最好公示一段时间)
q:如何控制任务的并行数量
a:在
application.yml
配置文件中修改hera.maxParallelNum
参数即可控制任务的最大并行数量。其原理是通过线程池是核心线程数等于最大线程数,阻塞队列大小为Integer.MAX_VALUE
,超过并行数量的任务都在阻塞队列中等待调度。
q:任务执行会冲突吗
a:任务执行时会被加入任务队列,每次添加任务x时都会判断任务队列中该任务是否正在执行,如果正在执行,则任务x执行失败。即:同一个任务在同一时间只能有一个实例在执行。(发生任务重试时可能会有两个任务同时执行的情况,已找到原因,后面会修复)
q:任务为什么不执行
a:不执行的原因有很多。就说最常见的,查看日志发现只有进入任务队列的信息。此时首先要保证你的
work
节点也启动了hera
服务。然后查看任务的机器组是哪个,在机器组配置页面查看是否该机器组是否配置有work ip
地址。如果该work是新加的,那么需要等待30分钟后,master
才会读取到该work
的信息。或者直接重启master
的hera
服务
q:什么是漏跑检测重试
a:漏跑有很多种情况,比如
master
向work
发送任务执行的netty
请求时,可能网络不可用了。就导致该任务未执行,所以加了这个功能。该功能可以把那些应该执行而未执行的任务重新调度。
q:什么是任务信号丢失重试
a:任务信号丢失与漏跑检测的原因差不多。具体就是
work
执行完成任务执行向master
发送执行成功的信号时,网络抖动了/其他原因,就导致任务成功的信号没有发送给master
。master
任务信号检测在检测到信号丢失时就会重新调度起该任务。
q:为什么任务无法关闭
a:如果该任务
A
是独立任务(没有其它任务依赖于该任务),那么该任务可以正常关闭。如果有其它任务B
依赖于该任务,并且B
任务中有开启的任务,那么该任务将无法关闭。如果一定要关闭A,
需要把依赖于任务A
的其它全部任务B
关闭掉才能关闭任务A.
q:为什么任务无法开启
a:任务开启时,如果该任务为独立任务,该任务可以正常关闭。如果该任务于其它任务,那么依赖的所有任务一定要全部处于开启状态,否则无法开启。
q:为什么任务一直在运行中
a:此时首先查看该任务的机器组是否存在
work
,并且该work
已经启动了hera服务。如果都已经完成,那么可能你的work
是刚刚加入机器组,在master
端会有30分钟的缓冲时间才会识别到work
的增加,此时如果是测试环境可以立刻重启master
,后面会增加一键刷新的功能
q:master
挂了,work
会抢占master
吗
a:在master挂了5分钟后,work会抢占master,如果work成功抢占,则开启master服务,此时如果master又“活”了,发现master已经切换,会关闭master服务。
q:master
挂了,哪些work
会抢占master
a:请查看
application.yml
中hera.preemptionMasterGroup
参数,该机器组下的所有机器将有权限抢占master
,默认值为1
,即default
组,。
q:master
挂了,work
正在执行的任务怎么办
a:
master
挂了之后,在没有master
的5分钟内,此时work
继续执行正在运行的任务,可能会有许多任务的信号丢失。在work抢占master成功之后,会首先恢复正在运行中的任务,信号丢失的任务会被信号丢失检测到重新加入调度。
q:work
挂了怎么办
a:work挂了之后在master段会记录该work正在执行的任务信息A,然后在十分钟后再次检测该work是否重连,如果未重连,重新调度所有任务。如果重连,检测所有任务A的执行状态,进行重跑/广播/丢弃等操作。
q:如何手动指定master
?ip
能自己指定吗?
a:请参考
hera_lock
表,该表只有一条数据,即master
的信息,如果要修改master可以直接修改该表的数据,其中ip
要使用hera
获取的ip
(对于多网卡的,如果觉得ip
获得不对,请重写NetUtils
类),hera
在启动时会输出ip
信息。
q:为什么添加任务按钮是灰色的
a:任务只能添加到小目录里面。大目录里面只能放大目录和小目录,小目录里面只能放小目录和任务。
q:hera
可以提交flink
任务吗
a:可以。首先在机器组页面添加
flink
机器组,然后在work
管理页面添加具有flink
环境的机器,并将其绑定到flink
机器组。创建flink
任务时,选择机器组为flick
组,那么执行任务时就会把该任务发到具有flink
环境的机器上。
q:hera
如何执行hive/map-reduce/spark
任务
a:hera的机器具有hive/spark/hdfs客户端即可。
q:如何查看当前work运行的任务及任务队列的任务
a:暂时没有ui显示,只提供了接口。http://localhost:8080/hera/homePage/getJobQueueInfo
该接口会返回一些json
数据。具体信息有:
细心的你可能发现为什么有的ip前面是
master
有的是
worker
。
master
即表示该机器为
master
,
worker
即表示该机器为
work
。存储的信息有部分差异。
-
memRate
内存使用百分比-
running
master
:当前自动调度任务队列中的任务(调度中心手动恢复任务和机器自动调度的任务)
worker
:当前机器上正在执行的自动调度任务(调度中心手动恢复任务和机器自动调度的任务)-
manualRunning
master
:当前手动任务队列中的任务(调度中心手动执行任务)
worker
:当前机器上正在执行的手动任务(调度中心手动执行任务)-
debugRunning
master
:当前开发任务队列中的任务(开发中心任务)
worker
:当前机器上正在执行的开发任务(开发中心任务)-
timestamp
获得该机器信息的时间戳-
date
获得该机器信息的具体时间-
host
该机器的ip
-
cpuLoadPerCore
机器平均负载(负载/核数)-
memTotal
该机器的内存总量-
cores
该机器的核数