Как реализовать собственный планировщик в Heron?

Я прочитал Heron Documents о Implementing a Custom Scheduler. И я знал, что должен реализовать некоторые интерфейсы для реализации пользовательского планировщика, такие как ILauncher, IPacking, IScheduler и IUploader.

Я реализовал свой CustomScheduler, который реализовал интерфейс IScheduler, и я хочу использовать LocalLauncher, LocalUploader и default Packing algorithm с моим собственным планировщиком.

Более того, я изменил файл конфигурации heron с именем scheduler.yaml, расположенный по адресу conf/local/, чтобы использовать собственный планировщик. В то же время я добавил CustomScheduler.jar к 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)  

что я должен сделать, чтобы решить эту проблему? Спасибо за вашу помощь!


person Yitian Zhang    schedule 25.03.2018    source источник


Ответы (3)


Ключевым моментом является предоставление скомпилированных файлов .jar в heron путем копирования ваших файлов jar в папку .heron/lib/.

Я хочу реализовать собственный планировщик и алгоритм упаковки без перекомпиляции Heron.

У меня есть проект под названием «упаковка», в котором есть зависимости maven heron.api и heron.spi по запросу.

Моя банка называется "packing-0.0.1-SNAPSHOT-jar-with-dendencies.jar, созданная с помощью maven. Для меня работают следующие шаги, суммированные в небольшом сценарии оболочки. Я запускаю его из папки моего проекта упаковки. на монтажно-командные работы:

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

Затем просто добавьте свою собственную упаковку или планировщик в свою конфигурацию:

Пример из упаковки.yaml:

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

с com.hcep.packing моей структурой пакета в моем проекте упаковки и CustomPacking моим классом упаковки.

person henriette_r    schedule 27.04.2018

Прямая причина вашего исключения заключается в том, что ваш пользовательский планировщик не упакован с выпуском Heron.

Чтобы заставить ваш собственный планировщик работать, вы можете выполнить следующие шаги:

  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=

person Neng    schedule 17.04.2018

Вы можете разработать собственный планировщик для Heron — используйте любую из реализаций планировщика в кодовой базе.

person Karthik    schedule 12.04.2018
comment
Что мне нужно сделать, чтобы развернуть собственный планировщик в Heron? Должен ли я загружать свой customScheduler.jar в heron-core.jar/lib/scheduler/? Это правильно? - person Yitian Zhang; 13.04.2018
comment
Я отредактировал этот вопрос с более подробной информацией. Спасибо за помощь. - person Yitian Zhang; 16.04.2018