Пример #1
0
        public virtual void TestNameNode()
        {
            int numDatanodes = 2;

            cluster = new MiniDFSCluster.Builder(config).NumDataNodes(numDatanodes).Build();
            cluster.WaitActive();
            WriteFile(cluster.GetFileSystem(), new Path("/test1"), 2);
            JMXGet jmx         = new JMXGet();
            string serviceName = "NameNode";

            jmx.SetService(serviceName);
            jmx.Init();
            // default lists namenode mbeans only
            NUnit.Framework.Assert.IsTrue("error printAllValues", CheckPrintAllValues(jmx));
            //get some data from different source
            NUnit.Framework.Assert.AreEqual(numDatanodes, System.Convert.ToInt32(jmx.GetValue
                                                                                     ("NumLiveDataNodes")));
            MetricsAsserts.AssertGauge("CorruptBlocks", long.Parse(jmx.GetValue("CorruptBlocks"
                                                                                )), MetricsAsserts.GetMetrics("FSNamesystem"));
            NUnit.Framework.Assert.AreEqual(numDatanodes, System.Convert.ToInt32(jmx.GetValue
                                                                                     ("NumOpenConnections")));
            cluster.Shutdown();
            MBeanServerConnection    mbsc  = ManagementFactory.GetPlatformMBeanServer();
            ObjectName               query = new ObjectName("Hadoop:service=" + serviceName + ",*");
            ICollection <ObjectName> names = mbsc.QueryNames(query, null);

            NUnit.Framework.Assert.IsTrue("No beans should be registered for " + serviceName,
                                          names.IsEmpty());
        }
Пример #2
0
        public virtual void TestDataNode()
        {
            int numDatanodes = 2;

            cluster = new MiniDFSCluster.Builder(config).NumDataNodes(numDatanodes).Build();
            cluster.WaitActive();
            WriteFile(cluster.GetFileSystem(), new Path("/test"), 2);
            JMXGet jmx         = new JMXGet();
            string serviceName = "DataNode";

            jmx.SetService(serviceName);
            jmx.Init();
            NUnit.Framework.Assert.AreEqual(fileSize, System.Convert.ToInt32(jmx.GetValue("BytesWritten"
                                                                                          )));
            cluster.Shutdown();
            MBeanServerConnection    mbsc  = ManagementFactory.GetPlatformMBeanServer();
            ObjectName               query = new ObjectName("Hadoop:service=" + serviceName + ",*");
            ICollection <ObjectName> names = mbsc.QueryNames(query, null);

            NUnit.Framework.Assert.IsTrue("No beans should be registered for " + serviceName,
                                          names.IsEmpty());
        }
Пример #3
0
        /// <exception cref="System.Exception">initializes MBeanServer</exception>
        public virtual void Init()
        {
            Err("init: server=" + server + ";port=" + port + ";service=" + service + ";localVMUrl="
                + localVMUrl);
            string url_string = null;

            // build connection url
            if (localVMUrl != null)
            {
                // use
                // jstat -snap <vmpid> | grep sun.management.JMXConnectorServer.address
                // to get url
                url_string = localVMUrl;
                Err("url string for local pid = " + localVMUrl + " = " + url_string);
            }
            else
            {
                if (!port.IsEmpty() && !server.IsEmpty())
                {
                    // using server and port
                    url_string = "service:jmx:rmi:///jndi/rmi://" + server + ":" + port + "/jmxrmi";
                }
            }
            // else url stays null
            // Create an RMI connector client and
            // connect it to the RMI connector server
            if (url_string == null)
            {
                // assume local vm (for example for Testing)
                mbsc = ManagementFactory.GetPlatformMBeanServer();
            }
            else
            {
                JMXServiceURL url = new JMXServiceURL(url_string);
                Err("Create RMI connector and connect to the RMI connector server" + url);
                JMXConnector jmxc = JMXConnectorFactory.Connect(url, null);
                // Get an MBeanServerConnection
                //
                Err("\nGet an MBeanServerConnection");
                mbsc = jmxc.GetMBeanServerConnection();
            }
            // Get domains from MBeanServer
            //
            Err("\nDomains:");
            string[] domains = mbsc.GetDomains();
            Arrays.Sort(domains);
            foreach (string domain in domains)
            {
                Err("\tDomain = " + domain);
            }
            // Get MBeanServer's default domain
            //
            Err("\nMBeanServer default domain = " + mbsc.GetDefaultDomain());
            // Get MBean count
            //
            Err("\nMBean count = " + mbsc.GetMBeanCount());
            // Query MBean names for specific domain "hadoop" and service
            ObjectName query = new ObjectName("Hadoop:service=" + service + ",*");

            hadoopObjectNames = new AList <ObjectName>(5);
            Err("\nQuery MBeanServer MBeans:");
            ICollection <ObjectName> names = new TreeSet <ObjectName>(mbsc.QueryNames(query, null
                                                                                      ));

            foreach (ObjectName name in names)
            {
                hadoopObjectNames.AddItem(name);
                Err("Hadoop service: " + name);
            }
        }