通过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() { |