HBase 学习笔记

1. HBase 的特点

1.线性扩展,自动分表

  • region的自动分裂以及master的balance
  • 增加datanode机器即可增加容量
  • 增加regionserver机器即可增加读写吞吐量

2.海量数据存储

一个表可以有上亿行,上百万列

3.强一致性

同一行数据的读写只在一台regionserver上进行,同一行的列写入是原子的

4.高性能随机写WAL (Write Ahead Log)

5.无缝集成Hadoop,支持MapReduce

2. HBase 各个角色的任务及特点

1)Master

 

- 为Region server分配region

- 负责region server的负载均衡

- 发现失效的region server并重新分配其上的region

- 监听zk,基于zookeeper感应rs的上下线

- 监听zk,基于zookeeper来保证HA

- 处理schema更新请求

 

特点:

 

- 不参与对表的读写访问

- 负载很低

- 无SPOF(单点故障)

 

2)RegionServer

 

- Region server维护Master分配给它的region

- 处理对其上region的IO请求,写入/读取数据

- 维护region的cache

- 处理region的flush、compact、split

 

3)Region和Table

 

- 以Region为单位管理, region(startKey,endKey);

- 每个Column Family单独存储:storeFile;

- 当某个Column Family累积的大小 > 某阈值时,自动分裂成两个Region;

- 如何找到某行属于哪个region呢?两张特殊的表:-ROOT- 和.META.

 

4)Zookeeper

 

- 保证任何时候,集群中只有一个master

- 保存root region的位置 即存贮所有Region  的寻址入口

- 实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master

- 存储Hbase的schema,包括有哪些table,每个table有哪些column family

 

5)HStore

 

- 存储的核心,由两部分组成:MemStore 和 StoreFiles

- 数据先写入MemStore,满了以后flush成一个StoreFile

- StoreFile数据量超过阀值,触发Compact合并操作

- Rgeion 大小超过阀值,出发Split

- 写操作只进入内存即返回,更新和删除操作都在compact过程中进行,Hbase只有增加,因此保证了I/O的高性能

 

HBase 加载数据有两种方式

1.  Java 代码 MapReduce 开发工期比较长

2.  hive-hbase-handler hive创建一个表和Hbase共享,通过hive-hbase-handler 往hive中插入数据,从而达到

posted @ 2014-11-30 09:29  oftenlin  阅读(207)  评论(0编辑  收藏  举报