hadoop之hbase实现web 小实例

[java]  view plain  copy
  1. package web;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5. import java.util.ArrayList;  
  6. import java.util.List;  
  7.   
  8. import javax.servlet.ServletException;  
  9. import javax.servlet.http.HttpServlet;  
  10. import javax.servlet.http.HttpServletRequest;  
  11. import javax.servlet.http.HttpServletResponse;  
  12.   
  13. import org.apache.hadoop.conf.Configuration;  
  14. import org.apache.hadoop.hbase.HBaseConfiguration;  
  15. import org.apache.hadoop.hbase.HColumnDescriptor;  
  16. import org.apache.hadoop.hbase.HTableDescriptor;  
  17. import org.apache.hadoop.hbase.KeyValue;  
  18. import org.apache.hadoop.hbase.MasterNotRunningException;  
  19. import org.apache.hadoop.hbase.ZooKeeperConnectionException;  
  20. import org.apache.hadoop.hbase.client.Delete;  
  21. import org.apache.hadoop.hbase.client.Get;  
  22. import org.apache.hadoop.hbase.client.HBaseAdmin;  
  23. import org.apache.hadoop.hbase.client.HTable;  
  24. import org.apache.hadoop.hbase.client.Put;  
  25. import org.apache.hadoop.hbase.client.Result;  
  26. import org.apache.hadoop.hbase.client.ResultScanner;  
  27. import org.apache.hadoop.hbase.client.Scan;  
  28. import org.apache.hadoop.hbase.util.Bytes;  
  29.   
  30.   
  31.   
  32. public class HbaseServlet extends HttpServlet{  
  33.   
  34.     /** 
  35.      *  
  36.      */  
  37.     private static final long serialVersionUID = 1L;  
  38.      PrintWriter  writer  = null;  
  39.      private static Configuration conf = null;  
  40.        
  41.         /** 
  42.          * 初始化配置 
  43.          */  
  44.         static {  
  45.             Configuration HBASE_CONFIG = new Configuration();  
  46.             //与hbase/conf/hbase-site.xml中hbase.zookeeper.quorum配置的值相同   
  47.             HBASE_CONFIG.set("hbase.zookeeper.quorum""172.20.59.163");  
  48.             //与hbase/conf/hbase-site.xml中hbase.zookeeper.property.clientPort配置的值相同  
  49.             HBASE_CONFIG.set("hbase.zookeeper.property.clientPort""2181");  
  50.             conf = HBaseConfiguration.create(HBASE_CONFIG);  
  51.         }  
  52.         public void creatTable(String tableName, String[] familys) throws Exception {  
  53.             HBaseAdmin admin = new HBaseAdmin(conf);  
  54.             if (admin.tableExists(tableName)) {  
  55.                 System.out.println(writer==null);  
  56.                 writer.println("table already exists!");  
  57.                 writer.println("<br>");  
  58.             } else {  
  59.                 HTableDescriptor tableDesc = new HTableDescriptor(tableName);  
  60.                 for(int i=0; i<familys.length; i++){  
  61.                     tableDesc.addFamily(new HColumnDescriptor(familys[i]));  
  62.                 }  
  63.                 admin.createTable(tableDesc);  
  64.                 writer.println("create table " + tableName + " ok.");  
  65.                 writer.println("<br>");  
  66.             }   
  67.         }  
  68.           
  69.         /** 
  70.          * 删除表 
  71.          */  
  72.         public  void deleteTable(String tableName) throws Exception {  
  73.            try {  
  74.                HBaseAdmin admin = new HBaseAdmin(conf);  
  75.                admin.disableTable(tableName);//删除表前应当丢弃该表  
  76.                admin.deleteTable(tableName);  
  77.                writer.println("delete table " + tableName + " ok.");  
  78.                writer.println("<br>");  
  79.            } catch (MasterNotRunningException e) {  
  80.                e.printStackTrace();  
  81.            } catch (ZooKeeperConnectionException e) {  
  82.                e.printStackTrace();  
  83.            }  
  84.         }  
  85.            
  86.         /** 
  87.          * 插入一行记录 
  88.          */  
  89.         public  void addRecord (String tableName, String rowKey, String family, String qualifier, String value)  
  90.                 throws Exception{  
  91.             try {  
  92.                 HTable table = new HTable(conf, tableName);  
  93.                 Put put = new Put(Bytes.toBytes(rowKey));  
  94.                 put.add(Bytes.toBytes(family),Bytes.toBytes(qualifier),Bytes.toBytes(value));  
  95.                 table.put(put);  
  96.                 writer.println("insert recored " + rowKey + " to table " + tableName +" ok.");  
  97.                 writer.println("<br>");  
  98.             } catch (IOException e) {  
  99.                 e.printStackTrace();  
  100.             }  
  101.         }  
  102.        
  103.         /** 
  104.          * 删除一行记录 
  105.          */  
  106.         public  void delRecord (String tableName, String rowKey) throws IOException{  
  107.             HTable table = new HTable(conf, tableName);  
  108.             List list = new ArrayList();  
  109.             Delete del = new Delete(rowKey.getBytes());  
  110.             list.add(del);  
  111.             table.delete(list);  
  112.             writer.println("del recored " + rowKey + " ok.");  
  113.             writer.println("<br>");  
  114.         }  
  115.            
  116.         /** 
  117.          * 查找一行记录 
  118.          */  
  119.         public  void getOneRecord (String tableName, String rowKey) throws IOException{  
  120.             HTable table = new HTable(conf, tableName);  
  121.             Get get = new Get(rowKey.getBytes());  
  122.             Result rs = table.get(get);  
  123.             for(KeyValue kv : rs.raw()){  
  124.                 writer.println(new String(kv.getRow()) + " " );  
  125.                 writer.println("<br>");  
  126.                writer.println(new String(kv.getFamily()) + ":" );  
  127.                writer.println("<br>");  
  128.                writer.println(new String(kv.getQualifier()) + " " );  
  129.                writer.println("<br>");  
  130.                writer.println(kv.getTimestamp() + " " );  
  131.                writer.println("<br>");  
  132.                 writer.println(new String(kv.getValue()));  
  133.                 writer.println("<br>");  
  134.             }  
  135.         }  
  136.            
  137.         /** 
  138.          * 显示所有数据 
  139.          */  
  140.         public  void getAllRecord (String tableName) {  
  141.             try{  
  142.                  HTable table = new HTable(conf, tableName);  
  143.                  Scan s = new Scan();  
  144.                  ResultScanner ss = table.getScanner(s);  
  145.                  for(Result r:ss){  
  146.                      for(KeyValue kv : r.raw()){  
  147.                            
  148.                        writer.println(new String(kv.getRow()) + " ");  
  149.                        writer.println("<br>");  
  150.                        writer.println(new String(kv.getFamily()) + ":");  
  151.                        writer.println("<br>");  
  152.                        writer.println(new String(kv.getQualifier()) + " ");  
  153.                        writer.println("<br>");  
  154.                        writer.println(kv.getTimestamp() + " ");  
  155.                        writer.println("<br>");  
  156.                        writer.println(new String(kv.getValue()));  
  157.                        writer.println("<br>");  
  158.                      }  
  159.                  }  
  160.             } catch (IOException e){  
  161.                 e.printStackTrace();  
  162.             }  
  163.         }  
  164.          
  165.         protected void doPost(HttpServletRequest request, HttpServletResponse response)  
  166.                 throws ServletException, IOException {  
  167.             response.setContentType("text/html;charset=GBK");  
  168.              writer = response.getWriter();  
  169.             // TODO Auto-generated method stub  
  170.              try {  
  171.                  String tablename = "scores";  
  172.                  String[] familys = {"grade""course"};  
  173.                  this.creatTable(tablename, familys);  
  174.                   
  175.                     
  176.                  //add record zkb  
  177.                  this.addRecord(tablename,"zkb","grade","","5");  
  178.                  this.addRecord(tablename,"zkb","course","","90");  
  179.                  this.addRecord(tablename,"zkb","course","math","97");  
  180.                  this.addRecord(tablename,"zkb","course","art","87");  
  181.                  //add record  baoniu  
  182.                  this.addRecord(tablename,"baoniu","grade","","4");  
  183.                  this.addRecord(tablename,"baoniu","course","math","89");  
  184.                     
  185.                  writer.println("===========get one record========");  
  186.                  writer.println("<br>");  
  187.                  this.getOneRecord(tablename, "zkb");  
  188.                     
  189.                  writer.println("===========show all record========");  
  190.                  writer.println("<br>");  
  191.                  this.getAllRecord(tablename);  
  192.                     
  193.                  writer.println("===========del one record========");  
  194.                  writer.println("<br>");  
  195.                  this.delRecord(tablename, "baoniu");  
  196.                  this.getAllRecord(tablename);  
  197.                     
  198.                  writer.println("===========show all record========");  
  199.                  writer.println("<br>");  
  200.                  this.getAllRecord(tablename);  
  201.              } catch (Exception e) {  
  202.                  e.printStackTrace();  
  203.              }  
  204.               
  205.         }  
  206.         @Override  
  207.         protected void doGet(HttpServletRequest request, HttpServletResponse response)  
  208.                 throws ServletException, IOException {  
  209.             // TODO Auto-generated method stub  
  210.             doPost(request, response);  
  211.         }  
  212.   
  213. }  

Eclipse开发web程序,在新建java工程后要补全web程序所需的文件WebRoot下的所有文件,配置启动项路径(tomcat中的配置文件server.xml)

server.xml中host标签内添加:<Context docBase="D:\hadoop1-0-2\work\HbaseTest\WebRoot" path="/hbase" reloadable="false"/>可以添加多个context

docBase是项目HbaseTtest的jsp所在路径,path是虚拟路径,http://localhost:8080/hbase即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值