HBASE-13564 Master MBeans are not published
This commit is contained in:
parent
f487dda20c
commit
a725044644
|
@ -51,7 +51,8 @@ public class JMXListener implements Coprocessor {
|
||||||
public static final Log LOG = LogFactory.getLog(JMXListener.class);
|
public static final Log LOG = LogFactory.getLog(JMXListener.class);
|
||||||
public static final String RMI_REGISTRY_PORT_CONF_KEY = ".rmi.registry.port";
|
public static final String RMI_REGISTRY_PORT_CONF_KEY = ".rmi.registry.port";
|
||||||
public static final String RMI_CONNECTOR_PORT_CONF_KEY = ".rmi.connector.port";
|
public static final String RMI_CONNECTOR_PORT_CONF_KEY = ".rmi.connector.port";
|
||||||
public static final int defRMIRegistryPort = 10102;
|
public static final int defMasterRMIRegistryPort = 10101;
|
||||||
|
public static final int defRegionserverRMIRegistryPort = 10102;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* workaround for HBASE-11146
|
* workaround for HBASE-11146
|
||||||
|
@ -163,11 +164,17 @@ public class JMXListener implements Coprocessor {
|
||||||
Configuration conf = env.getConfiguration();
|
Configuration conf = env.getConfiguration();
|
||||||
|
|
||||||
if (env instanceof MasterCoprocessorEnvironment) {
|
if (env instanceof MasterCoprocessorEnvironment) {
|
||||||
LOG.error("JMXListener should not be loaded in Master Environment!");
|
// running on Master
|
||||||
} else if (env instanceof RegionServerCoprocessorEnvironment) {
|
|
||||||
// running on RegionServer --since 0.99 HMaster is also a HRegionServer
|
|
||||||
rmiRegistryPort =
|
rmiRegistryPort =
|
||||||
conf.getInt("regionserver" + RMI_REGISTRY_PORT_CONF_KEY, defRMIRegistryPort);
|
conf.getInt("master" + RMI_REGISTRY_PORT_CONF_KEY, defMasterRMIRegistryPort);
|
||||||
|
rmiConnectorPort = conf.getInt("master" + RMI_CONNECTOR_PORT_CONF_KEY, rmiRegistryPort);
|
||||||
|
LOG.info("Master rmiRegistryPort:" + rmiRegistryPort + ",Master rmiConnectorPort:"
|
||||||
|
+ rmiConnectorPort);
|
||||||
|
} else if (env instanceof RegionServerCoprocessorEnvironment) {
|
||||||
|
// running on RegionServer
|
||||||
|
rmiRegistryPort =
|
||||||
|
conf.getInt("regionserver" + RMI_REGISTRY_PORT_CONF_KEY,
|
||||||
|
defRegionserverRMIRegistryPort);
|
||||||
rmiConnectorPort =
|
rmiConnectorPort =
|
||||||
conf.getInt("regionserver" + RMI_CONNECTOR_PORT_CONF_KEY, rmiRegistryPort);
|
conf.getInt("regionserver" + RMI_CONNECTOR_PORT_CONF_KEY, rmiRegistryPort);
|
||||||
LOG.info("RegionServer rmiRegistryPort:" + rmiRegistryPort
|
LOG.info("RegionServer rmiRegistryPort:" + rmiRegistryPort
|
||||||
|
@ -175,6 +182,7 @@ public class JMXListener implements Coprocessor {
|
||||||
|
|
||||||
} else if (env instanceof RegionCoprocessorEnvironment) {
|
} else if (env instanceof RegionCoprocessorEnvironment) {
|
||||||
LOG.error("JMXListener should not be loaded in Region Environment!");
|
LOG.error("JMXListener should not be loaded in Region Environment!");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized(JMXListener.class) {
|
synchronized(JMXListener.class) {
|
||||||
|
|
|
@ -54,6 +54,9 @@ public class TestJMXListener {
|
||||||
JMXListener.class.getName());
|
JMXListener.class.getName());
|
||||||
conf.setInt("regionserver.rmi.registry.port", connectorPort);
|
conf.setInt("regionserver.rmi.registry.port", connectorPort);
|
||||||
|
|
||||||
|
conf.set(CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY, JMXListener.class.getName());
|
||||||
|
conf.setInt("master.rmi.registry.port", connectorPort - 1);
|
||||||
|
|
||||||
UTIL.startMiniCluster();
|
UTIL.startMiniCluster();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -994,8 +994,7 @@ To enable it in 0.99 or above, add below property in _hbase-site.xml_:
|
||||||
NOTE: DO NOT set `com.sun.management.jmxremote.port` for Java VM at the same time.
|
NOTE: DO NOT set `com.sun.management.jmxremote.port` for Java VM at the same time.
|
||||||
|
|
||||||
Currently it supports Master and RegionServer Java VM.
|
Currently it supports Master and RegionServer Java VM.
|
||||||
The reason why you only configure coprocessor for 'regionserver' is that, starting from HBase 0.99, a Master IS also a RegionServer.
|
By default, the JMX listens on TCP port 10102, you can further configure the port using below properties:
|
||||||
(See link:https://issues.apache.org/jira/browse/HBASE-10569[HBASE-10569] for more information.) By default, the JMX listens on TCP port 10102, you can further configure the port using below properties:
|
|
||||||
|
|
||||||
[source,xml]
|
[source,xml]
|
||||||
----
|
----
|
||||||
|
@ -1062,7 +1061,7 @@ Finally start `jconsole` on the client using the key store:
|
||||||
jconsole -J-Djavax.net.ssl.trustStore=/home/tianq/jconsoleKeyStore
|
jconsole -J-Djavax.net.ssl.trustStore=/home/tianq/jconsoleKeyStore
|
||||||
----
|
----
|
||||||
|
|
||||||
NOTE: for HBase 0.98, To enable the HBase JMX implementation on Master, you also need to add below property in _hbase-site.xml_:
|
NOTE: To enable the HBase JMX implementation on Master, you also need to add below property in _hbase-site.xml_:
|
||||||
|
|
||||||
[source,xml]
|
[source,xml]
|
||||||
----
|
----
|
||||||
|
|
Loading…
Reference in New Issue