文章目录

加入群聊

开源群人员也有60个了,把问的最多的,解释一下。

赫拉(hera)分布式任务调度系统之Q&A(五)_任务调度

q&a

q:依赖任务的周期怎么填?

a:对于任务的依赖,由于我们公司内部暂时不需要,所以就没开发。不过如果天任务一定要依赖于小时任务,可以把该任务​​依赖于小时任务然后再依赖于一个天任务​​​(可以是简单的输出语句),这样就能实现同样的效果。(需要更新到​​hera-2.1​​版本以上)

赫拉(hera)分布式任务调度系统之Q&A(五)_任务队列_02


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​​数据。

赫拉(hera)分布式任务调度系统之Q&A(五)_hadoop分布式任务调度_03


具体信息有:


细心的你可能发现为什么有的ip前面是​

​master​

​有的是​

​worker​

​。​

​master​

​即表示该机器为​

​master​

​,​

​worker​

​即表示该机器为​

​work​

​。存储的信息有部分差异。

  • ​memRate​​ 内存使用百分比
  • ​running​​​​master​​:当前自动调度任务队列中的任务(调度中心手动恢复任务和机器自动调度的任务)
    ​worker​​:当前机器上正在执行的自动调度任务(调度中心手动恢复任务和机器自动调度的任务)
  • ​manualRunning​​​​master​​:当前手动任务队列中的任务(调度中心手动执行任务)
    ​worker​​:当前机器上正在执行的手动任务(调度中心手动执行任务)
  • ​debugRunning​​​​master​​:当前开发任务队列中的任务(开发中心任务)
    ​worker​​:当前机器上正在执行的开发任务(开发中心任务)
  • ​timestamp​​ 获得该机器信息的时间戳
  • ​date​​ 获得该机器信息的具体时间
  • ​host​​​ 该机器的​​ip​
  • ​cpuLoadPerCore​​ 机器平均负载(负载/核数)
  • ​memTotal​​ 该机器的内存总量
  • ​cores​​ 该机器的核数