Java与Hbase数据库

Hbase

HBase是一个分布式的、面向列的开源数据库,可伸缩的分布式存储系统。
Hbase在Hadoop架构中的位置如下图所示:
这里写图片描述
在Hadoop体系中,HBase位于结构化存储层,HBase利用Hadoop MapReduce来处理HBase中的海量数据。利用Zookeeper作为相同服务,Zookeeper为HBase提供了稳定服务和failover机制。
Hadoop HDFS为HBase提供了高可靠性的底层存储支持。


Java程序操作Hbase数据库

首先Java程序操作数据库需要在项目中导入Hbase与hadoop 相关的Jar包。并且配置winutils.exe 的环境变量路径。
winutils.exe 的环境变量配置如下(winutils.exe位于hadoop/bin/winutils.exe):
这里写图片描述
Maven工程中添加相关依赖:
这里写图片描述
(如果不能成功加载,请手动相关jar包放入maven本地仓库)


使用Java与HBase集群交互时,需要创建一个HTable实例,使用该实例提供的相关方法进行插入/删除/查询操作。
那么如何创建一个HTable实例呢?
1、先要创建一个Configuration对象(该对象)

Configuration conf = HBaseConfiguration.create();
Conf.set(“hbase.zookeeper.property.clientPort”,”2181”);

2、利用conf对象得到HConnection对象

conn = HConnectionManager.getConnection(conf);

3、利用conn对象得到HTable对象

HTable table = conn.getTable(tableName);

注意
HConnection实际上去连接的并不是HBase集群本身,而是维护其关键数据信息的Zookeeper(简称ZK)集群
HTable的父类HTableInterface是非线程安全的,而且创建该HtableInterface的过程是轻量级的,只要保证我们用的是一个Configuration对象是同一个,那么HConnection也是同一个,使用同一个Confuguration的HTable都会共用一个HConnection。这样我们就可以利用单例模式获得全局唯一的实例Configuration和HConnection对象,然后以多线程的形式创建HTable对象,这样就实现了HBase连接池。


查询操作:

//创建一个空的Scan实例
    Scan scan= new Scan();
    2//在行上获取遍历器
           ResultScanner rs= table.getScanner(scan);
    3//打印行的值
        for (Result r: rs) {
            System.out.println(r);
        }

向指定表中插入数据:

 Table table = connection.getTable(TableName.valueOf(tableName.getBytes()));
                  Put put = new Put(rowkey.getBytes());  
                  put.addColumn(family.getBytes(),qualifier.getBytes(), value.toString().getBytes());  
                 table.put(put);  

代码未完待续。。。

猜你喜欢

转载自blog.csdn.net/longge0508/article/details/80591920
今日推荐