HBase с JMX экспортером BindException - PullRequest
0 голосов
/ 10 июня 2019

Я развернул HBase на Ambari HDP. Я пытаюсь получить метрики HBase, используя экспортер JMX, поэтому я добавляю следующую конфигурацию в 'hbase-env':

export HBASE_OPTS="$HBASE_OPTS -javaagent:/opt/jmx_exporter/jmx_exporter_javaagent.jar=7174:/opt/jmx_exporter/hbase/hbase.yml"

Я запускаю HBase без проблем, но когда я пытаюсь получить доступ к оболочке hbase, она выдает следующую ошибку:

Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:497)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent (InstrumentationImpl.java:386)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain (InstrumentationImpl.java:401)
Caused by: java.net.BindException: The address is already being used
at sun.nio.ch.Net.bind0 (Native Method)
at sun.nio.ch.Net.bind (Net.java:437)
at sun.nio.ch.Net.bind (Net.java:429)
at sun.nio.ch.ServerSocketChannelImpl.bind (ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind (ServerSocketAdaptor.java:74)
at sun.net.httpserver.ServerImpl.bind (ServerImpl.java:133)
at sun.net.httpserver.HttpServerImpl.bind (HttpServerImpl.java:54)
at io.prometheus.jmx.shaded.io.prometheus.client.exporter.HTTPServer. <init> (HTTPServer.java:145)
at io.prometheus.jmx.shaded.io.prometheus.jmx.JavaAgent.premain (JavaAgent.java:49)
... 6 more
FATAL ERROR in native method: processing of -javaagent failed
Aborted

Я уже пытался изменить порт экспортера JMX, но всегда выдает BindException. Если я удаляю строку экспортера JMX в Hbase-env, она работает нормально, и я могу получить доступ к оболочке hbase.

1 Ответ

0 голосов
/ 10 июня 2019

На основании следующей статьи: https://blog.godatadriven.com/hbase-prometheus-monitoring, Я добавил следующее в / usr / bin / hbase, поэтому, если порт доступен, он экспортирует метрики только в первый раз.

if [ `lsof -n -i:7000 | grep LISTEN | wc -l` == "0" ]; then
  export HBASE_OPTS="$HBASE_OPTS -javaagent:/opt/jmx_exporter/jmx_exporter_javaagent.jar=7000:/opt/jmx_exporter/hbase/hbase.yml"
fi

Проблема заключалась в том, что каждый раз, когда вы пытались запустить службы HBase, возникали конфликты портов, поэтому он терпел неудачу.

...