如何在heron中实现自定义调度程序?

nnsrf1az  于 2021-06-24  发布在  Storm
关注(0)|答案(3)|浏览(404)

我读过这本书 Heron Documents 关于 Implementing a Custom Scheduler . 我知道我应该实现一些接口来实现一个定制的调度器,比如 ILauncher , IPacking , IScheduler 以及 IUploader .
我已经意识到 CustomScheduler 已实施 IScheduler 接口,我想使用 LocalLauncher , LocalUploader 以及 default Packing algorithm 与我的自定义计划。
而且,我修改了heron配置文件 scheduler.yaml 位于 conf/local/ 使用自定义计划程序。同时,我添加了 CustomScheduler.jarheron-core/lib/scheduler/ . 但是,日志显示出了一些问题:

[2018-04-15 20:44:27 -0700] [STDERR] stderr: Exception in thread "main"   
[2018-04-15 20:44:27 -0700] [STDERR] stderr: com.twitter.heron.spi.scheduler.SchedulerException: Failed to instantiate scheduler using class 'com.zyt.heron.custom.scheduler.CustomScheduler'  
[2018-04-15 20:44:27 -0700] [STDERR] stderr:    at com.twitter.heron.scheduler.utils.LauncherUtils.getSchedulerInstance(LauncherUtils.java:120)  
[2018-04-15 20:44:27 -0700] [STDERR] stderr:    at com.twitter.heron.scheduler.SchedulerMain.runScheduler(SchedulerMain.java:382)  
[2018-04-15 20:44:27 -0700] [STDERR] stderr:    at com.twitter.heron.scheduler.SchedulerMain.main(SchedulerMain.java:218)

我该怎么解决这个问题?谢谢你的帮助!

euoag5mw

euoag5mw1#

关键是通过将jar文件复制到.heron/lib/文件夹中,将编译好的.jar文件提供给heron。
我想实现一个自定义的调度程序和打包算法,而不必重新编译heron。
我有一个名为“packing”的项目,它具有maven依赖项heron.api和heron.spi。
我的jar名为“packing-0.0.1-snapshot-jar-with-dendencies.jar,它是用maven构建的。对我有效的是在一个小shell脚本中总结的以下步骤。我将它从打包项目文件夹中运行到汇编命令works:


# !/bin/bash

mvn assembly:assembly
cp target/packing-0.0.1-SNAPSHOT-jar-with-dependencies.jar $HOME/.heron/lib/packing/
cp target/packing-0.0.1-SNAPSHOT-jar-with-dependencies.jar $HOME/.heron/lib/scheduler/
echo "updated packing plan and scheduler"

然后,只需将自定义打包或计划程序添加到配置中:
packing.yaml中的示例:

heron.class.packing.algorithm: com.hcep.packing.CustomPacking

在我的packing项目中,com.hcep.packing是我的包结构,custompacking是我的packing类。

pgccezyw

pgccezyw2#

您可以为heron开发定制的调度器-请遵循代码库中调度器的任何实现。

lpwwtiir

lpwwtiir3#

出现异常的直接原因是您的自定义计划程序没有与heron版本一起打包。
要使自定义计划程序正常工作,可以执行以下步骤:
将实现添加到目录中 heron/schedulers/src/java/com/twitter/heron/scheduler 更新 BUILD 目录中的文件 heron/schedulers/src/java 将自定义计划程序生成目标添加到 tools/rules/heron_client.bzl 以及 tools/rules/heron_core.bzl 以下是如何打包本地计划程序的示例:https://github.com/apache/incubator-heron/search?utf8=%e2%9c%93&q=heron-local-scheduler&type=

相关问题