hbase 编码实践

Hbase 访问方式

   Hbase 访问方式包括:

   (1)、Native Java API :最常规和高效的访问方式; 

   (2)、HBase Shell : HBase的命令行工具,最简单的接口,适合HBase管理使 用; 

   (3)、Thrift Gateway :利用Thrift序列化技术,支持C++,PHP,Python等多种 语言,适合其他异构系统在线访问HBase表数据; 

   (4)、REST Gateway : 支持REST 风格的Http API访问HBase, 解除了语言限制; 

   (5)、MapReduce : 直接使用MapReduce作业处理Hbase数据。使用Pig/hive处理Hbase数据。 

Hbase Java编程

          Hbase是用Java语言编写的,支持Java编程 是自然而然的事情。其支持CRUD操作包括Create, Read, Update和 Delete 。 Java API包含Hbase shell支持的所有功能, 甚至更多。其是访问Hbase最快的方式。

    Java API程序设计步骤 :

    步骤1:创建一个Configuration对象 。包含各种配置信息 ;

    Configuration conf = HbaseConfiguration.create(); 

    步骤2:构建一个HTable句柄 。 提供Configuration对象;提供待访问Table的名称 ;

    HTable table = new HTable(conf, tableName); 

    步骤3:执行相应的操作 。执行put、get、delete、scan等操作 ;

    table.getTableName(); 

    步骤4:关闭HTable句柄 。 将内存数据刷新到磁盘上; 释放各种资源 。
    table.close(); 

Configuration对象

    Configuration对象包装了客户端程序连接Hbase服务 所需的全部信息; 包括Zookeeper位置,Zookeeper连接超时时间 。HbaseConfiguration.create()内部逻辑是从CLASSPATH中加载hbase-default.xml和hbase-site.xml 两个文件 。hbase-default.xml已经被打包到Hbase jar包中。hbase-site.xml需添加到CLASSPATH中 。hbase-site.xml将覆盖hbase-default.xml中的同名属性。

  Hbase首先,通过修改hadoop脚本,将Hbase CLASSPATH加入 。然后,在<hadoop_install>/conf/hadoop-env.sh中设置  export  HADOOP_CLASSPATH=$HBASE_HOME/*:$HBASE_HOME/conf:$HA DOOP_CLASSPATH来从CLASSPATH中获取hbase-site.xml信息。

如果已经有一个Configuration文件,可进行如下操作。Configuration newConf = Configuration.create(existingConf)。 用户自定义的配置文件将在已有配置文件之后加载。其将覆盖hbase-default.xml和hbase-site.xml中的配置 。

HBase写入数据

     步骤1:创建一个Put对象;  Put put = new Put(Bytes.toBytes("rowkey")); 

     步骤2:设置cell值; Put.add(family, column, value) 

                  Put.add(family, column, timestamp, value)  

                  Put.add(KeyValue kv) 

     步骤3:调用HTable中的put方法,写入数据;

     步骤4:关闭HTable句柄。  

Hbase中读取数

    Hbase支持的API类型有通过rowkey获取一行数据,通过一个rowkey集合获取多条记录以及扫描整个表或者表的一部分。扫描表可指定扫描的范围[startkey endkey)和表中数据是按照rowkey排序的。其API 特点是数目有限、使用简单。

    读取数据时注意事项:(1)、只读取需要的数据;(2)尽可能增加数据约束条件;(3)可增加family, column(s), time range 和 max versions等约束条件。

    接口实例:

    get.setTimeRange(minStamp, maxStamp) 

    get.setMaxVersions(maxVersions) 

    get.addFamily(family) 

    get.addColumn(family, column) 

    如下为Hbase读取数据实例。

Hbase中删除数据

Hbase中scan数据

Hbase多语言编程

Hbase MapReduce编程

扫描二维码关注公众号,回复: 2899706 查看本文章

   可以通过MapReduce实现Hbase的相关操作。hadoop专门提供了TableMapper和TableReducer实现Hbase的MapReduce的操作。其中输入输出格式都是固定的。MapReduce程序基本框架是:

  (1)、 创建Job对象,设置基本属性; 

  (2)、设置scan对象,指定扫描区间和数据列; 

  (3)、调用TableMapReduceUtil的initTableMapperJob和 initTableReducerJob设置Mapper和Reducer等信息;         (4)、提交作业。 

Hbase MapReduce编程—实例

如图所示,现在的需求是实现Hbase中相关单词的对应nickname的索引查询。

map主要实现包含需求词对应索引的查询。reduce的功能很简单,就是做一个简单的归并操作。其基本实现如下所示:


    本节介绍到此为止。下节将介绍Hbase的案例分析。

猜你喜欢

转载自blog.csdn.net/wenxindiaolong061/article/details/80437332