Hbase编程实践
Posted yunpiao123456
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的多语言编程通过Thift Clients访问Thrift Gateway实现。其内部通过RPC结构实现。
使用步骤
1. HDFS/HBase安装
2. 启动Hbase thrift server bin/hbase-daemon.sh start thrift
3. 生成Hbase thrift client接口文件 thrift --gen php Hbase.thrift thrift --gen cpp Hbase.thrift
4. 编写客户端代码
Hbase C++编程
1. 生成Hbase thrift client接口文件 thrift --gen cpp Hbase.thrift hbase.thrift位置: $HBASE_HOME/src/main/resources/org/apache/hadoop/h base/thrift/Hbase.thrift
2. 编写客户端代码 $HBASE_HOME/src/examples/thrift/DemoClient.cpp
3. 编译代码(make)
4. 运行程序 ./DemoClient
Hbase C++编程—头文件:
Hbase C++编程—初始化 :
Hbase C++编程—获取所有表 :
Hbase C++编程—创建表:
Hbase C++编程—插入数据:
Hbase C++编程—全表扫描:
Hbase C++编程—全表扫描 :
Hbase更多语言编程
1. PHP $HBASE_HOME/src/examples/thrift/DemoClient.php;
2. Ruby $HBASE_HOME/src/examples/thrift/DemoClient.rb;
3. 其他语言 Thrift支持的语言全部支持,包括:C++、C#、Cocoa、 D、Delphi、Erlang、Haskell、Java、Perl、PHP、 Python、Ruby、Smalltalk等 。
Hbase MapReduce编程
可以通过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的案例分析。
以上是关于Hbase编程实践的主要内容,如果未能解决你的问题,请参考以下文章