HBase学习小节v1.2

1。HBase

,,,,一个构建在HDFS上的高可靠,高性能,面向列,可伸缩,分布式列存储开源数据库,主要用于存储海量数据,同时使用mapreduce处理HBase中的数据,利用饲养员作为协同服务。读写相对简单,不支持条件查询

2。HBase与HDFS对比

,,,,都具有良好的容错性和扩展性

,,,, HDFS适合批处理场景,但是不支持数据随即查找,不适合增量数据处理,不支持数据更新

3。HBase的特点:

,,,,海量数据:可支持上百万列,分成多个地区

,,,,无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列

,,,,面向列存储:面向列的存储和权限控制,列独立检索

,,,,记录稀疏:列为空(NULL),并不占用存储空间

,,,,数据多版本:每个单元的数据可以有多个版本,通过时间戳区分

,,,,数据类型单一:所有数据都是字符串

4。HBase结构组成

,,,,行关键:

,,,,,,,,字节数组

,,,,,,,,表中每条记录的“主键”

,,,,,,,,方便快速查找

,,,,时间戳:

,,,,,,,,每次数据操作对应的时间戳,看作数据的版本号

,,,,列族:

,,,,,,,,拥有一个名称(string)

,,,,,,,,包含一个或者多个相关列(列)

,,,,专栏:

,,,,的值:

5。支持的操作

,,,,所有操作基于rowkey的

,,,,支持CRUD(创建、读取、更新、删除)以及摆放,得到multiput,扫描

,,,,没有内置加入操作,可使用MapReduce实现

6。HBase为每个值维护了多级索引,即& lt;关键,列族,列名,timestamp>

,,,,表中的所有行都按照行关键的字典序排列,在行的方向上分割为多个地区,地区是HBase中分布式存储与负载均衡的最小单元,不同的地区分布到不同RegionServer上;

,,,,地区增大到一个阀值的时候,区域就会分为两个新的地区,之后会有越来越多的地区

,,,,地区由一个或多个存储组成,每个店保存一个列家族

,,,,每个商店又由一个memStore和0至多个StoreFile组成;

,,,, memStore存储在内存中,StoreFile存储在HDFS上

7。HBase的基本组件

,,,,客户:通过RPC与HMaster及HRegionServer进行通信,并维护缓存加快对HBase的访问

,,,,动物园管理员:

,,,,,,,,保证集群中总是存在一个HMaster

,,,,,,,,存储所有地区的寻址入口

,,,,,,,,实时监控区域服务器的上线和下线信息,并实时通知给主人

,,,,,,,,存储HBase的模式和表元数据

,,,, HMaster:

,,,,,,,,为地区服务器分配地区

,,,,,,,,复杂地区服务器的负载均衡

,,,,,,,,发现失效的区域服务器并重新分配其上的地区

,,,,,,,,管理用户对表的增删改查操作

,,,, HRegionServer:

,,,,,,,,维护地区,处理对地区的I/O请求

,,,,,,,,负责切分在运行过程中变得过大的地区

8. HBase容错机制

,,,, HMaster:管理员重新选择一个新主人的

,,,,,,,,无主过程中,数据读取仍照常进行

,,,,,,,,无主过程中,地区切分,负载均衡等无法进行

,,,, HRegionServer容错:定时向管理员汇报心跳,如果一定时间内未出现心跳

,,,, HMaster将该HRegionServer上的地区重新分配到其他RegionServer上

,,,,失效服务器上“预写“日志由主服务器进行分割并派送给新的RegionServer上

9。HBase访问方式

,,,,本地Java API:常规高效

,,,,,,,,创建一个配置对象(包含各种配置信息hbase-default.xml, hbase-site.xml)

,,,,,,,,,,,,配置设计=HbaseConfiguration.create ()

,,,,,,,,构建一个HTable句柄(提供配置对象,提供待访问表的名称)

,,,,,,,,,,,, HTable表=new HTable(参看表)

,,,,,,,,,,,,仅提供行级事务,严格的行一致性,并发读,顺序写

,,,,,,,,执行操作(支持,,删除、扫描等的批处理)

,,,,,,,,,,,, table.getTableName ();

,,,,,,,,关闭HTable句柄(内存数据刷新到磁盘上,释放资源)

,,,,,,,,,,,, table.close ()

,,,, HBase壳:用于管理

,,,,节俭网关:序列化,支持c++、Python等语言

,,,,,,,,启动节俭服务器:hbase-daemon。sh开始thtift

,,,,,,,,生成Hbase节俭端接口文件

,,,,,,,,节俭——创xxx Hbase.thrift

,,,,,,,,编写客户端代码

,,,如:1。null

HBase学习小节v1.2