0

我已经阅读了Heron Documents关于Implementing a Custom Scheduler. 而且我知道我应该实现一些接口来实现自定义调度程序,例如ILauncherIPacking和。ISchedulerIUploader

我已经实现了我CustomScheduler实现的IScheduler接口,我想使用LocalLauncher,LocalUploaderdefault Packing algorithm我的自定义调度程序。

更重要的是,我修改了名为的苍鹭配置文件scheduler.yaml位于conf/local/使用自定义调度程序。同时,我添加了CustomScheduler.jarto heron-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)  

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

4

3 回答 3

1

您的异常的直接原因是您的自定义调度程序未与苍鹭版本打包。

要使您的自定义调度程序工作,您可以按照以下步骤操作:

  1. 将您的实现添加到目录中heron/schedulers/src/java/com/twitter/heron/scheduler
  2. 更新BUILD目录中的文件heron/schedulers/src/java
  3. 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=

于 2018-04-17T21:20:32.010 回答
1

关键是通过将您的 jar 文件复制到 .heron/lib/文件夹中,将您编译的 .jar 文件提供给 heron。

我想在不重新编译 Heron的情况下实现自定义调度程序和打包算法。

我有一个名为“packing”的项目,它根据要求具有 maven 依赖项 heron.api 和 heron.spi。

我的 jar 被称为“packing-0.0.1-SNAPSHOT-jar-with-dendencies.jar 用 maven 构建。对我有用的是以下步骤总结在一个小 shell 脚本中。我从我的包装项目文件夹中运行它装配命令工作:

#!/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

com.hcep.packing 是我的打包项目中的包结构,而 CustomPacking 是我的打包类。

于 2018-04-27T13:09:18.820 回答
-1

您可以为 Heron 开发自定义调度程序 - 请遵循代码库中调度程序的任何实现。

于 2018-04-12T00:22:33.493 回答