Отладка планировщика Apache Heron

Твиттер утверждает, что одним из самых больших преимуществ apache heron по сравнению с apache storm является debug-ability, и это достигается путем перемещения каждой задачи spout/bolt в один экземпляр Heron (процесс JVM) вместо объединения нескольких задач в один JMV (как storm раньше сделай это).

Этот подход действительно помогает при отладке топологий. Но мой вопрос в том, как можно попытаться отлаживать основные части Heron, такие как планировщики или части управления ресурсами. Есть ли способ сделать это, кроме регистрации/распечатки выходных данных? Потому что это действительно процесс, требующий много времени и энергии. Есть ли способ использовать такой инструмент, как IDE (например, IntelliJ), чтобы установить некоторые контрольные точки и отладить весь процесс планирования задач в героне?

Заранее спасибо.


person Firouziam    schedule 01.08.2016    source источник


Ответы (1)


После долгой борьбы с этой проблемой я наконец нашел ответ с помощью разработчиков Heron (снимаю перед ними шляпу). Ответ: Удаленная отладка процессов jvm.

Раздел по устранению неполадок (см. Отладка топологий Java на этой странице) был добавлен в документацию Heron, которая содержит необходимые инструкции для удаленной отладки heron. Это хорошо, но не то, что мне нужно, потому что это только для отладки экземпляров (болты/носики...). Но мне нужно было отлаживать основные части, такие как планировщик, лаунчер и т. д.

Чтобы включить полную удаленную отладку для heron, вы должны добавить вторую строку в execute.py (можно найти в heron/tools/cli/src/python) файл:

java_opts = ['-D' + opt for opt in java_defines]
//add this line here
java_opts.append('-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005')

адрес: порт, который вы настроили в своей среде IDE.

приостановить: y означает приостановку выполнения до тех пор, пока клиент (отладчик или IDE) не подключится к серверу (процесс jvm).

Инструкции по настройке удаленной отладки в Intellij можно найти в этой ссылке< /а>.

Важно: не забудьте перекомпилировать исходный код и установить пакеты bin. Скомпилируйте и установите герона

bazel build  --config=ubuntu heron/...
bazel run --config=ubuntu -- scripts/packages:heron-client-install.sh --user
bazel run --config=ubuntu -- scripts/packages:heron-api-install.sh --user --maven

Теперь разместите свои контрольные точки, где хотите, и отправьте свою топологию из терминала, а затем начните отладку в IDE, и она приведет вас к контрольным точкам. Просто не забудьте добавить контрольные точки в путь выполнения, SubmitterMain или SchedulerMain могут быть хорошими кандидатами.

person Firouziam    schedule 06.12.2016