
# HBase应用开发简介
#### HBase介绍
HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。HBase设计目标是用来解决关系型数据库在处理海量数据时的局限性。
HBase使用场景有如下几个特点：
- 处理海量数据（TB或PB级别以上）。
- 具有高吞吐量。
- 在海量数据中实现高效的随机读取。
- 具有很好的伸缩能力。
- 能够同时处理结构化和非结构化的数据。
- 不需要完全拥有传统关系型数据库所具备的ACID特性。ACID特性指原子性（Atomicity）、一致性（Consistency）、隔离性（Isolation，又称独立性）、持久性（Durability）。
- HBase中的表具有如下特点：
  - 大：一个表可以有上亿行，上百万列。
  
  - 面向列：面向列（族）的存储和权限控制，列（族）独立检索。
  
  - 稀疏：对于为空（null）的列，并不占用存储空间，因此，表可以设计的非常稀疏。
   
 
#### HBase接口类型介绍
由于HBase本身是由java语言开发出来的，且java语言具有简洁通用易懂的特性，推荐用户使用java语言进行HBase应用程序开发。
HBase采用的接口与Apache HBase保持一致。
HBase通过接口调用，可提供的功能如[表1]所示。
 表1HBase接口提供的功能 
| 功能         | 说明             |
|:---|:---|
| CRUD数据读写功能 | 增查改删。          |
| 高级特性       | 过滤器、二级索引、协处理器。 |
| 管理功能       | 表管理、集群管理。      |
   
 #### HBase常用概念
- **过滤器**
  过滤器提供了非常强大的特性来帮助用户提高HBase处理表中数据的效率。用户不仅可以使用HBase中预定义好的过滤器，而且可以实现自定义的过滤器。
  
- **协处理器**
  允许用户执行region级的操作，并且可以使用与RDBMS中触发器类似的功能。
  
- **keytab** **文件**
  存放用户信息的密钥文件。在安全模式下，应用程序采用此密钥文件进行API方式认证。
  
- **Client**
  客户端直接面向用户，可通过Java API、HBase Shell或者Web UI访问服务端，对HBase的表进行读写操作。本文中的HBase客户端特指HBase client的安装包，可参考[HBase对外接口介绍](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_080053.html)。
  
 
