JMX Monitor Hadoop

1.    Config  $HADOOP_HOME/conf/hadoop-env.sh   for all  the nodes :

exportHADOOP_HOME=/opt/hadoop-1.0.0

exportHADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote.port=9191-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=$HADOOP_HOME/conf/jmxremote.password-Dcom.sun.management.jmxremote.access.file=$HADOOP_HOME/conf/jmxremote.access   $HADOOP_NAMENODE_OPTS"

exportHADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote.port=9292 -Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=true-Dcom.sun.management.jmxremote.password.file=$HADOOP_HOME/conf/jmxremote.password-Dcom.sun.management.jmxremote.access.file=$HADOOP_HOME/conf/jmxremote.access  $HADOOP_DATANODE_OPTS"

exportHADOOP_JOBTRACKER_OPTS="-Dcom.sun.management.jmxremote.port=9393-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=true-Dcom.sun.management.jmxremote.password.file=$HADOOP_HOME/conf/jmxremote.password-Dcom.sun.management.jmxremote.access.file=$HADOOP_HOME/conf/jmxremote.access  $HADOOP_JOBTRACKER_OPTS"

exportHADOOP_TASKTRACKER_OPTS="-Dcom.sun.management.jmxremote.port=9494-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true-Dcom.sun.management.jmxremote.password.file=$HADOOP_HOME/conf/jmxremote.password-Dcom.sun.management.jmxremote.access.file=$HADOOP_HOME/conf/jmxremote.access  $HADOOP_TASKTRACKER_OPTS"

Create the file jmxremote.password :

admin  admin

Create the file jmxremote. access  :

admin  readonly

change  mode of files:

chmod600 jmxremote.password

chmod600 jmxremote.password

 

2. Connect to node by JMX:

The URL:

service:jmx:rmi://jdni/rmi://server1:9191/jmxrmi

service:jmx:rmi://jdni/rmi://server2:9292/jmxrmi

service:jmx:rmi://jdni/rmi://server1:9393/jmxrmi

service:jmx:rmi://jdni/rmi://server2:9494/jmxrmi


/*
 * @author Hui
 */
public class NewClass {

    public static void main(String[] args) throws Exception {
        JMXServiceURL target = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://server1:9191/jmxrmi");
        Map env = new HashMap();
        env.put(JMXConnector.CREDENTIALS, new String[]{"admin", "admin"});
        JMXConnector connector = JMXConnectorFactory.connect(target, env);
        MBeanServerConnection con = connector.getMBeanServerConnection();
        ObjectName obj = new ObjectName("Hadoop:service=NameNode,name=FSNamesystemState");
        long capacityTotal = (long) con.getAttribute(obj, "CapacityTotal");
        long capacityUsed = (long) con.getAttribute(obj, "CapacityUsed");
        long capacityRemain = (long) con.getAttribute(obj, "CapacityRemaining");
        int totalLoad = (int) con.getAttribute(obj, "TotalLoad");
        long blocksTotal = (long) con.getAttribute(obj, "BlocksTotal");
        long filesTotal = (long) con.getAttribute(obj, "FilesTotal");
        long pendingRepBlocks = (long) con.getAttribute(obj, "PendingReplicationBlocks");
        long underRepBlocks = (long) con.getAttribute(obj, "UnderReplicatedBlocks");
        long scheduledRepBlocks = (long) con.getAttribute(obj, "ScheduledReplicationBlocks");
        String fsFSState = (String) con.getAttribute(obj, "FSState");
        StringBuffer sb = new StringBuffer();
        sb.append("FS_NAME_SYSTEM_STATE:")
                .append("[").append("capacityTotal").append("]=").append(capacityTotal).append(",")
                .append("[").append("capacityUsed").append("]=").append(capacityUsed).append(",")
                .append("[").append("capacityRemain").append("]=").append(capacityRemain).append(",")
                .append("[").append("totalLoad").append("]=").append(totalLoad).append(",")
                .append("[").append("blocksTotal").append("]=").append(blocksTotal).append(",")
                .append("[").append("filesTotal").append("]=").append(filesTotal).append(",")
                .append("[").append("pendingRepBlocks").append("]=").append(pendingRepBlocks).append(",")
                .append("[").append("underRepBlocks").append("]=").append(underRepBlocks).append(",")
                .append("[").append("scheduledRepBlocks").append("]=").append(scheduledRepBlocks).append(",")
                .append("[").append("fsFSState").append("]=").append(fsFSState);
        System.out.println(sb.toString());

    }




The result  is:

FS_NAME_SYSTEM_STATE:[capacityTotal]=79349178368, [capacityUsed]=1273987072, [capacityRemain]=61595832320,[totalLoad]=2, [blocksTotal]=74, [filesTotal]=105, [pendingRepBlocks]=0, [underRepBlocks]=73,[scheduledRepBlocks]=0, [fsFSState]=Operational



原文地址:https://www.cnblogs.com/leeeee/p/7276414.html