javax.management.InstanceAlreadyExistsException when using hadoop MiniDFSCluster

27,179

Solution 1

What is happening is that hadoop is registering a jmx bean for monitoring. The first time hadoop starts, it registers the bean, but the second time hadoop starts, a bean with that name is already registered, resulting in the error above.

Either you are not shutting down MiniDFSCluster properly, or you are starting it more than once, or there is a bug in MiniDFSCluster that causes it to not clean up properly.

Are you calling cluster.shutdown() in a teardown method, as demonstrated here.

Solution 2

Even if you do call shutdown, you're still going to get the error until https://issues.apache.org/jira/browse/HBASE-4709 is resolved

Share:
27,179
lucky_start_izumi
Author by

lucky_start_izumi

Updated on August 06, 2020

Comments

  • lucky_start_izumi
    lucky_start_izumi over 3 years

    I am using MiniDFSCluster to do junit tests. Now I just start and close the cluster, the junit runs green. But I get this exception:

    javax.management.InstanceAlreadyExistsException: MXBean already registered with name Hadoop:service=NameNode,name=MetricsSystem,sub=Control
    at com.sun.jmx.mbeanserver.MXBeanLookup.addReference(MXBeanLookup.java:120)
    at com.sun.jmx.mbeanserver.MXBeanSupport.register(MXBeanSupport.java:143)
    at com.sun.jmx.mbeanserver.MBeanSupport.preRegister2(MBeanSupport.java:183)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:941)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:917)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:312)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:482)
    at org.apache.hadoop.metrics2.util.MBeans.register(MBeans.java:56)
    at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.initSystemMBean(MetricsSystemImpl.java:500)
    at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.init(MetricsSystemImpl.java:140)
    at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.init(DefaultMetricsSystem.java:40)
    at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.initialize(DefaultMetricsSystem.java:50)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1483)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1459)
    at org.apache.hadoop.hdfs.MiniDFSCluster.startDataNodes(MiniDFSCluster.java:417)
    at org.apache.hadoop.hdfs.MiniDFSCluster.<init>(MiniDFSCluster.java:280)
    at org.apache.hadoop.hdfs.MiniDFSCluster.<init>(MiniDFSCluster.java:124)
    at com.myCompany.TestAll.testInit(TestAll.java:30)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at junit.framework.TestCase.runTest(TestCase.java:168)
    at junit.framework.TestCase.runBare(TestCase.java:134)
    at junit.framework.TestResult$1.protect(TestResult.java:110)
    at junit.framework.TestResult.runProtected(TestResult.java:128)
    at junit.framework.TestResult.run(TestResult.java:113)
    at junit.framework.TestCase.run(TestCase.java:124)
    at junit.framework.TestSuite.runTest(TestSuite.java:232)
    at junit.framework.TestSuite.run(TestSuite.java:227)
    at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
    

    Could anyone please give me some suggestion about this exception?

    Thank you very much.

  • lucky_start_izumi
    lucky_start_izumi over 12 years
    I am calling cluster.shutdown() everytime. Thank you for reminding, I will check again.