Удаленная отладка сопроцессора HBase - PullRequest
0 голосов
/ 04 декабря 2018

Как выполнить удаленную отладку сопроцессора HBase - RegionObserver?

Я использую Cloudera Quickstart.

Существует вопрос об этом, но нет информации окуда поместить эту команду exec.

Также я попытался эту инструкцию , но HBase не начинается с этого.

Так что же является правильным способом удаленногоотлаживать сопроцессоры?

1 Ответ

0 голосов
/ 15 марта 2019

Вы не упомянули, какую IDE вы используете, но вот как я получил настройки для IntelliJ.

Добавить параметр IntelliJ Run / Debug

Выберите Run / Debug -> Add newконфигурация (+ знак) -> Удаленный -> введите имя хоста, на котором работает регион-сервер (оставьте его на localhost, если вы запускаете HBase локально).В моем случае имя хоста skdevhad6.dev.dszn.cz.

Setting up the remote debugger in IntelliJ

Настройка сервера региона

Далее отредактируйте hbase-env.shфайл и найдите значение окружения HBASE_OPTS.Вы должны добавить туда:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005

Это гарантирует, что JDB будет прослушивать все интерфейсы (0.0.0.0) на порту 5005, используя транспортный протокол JDB.

Это какHBASE_OPTS может выглядеть следующим образом:

export HBASE_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -XX:-ResizePLAB -XX:ParallelGCThreads=24 -XX:-OmitStackTraceInFastThrow -XX:+ParallelRefProcEnabled"

Предпочтительно, если у вас есть несколько серверов региона HBase, примените к ним также эти настройки, чтобы вы могли выбрать регион, который вы хотите отладить позже (просто добавьте еще одинНастройки удаленной отладки в IntelliJ для этого).

Теперь перезапустите все серверы региона, к которым вы применили обновленную версию HBASE_OPTS.Если перезапуск прошел успешно, запустите сеанс удаленной отладки с IntelliJ.

Если вы видите что-то подобное, это означает, что отладчик подключен, и вы можете установить точку останова в любом месте.

Successful debug session in IntelliJ

Продолжайте и попробуйте :) HF!


Устранение неполадок

Если установка не удалась и вы можете 't подключитесь к удаленной JDB, убедитесь, что сервер региона действительно прослушивает порт, указанный вами для всех интерфейсов, используя:

$ ss -tunlp | grep 5005 # where 5005 is the port it should listen to
tcp    LISTEN     0      1                      *:5005                  *:*      users:(("java",pid=28364,fd=5))

Если это так, проверьте брандмауэр сервера:

$ iptables -L

Если входящий трафик на порт ограничен, значит, вы обнаружили проблему.

...