今天看啥
    热点:

      天发国际娱乐官网:  考古人员对古城附近的3座墓葬进行了发掘,编号为M1的墓葬为带墓道的竖穴土坑墓,墓道位于竖穴南侧,整体呈“甲”字形,墓地已被盗掘,人骨散落在墓室内外,估计有6具人骨,在填土中清理出铜镜残片、银耳环、碳精珠、马蹄形木梳、木箭杆、织锦残片等遗物。

      重温HBaes部署与java客户端访问,重温hbaes部署java


      好久没搭起来测测了,今天顺手搭起来用用。结果遇到了很多问题,下面一一说明

      一、部署

      简单起见,我使用了stand-alone模式。直接下载解压即可,注意的是需要改动hbase-site.xml:

      <configuration>
              <property>
                      <name>hbase.rootdir</name>
                      <value>file:///root/zhangtieying/hbase</value>
              </property>
              <property>
                      <name>hbase.zookeeper.property.dataDir</name>
                      <value>/root/zhangtieying/zookeeper</value>
              </property>
      </configuration>

      另外,注意修改/etc/hosts

      127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
      10.1.102.104 ccf04
      10.20.14.16 dt16
      10.20.14.17 dt17
      10.20.14.18 dt18
      10.20.14.19 dt19
      10.20.14.20 dt20
      10.20.14.21 dt21
      10.20.14.22 dt22
      10.20.14.23 dt23
      10.20.14.24 dt24
      10.20.14.25 dt25

      一定注意:ccf04为主机名,要和实际ip10.1.102.104对应上

      ccf04添加为主机名的方法:vim /etc/sysconfig/network:

      NETWORKING=yes
      HOSTNAME=ccf04

      二、java客户端连接

      这里给出我的测试代码(部分代码是copy的)

      /**
       * Created by Michael on 2015/6/20.
       */
      
      import java.util.ArrayList;
      import java.util.List;
      
      import org.apache.hadoop.conf.Configuration;
      import org.apache.hadoop.hbase.HBaseConfiguration;
      import org.apache.hadoop.hbase.HColumnDescriptor;
      import org.apache.hadoop.hbase.HTableDescriptor;
      import org.apache.hadoop.hbase.KeyValue;
      import org.apache.hadoop.hbase.client.Delete;
      import org.apache.hadoop.hbase.client.Get;
      import org.apache.hadoop.hbase.client.HBaseAdmin;
      import org.apache.hadoop.hbase.client.HTable;
      import org.apache.hadoop.hbase.client.Put;
      import org.apache.hadoop.hbase.client.Result;
      import org.apache.hadoop.hbase.client.ResultScanner;
      import org.apache.hadoop.hbase.client.Scan;
      import org.apache.hadoop.hbase.util.Bytes;
      
      public class TestHbase {
      
          static Configuration conf=null;
          static{
      
              conf=HBaseConfiguration.create();//hbase的配置信息
              conf.set("hbase.zookeeper.quorum", "10.1.102.104:2181");  //zookeeper的地址
      
          }
      
          public static void main(String[] args)throws Exception {
      
              TestHbase t=new TestHbase();
              t.createTable("test-zty", new String[]{"name","age"});
              //t.insertRow("test-zty", "2", "age", "myage", "100");
              // t.getOneDataByRowKey("test-zty", "2");
              //t.showAll("test");
      
          }
      
          /***
           * 创建一张表
           * 并指定列簇
           * */
          public void createTable(String tableName,String cols[])throws Exception{
              HBaseAdmin admin=new HBaseAdmin(conf);//客户端管理工具类
              if(admin.tableExists(tableName)){
                  System.out.println("此表已经存在.......");
              }else{
                  HTableDescriptor table=new HTableDescriptor(tableName);
                  for(String c:cols){
                      HColumnDescriptor col=new HColumnDescriptor(c);//列簇名
                      table.addFamily(col);//添加到此表中
                  }
      
                  admin.createTable(table);//创建一个表
                  admin.close();
                  System.out.println("创建表成功!");
              }
          }
      
          /**
           * 添加数据,
           * 建议使用批量添加
           * @param tableName 表名
           * @param row  行号
           * @param columnFamily 列簇
           * @param column   列
           * @param value   具体的值
           *
           * **/
          public  void insertRow(String tableName, String row,
                                 String columnFamily, String column, String value) throws Exception {
              HTable table = new HTable(conf, tableName);
              Put put = new Put(Bytes.toBytes(row));
              // 参数出分别:列族、列、值
              put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column),
                      Bytes.toBytes(value));
      
              table.put(put);
              table.close();//关闭
              System.out.println("插入一条数据成功!");
          }
      
          /**
           * 删除一条数据
           * @param tableName 表名
           * @param row  rowkey
           * **/
          public void deleteByRow(String tableName,String rowkey)throws Exception{
              HTable h=new HTable(conf, tableName);
              Delete d=new Delete(Bytes.toBytes(rowkey));
              h.delete(d);//删除一条数据
              h.close();
          }
      
          /**
           * 删除多条数据
           * @param tableName 表名
           * @param row  rowkey
           * **/
          public void deleteByRow(String tableName,String rowkey[])throws Exception{
              HTable h=new HTable(conf, tableName);
      
              List<Delete> list=new ArrayList<Delete>();
              for(String k:rowkey){
                  Delete d=new Delete(Bytes.toBytes(k));
                  list.add(d);
              }
              h.delete(list);//删除
              h.close();//释放资源
          }
      
          /**
           * 得到一条数据
           *
           * @param tableName 表名
           * @param rowkey 行号
           * ***/
          public void getOneDataByRowKey(String tableName,String rowkey)throws Exception{
              HTable h=new HTable(conf, tableName);
      
              Get g=new Get(Bytes.toBytes(rowkey));
              Result r=h.get(g);
              for(KeyValue k:r.raw()){
      
                  System.out.println("行号:  "+Bytes.toStringBinary(k.getRow()));
                  System.out.println("时间戳:  "+k.getTimestamp());
                  System.out.println("列簇:  "+Bytes.toStringBinary(k.getFamily()));
                  System.out.println("列:  "+Bytes.toStringBinary(k.getQualifier()));
                  //if(Bytes.toStringBinary(k.getQualifier()).equals("myage")){
                  //  System.out.println("值:  "+Bytes.toInt(k.getValue()));
                  //}else{
                  String ss=  Bytes.toString(k.getValue());
                  System.out.println("值:  "+ss);
                  //}
      
      
      
              }
              h.close();
          }
      
          /**
           * 扫描所有数据或特定数据
           * @param tableName
           * **/
          public void showAll(String tableName)throws Exception{
      
              HTable h=new HTable(conf, tableName);
      
              Scan scan=new Scan();
              //扫描特定区间
              //Scan scan=new Scan(Bytes.toBytes("开始行号"),Bytes.toBytes("结束行号"));
              ResultScanner scanner=h.getScanner(scan);
              for(Result r:scanner){
                  System.out.println("==================================");
                  for(KeyValue k:r.raw()){
      
                      System.out.println("行号:  "+Bytes.toStringBinary(k.getRow()));
                      System.out.println("时间戳:  "+k.getTimestamp());
                      System.out.println("列簇:  "+Bytes.toStringBinary(k.getFamily()));
                      System.out.println("列:  "+Bytes.toStringBinary(k.getQualifier()));
                      //if(Bytes.toStringBinary(k.getQualifier()).equals("myage")){
                      //  System.out.println("值:  "+Bytes.toInt(k.getValue()));
                      //}else{
                      String ss=  Bytes.toString(k.getValue());
                      System.out.println("值:  "+ss);
                      //}
                  }
              }
              h.close();
          }
      }
      

      工程使用maven,其pom.xml如下:

      <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="http://www.1click-soft.com/tfgjylgw/POM/4.0.0"
               xmlns:xsi="http://www.1click-soft.com/tfgjylgw/2001/XMLSchema-instance"
               xsi:schemaLocation="http://www.1click-soft.com/tfgjylgw/POM/4.0.0 http://www.1click-soft.com/tfgjylgw/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
      
          <groupId>com.codesolid</groupId>
          <artifactId>HelloJUnit</artifactId>
          <version>1.0</version>
      
          <dependencies>
              <dependency>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                  <version>4.11</version>
                  <scope>test</scope>
              </dependency>
              <dependency>
                  <groupId>log4j</groupId>
                  <artifactId>log4j</artifactId>
                  <version>1.2.17</version>
                  <scope>compile</scope>
              </dependency>
              <dependency>
                  <groupId>org.apache.hadoop</groupId>
                  <artifactId>hadoop-core</artifactId>
                  <version>1.0.4</version>
              </dependency>
              <dependency>
                  <groupId>org.apache.hbase</groupId>
                  <artifactId>hbase</artifactId>
                  <version>0.94.5</version>
              </dependency>
          </dependencies>
      
      </project>


      三、遇到的问题

      This server is in the failed servers list: localhost/127.0.0.1:60718

      出现该问题的原因是没有在服务端配置主机名和真实ip的映射,因此需要再/etc/hosts中加上10.1.102.104 ccf04(ccf04为服务器的主机名)

      同时,需要在你跑程序的机器上添加ccf04的映射,我的是在windows上跑的java程序,需要修改windows的host文件,最后一行加入10.1.102.104 ccf04即可

      www.1click-soft.comtruehttp://www.1click-soft.com/sybase/1236555.htmlTechArticle重温HBaes部署与java客户端访问,重温hbaes部署java 好久没搭起来测测了,今天顺手搭起来用用。结果遇到了很多问题,下面一一说明 一、部...

      相关文章

      相关搜索: 客户端

      帮客评论

      视觉看点
      百度 360 搜狗