[原创]HBase客户端开发举例(第三部分)

4.创建QueryDataClient.java ,其代码如下

public class QueryDataClient{

    //表名为jvmMonitor
   public final static String TABLE_NAME ="jvmMonitor";  
  //列族名 "target","memory", "os"
   public final static String[] COLUM_FAMILIES =new String[]{"target", "memory", "os"};
   private String partRowKey;  //行健的前半部分
   private String serverIP;   //Web服务器IP
   private StringbeginDataTime;  //  查询的起始时间
   private String endDataTime;// 查询的 终点时间
   private HBaseAdmin admin;
   private HTable htable;

   public static void main(String[] args) throwsException {
//
       //为了方便测试,将所监控Web服务器的IP,查询的起始时间,终点时间写死在main函数中

       args = newString[3];
       args[0] ="192.168.1.107";
       args[1] ="20121125231000";
       args[2] ="20121125232000";

      QueryDataClient queryDataClient = newQueryDataClient();
      queryDataClient.setServerIP(args[0]);
      queryDataClient.setBeginDataTime(args[1]);
      queryDataClient.setEndDataTime(args[2]);
      queryDataClient.doQuey();
   }

   public void doQuey() {
      Configuration conf = HBaseConfiguration.create();
       try{
          //连接HBase集群
          admin = newHBaseAdmin(conf);
          this.htable = newHTable(conf, TABLE_NAME);
          Scan scan = newScan();
          String startRow =this.makeRowKey(this.beginDataTime);
          String endRow =this.makeRowKey(this.endDataTime);
          //设置起始行健
            scan.setStartRow(Bytes.toBytes(startRow));
          //设置终点行健
            scan.setStopRow(Bytes.toBytes(endRow));
          ResultScanner resultScanner =htable.getScanner(scan);
          Iterator iterator =resultScanner.iterator();
          //打印结果
          byte[] bytesTarget = Bytes.toBytes(COLUM_FAMILIES[0]);
            byte[]bytesMemory = Bytes.toBytes(COLUM_FAMILIES[1]);
            byte[]bytesOS = Bytes.toBytes(COLUM_FAMILIES[2]);
          while (iterator.hasNext()){
              Result result =iterator.next();
             String rowKey =Bytes.toString(result.getRow());
             String serverIP =Bytes.toString(result.getValue(bytesTarget,Bytes.toBytes("serverIP")));
             String serverPort =Bytes.toString(result.getValue(bytesTarget,Bytes.toBytes("serverPort")));
             String heapUsedKB =Bytes.toString(result.getValue(bytesMemory,Bytes.toBytes("heapUsedKB")));
             String heapMaxKB =Bytes.toString(result.getValue(bytesMemory,Bytes.toBytes("heapMaxKB")));
             String heapCommitKB =Bytes.toString(result.getValue(bytesMemory,Bytes.toBytes("heapCommitKB")));
             String heapUtil =Bytes.toString(result.getValue(bytesMemory,Bytes.toBytes("heapUtil")));
             String nonHeapUsedKB =Bytes.toString(result.getValue(bytesMemory,Bytes.toBytes("nonHeapUsedKB")));
             String nonHeapMaxKB =Bytes.toString(result.getValue(bytesMemory,Bytes.toBytes("nonHeapMaxKB")));
             String nonHeapCommitKB =Bytes.toString(result.getValue(bytesMemory,Bytes.toBytes("nonHeapCommitKB")));
             String nonHeapUtil =Bytes.toString(result.getValue(bytesMemory,Bytes.toBytes("nonHeapUtil")));

             String virtMemCommitKB =Bytes.toString(result.getValue(bytesOS,Bytes.toBytes("virtMemCommitKB")));
             String freePhyMemKB =Bytes.toString(result.getValue(bytesOS,Bytes.toBytes("freePhyMemKB")));
             String freeSwapKB =Bytes.toString(result.getValue(bytesOS,Bytes.toBytes("freeSwapKB")));
             String totalSwapKB =Bytes.toString(result.getValue(bytesOS,Bytes.toBytes("totalSwapKB")));
             String phyMemUtil =Bytes.toString(result.getValue(bytesOS,Bytes.toBytes("phyMemUtil")));
             String swapMemUtil =Bytes.toString(result.getValue(bytesOS,Bytes.toBytes("swapMemUtil")));
             String cpuUtil =Bytes.toString(result.getValue(bytesOS,Bytes.toBytes("cpuUtil")));
             System.out.println("DataTime=" +rowKey.substring(12) + ", serverIP=" + serverIP + ", serverPort=" +serverPort + ", heapUsedKB=" + heapUsedKB
                    + ",heapMaxKB=" + heapMaxKB +", heapCommitKB=" + heapCommitKB + ", heapUtil=" + heapUtil + ",nonHeapUsedKB=" + nonHeapUsedKB
                    + ",nonHeapMaxKB=" +nonHeapMaxKB + ", nonHeapCommitKB=" + nonHeapCommitKB + ",nonHeapUtil=" + nonHeapUtil + ", virtMemCommitKB=" +virtMemCommitKB
                    + ",freePhyMemKB=" +freePhyMemKB + ", freeSwapKB=" + freeSwapKB + ", totalSwapKB=" +totalSwapKB + ", phyMemUtil=" + phyMemUtil
                    + ", swapMemUtil=" +swapMemUtil + ", cpuUtil=" + cpuUtil);
             System.out.println();
          }
         resultScanner.close();
       } catch (Exception ex) {
         Logger.getLogger(QueryDataClient.class.getName()).log(Level.SEVERE,null, ex);
       } finally{
          //关闭连接
          if (this.htable != null){
             try {
                this.htable.close();
             } catch (Exception ex) {
             }
          }
          if (this.admin != null){
             try {
                this.admin.close();
             } catch (Exception ex) {
             }
          }
      }
   }

// 生成行健,行健用Web服务器IP和数据采集的时间来表示,共24位,前12位是IP,后12位是时间,不够的在前面用0填充
  // 例如:IP为10.1.2.122,时间为2012-11-2523:01:08,则行健为01000100212220121125230108
   private String makeRowKey(String dataTime){
       if(this.partRowKey == null) {
         this.makePartRowKey();
      }
       returnthis.partRowKey + dataTime;
   }

//根据Web服务器IP生成行健的前半部分
   private void makePartRowKey() {
       String[]splits = this.serverIP.split("[.]");
       for (int i= 0; i < splits.length; i++) {
          String s =splits[i];
          int len =s.length();
          while (len <3) {
             s = "0" + s;
             len++;
          }
          splits[i] = s;
      }
      this.partRowKey = splits[0] + splits[1] + splits[2] +splits[3];
   }

  //以下为Getter Setter

   public String getServerIP() {
       returnserverIP;
   }

   public void setServerIP(String serverIP){
      this.serverIP = serverIP;
   }

   public String getBeginDataTime() {
       returnbeginDataTime;
   }

   public void setBeginDataTime(StringbeginDataTime) {
      this.beginDataTime = beginDataTime;
   }

   public String getEndDataTime() {
       returnendDataTime;
   }

   public void setEndDataTime(String endDataTime){
      this.endDataTime = endDataTime;
   }
}

运行程序,控制台输出结果:

12/11/25 23:30:50 INFOzookeeper.ZooKeeper: Client environment:os.name=Windows7
12/11/25 23:30:50 INFOzookeeper.ZooKeeper: Client environment:os.arch=x86
12/11/25 23:30:50 INFOzookeeper.ZooKeeper: Client environment:os.version=6.1
12/11/25 23:30:50 INFOzookeeper.ZooKeeper: Clientenvironment:user.name=hui.li
12/11/25 23:30:50 INFOzookeeper.ZooKeeper: Clientenvironment:user.home=C:\Users\hui.li
12/11/25 23:30:50 INFOzookeeper.ZooKeeper: Clientenvironment:user.dir=D:\CentOS64\Share\Example
12/11/25 23:30:50 INFOzookeeper.ZooKeeper: Initiating client connection,connectString=192.168.1.201:2181 sessionTimeout=180000watcher=hconnection
12/11/25 23:30:50 INFOzookeeper.ClientCnxn: Opening socket connection to server/192.168.1.201:2181
12/11/25 23:30:50 INFOzookeeper.ClientCnxn: Socket connection established toserver1/192.168.1.201:2181, initiating session
12/11/25 23:30:50 INFOzookeeper.ClientCnxn: Session establishment complete on serverserver1/192.168.1.201:2181, sessionid = 0x3b35ddd5d40021,negotiated timeout = 180000
12/11/25 23:30:50 INFOzookeeper.ZooKeeper: Initiating client connection,connectString=192.168.1.201:2181 sessionTimeout=180000watcher=hconnection
12/11/25 23:30:50 INFOzookeeper.ClientCnxn: Opening socket connection to server/192.168.1.201:2181
12/11/25 23:30:50 INFOzookeeper.ClientCnxn: Socket connection established toserver1/192.168.1.201:2181, initiating session
12/11/2523:30:50 INFO zookeeper.ClientCnxn: Session establishment completeon server server1/192.168.1.201:2181, sessionid = 0x3b35ddd5d40022,negotiated timeout = 180000
 
DataTime=20121125231002,serverIP=192.168.1.107, serverPort=8686,heapUsedKB=91746,heapMaxKB=506816, heapCommitKB=164192,heapUtil=55, nonHeapUsedKB=84047,nonHeapMaxKB=229376,nonHeapCommitKB=84064, nonHeapUtil=99,virtMemCommitKB=293580,freePhyMemKB=1063424, freeSwapKB=4194303,totalSwapKB=4194303, phyMemUtil=75, swapMemUtil=0,cpuUtil=0

DataTime=20121125231015,serverIP=192.168.1.107, serverPort=8686,heapUsedKB=92581,heapMaxKB=506816, heapCommitKB=164192,heapUtil=56, nonHeapUsedKB=84047,nonHeapMaxKB=229376,nonHeapCommitKB=84064, nonHeapUtil=99,virtMemCommitKB=293580,freePhyMemKB=1061728, freeSwapKB=4194303,totalSwapKB=4194303, phyMemUtil=75, swapMemUtil=0,cpuUtil=0

DataTime=20121125231028,serverIP=192.168.1.107, serverPort=8686,heapUsedKB=92994,heapMaxKB=506816, heapCommitKB=164192,heapUtil=56, nonHeapUsedKB=84047,nonHeapMaxKB=229376,nonHeapCommitKB=84064, nonHeapUtil=99,virtMemCommitKB=293580,freePhyMemKB=1062396, freeSwapKB=4194303,totalSwapKB=4194303, phyMemUtil=75, swapMemUtil=0,cpuUtil=0


。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
12/11/25 23:30:51 INFOzookeeper.ClientCnxn: EventThread shut down
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值