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

版权声明:本文为博主原创文章 http://blog.csdn.net/su20145104009 https://blog.csdn.net/su20145104009/article/details/86076137

往期目录

项目地址:[email protected]:scx_white/hera.git

赫拉(hera)分布式任务调度系统之架构,基本功能(一)

赫拉(hera)分布式任务调度系统之项目启动(二)

赫拉(hera)分布式任务调度系统之开发中心(三)

赫拉(hera)分布式任务调度系统之版本(四)

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

加入群聊

开源群人员也有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:漏跑有很多种情况,比如masterwork发送任务执行的netty请求时,可能网络不可用了。就导致该任务未执行,所以加了这个功能。该功能可以把那些应该执行而未执行的任务重新调度。

q:什么是任务信号丢失重试

a:任务信号丢失与漏跑检测的原因差不多。具体就是work执行完成任务执行向master发送执行成功的信号时,网络抖动了/其他原因,就导致任务成功的信号没有发送给mastermaster任务信号检测在检测到信号丢失时就会重新调度起该任务。

q:为什么任务无法关闭

a:如果该任务A是独立任务(没有其它任务依赖于该任务),那么该任务可以正常关闭。如果有其它任务B依赖于该任务,并且B任务中有开启的任务,那么该任务将无法关闭。如果一定要关闭A,需要把依赖于任务A的其它全部任务B关闭掉才能关闭任务A.

q:为什么任务无法开启

a:任务开启时,如果该任务为独立任务,该任务可以正常关闭。如果该任务于其它任务,那么依赖的所有任务一定要全部处于开启状态,否则无法开启。

q:master挂了,work会抢占master

a:在master挂了5分钟后,work会抢占master,如果work成功抢占,则开启master服务,此时如果master又“活”了,发现master已经切换,会关闭master服务。

q:master挂了,哪些work会抢占master

a:请查看application.ymlhera.preemptionMasterGroup参数,该机器组下的所有机器将有权限抢占master,默认值为1,即default组,。

q:master挂了,work正在执行的任务怎么办

a:master挂了之后,在没有master的5分钟内,此时work继续执行正在运行的任务,可能会有许多任务的信号丢失。在work抢占master成功之后,会首先恢复正在运行中的任务,信号丢失的任务会被信号丢失检测到重新加入调度。

q:work挂了怎么办

a:work挂了之后在master段会记录该work正在执行的任务信息A,然后在十分钟后再次检测该work是否重连,如果未重连,重新调度所有任务。如果重连,检测所有任务A的执行状态,进行重跑/广播/丢弃等操作。

q:如何手动指定masterip能自己指定吗?

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有的是workermaster即表示该机器为masterworker即表示该机器为work。存储的信息有部分差异。

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

猜你喜欢

转载自blog.csdn.net/su20145104009/article/details/86076137