通过HBase的api进行java编程来操作HBase数据库.
HBase是运行在hadoop之上的NoSQL数据库
先复习下之前的吧
理论温习
HBase的优势:
- HBase擅长解决大数据随机访问问题, 随机读和随机写
 - HBase集群能力容易扩展, 理想的处理大数据存储和计算
 - HBase数据表的列可以根据需要动态定义的.
 
HBase的应用场景
- 内存缓存应用-通过增加节点增加内存容量
 - 大容量数据集, 但某些少量子集数据经常被访问.
 - 通过在内存中缓存数据, 减少磁盘I/O访问, 增加数据查询速度
 - HBase擅长通过row key进行检索.
 
1  | 使用HBase:  | 
HBase的劣势
- 不能提供RDBMS(relation database management system)具有的典型特征
 - 不能集成sql支持, 可以通过外部工具(Hive等提供sql访问)
 - 不支持事务
 - 不支持多索引
 - 不能遵守ACID原则,
 
HBase术语
- Node(节点)
- 集群中单独的一台机器
 
 - Cluster(集群)
- 一组互相连接的机器, 由中央节点统一协调来执行任务
 
 - Master Node(主节点)
- 执行协调任务的节点
 
 - Worker Node(从节点)
- 执行由主节点分配的任务
 
 - Daemon(进程)
- 后台运行的程序进程.
 
 
HBase table
- hbase table由rows, columns, column families组成
 - 每一行都有一个唯一的row key, 可以用作快速查找
 - column存储数据
 - 每一个column都属于一个指定的column family(列族)
 - 每个表有一个或多个 column family
 
1  | 1. hbase本质上是一个分布式的存储  | 
1  | 1. 属于同一column family(列族)下的column有着同样的前缀.  | 
代码实战.
老规矩: maven构建项目
pom.xml文件添加依赖
1  | 1. 方便起见 添加最少的依赖, 让这些依赖自动去下载他们所需要的其他依赖.  | 
创建HbaseDemo 类. 新建一个创建表的静态方法. 并测试
1  | package com.dottie.hbase;  | 
1  | 启动hbase shell查看:  | 
获取表
1  | public static HTable getTable() throws IOException {  | 
增: 给表添加记录
1  | public static void putData() throws IOException {  | 
查: 根据rowkey查询一条记录
1  | public static void getData() throws IOException {  | 
创建命名空间
1  | public static void createNameSpace() throws IOException {  | 
查询表中所有数据
默认是根据rowkey和列族进行排序
1  | public static void scanData() {  | 
1  | 
  | 
HBae的过滤器filter
指定查询条件 获取查询结果.
1  | public static void hbaseFilter() {  |