Pig,可以使用Pig Latin流式编程语言来操作HBase中的数据
Hive,可以使用类似SQL语言来访问HBase,最终本质是编译成MapReduce Job来处理HBase表数据,适合做数据统计。

1.什么是HBase

 
HBase是一个在Hadoop上开发的面向列(同类软件还有Cassandra和HyperTable)的分布式数据库。
利用HDFS作为其文件存储系统
利用MapReduce来处理HBase中的海量数据
利用Zookeeper作为协同服务,主要用于实时随机读/写超大规模数据集
HBase并不是关系型数据库,它不支持SQL,但它能够做RDBMS不能做的事;
 

2.HBase的特点

面向列:列的动态、无限扩展 —— 内容评论的扩展,同类数据集中存储便于压缩
稀疏表:有数据时这个单元格才存在 —— 节省空间
 

3.HBase表格示意图

Ø Row Key: 行键,Table的主键,Table中的记录按照Row Key排序
Ø Timestamp: 时间戳,每次数据操作对应的时间戳,可以看作是数据的version number

Ø Column Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中可以由任意多个Column组成,即Column Family支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。
 

4.HBase的组件构成

HMaster (HA),负责Table和Region的管理工作
1、建表、删表、查看表格属性;
2、管理RegionServer负载均衡,调整Region分布;
3、Region Split后,负责新Region的分配;
4、在RegionServer失效后,负责失效节点上的Regions迁移;
RegionServer(x N),主要负责响应用户I/O请求,向HDFS文件系统中读写数据
 

5.HBase中表格的存储

一张表存储在[1-N)个HRegion中,每个HRegion保存某张表RowKey连续的一段记录。

建表时可以预划分HRegion——提高并行度,进而提升读写速度
否则初始表存在单一HRegion中,随着数据增大HRegion会分裂为多个HRegion
HBase中有两张特殊的Table,-ROOT-和.META.
Ø  .META.:记录了用户表的Region信息,.META.可以有多个regoin
Ø  -ROOT-:记录了.META.表的Region信息,-ROOT-只有一个region
Ø  Zookeeper中记录了-ROOT-表的location

 
首先 HBase Client端会连接Zookeeper Qurom
通过 Zookeeper组件Client 能获知哪个 RegionServer管理-ROOT- Region 。
那么Client就去访问管理 -ROOT-的HRegionServer ,在META中记录了 HBase中所有表信息,(你可以使用   scan '.META.' 命令列出你创建的所有表的详细信息 ),从而获取Region 分布的信息。一旦 Client获取了这一行的位置信息,比如这一行属于哪个 Region,Client 将会缓存这个信息并直接访问 HRegionServer。
久而久之Client 缓存的信息渐渐增多,即使不访问 .META.表 也能知道去访问哪个 HRegionServer。

6.HBase读数据

HBase读取数据优先读取HMemcache中的内容,如果未取到再去读取Hstore中的数据,提高数据读取的性能。

7.HBase写数据

HBase写入数据会写到HMemcache和Hlog中,HMemcache建立缓存,Hlog同步Hmemcache和Hstore的事务日志,发起Flush Cache时,数据持久化到Hstore中,并清空HMemecache。

下图展示了MapReduce的数据处理流程,其中一个Map-Reduce step的输出将作为下一个典型Hadoop job的输入结果。

在整个过程中,中间结果会借助磁盘传递,因此对比计算,大量的Map-Reduced作业都受限于IO。然而对于ETL、数据整合和清理这样的用例来说,IO约束并不会产生很大的影响,因为这些场景对数据处理时间往往不会有较高的需求。然而,在现实世界中,同样存在许多对延时要求较为苛刻的用例

最新文章

  1. orale 函数大全[转]
  2. 【转】WordPress转PHPCMS策略-数据库完美转换
  3. singleTask, singleInstance使用心得
  4. Practice:输入年月日,判断该时间为一年的第几天
  5. 李洪强-C语言4-内存分析
  6. redhat centos yum源的安装
  7. Exchange之证书申请
  8. webview的弹性布局之rem,em
  9. 解决mac下eclipse字体模糊
  10. python time模块函数
  11. vim改变多窗口的大小
  12. 熬之滴水穿石:JSP--HTML中的JAVA代码(6)
  13. WEB版一次选择多个文件进行批量上传(WebUploader)的解决方案
  14. centOS7服务管理与启动流程
  15. Mac OS 终端常用命令基础
  16. 学习笔记TF017:自然语言处理、RNN、LSTM
  17. 10个最佳 Javascript+HTML5 演示文稿框架
  18. BZOJ 1040 骑士 基环树 树形DP
  19. unity解析json的两种方式
  20. kubernetes deployment

热门文章

  1. react 实现tab切换 三角形筛选样式
  2. django——django链接mysql数据库
  3. JAVA字符串拼接操作规则说明
  4. Linux(Centos)部署Jenkins,并配置Git生成Jar包进行发布部署
  5. Android Linux vmstat 命令详解
  6. 【LeetCode】693. Binary Number with Alternating Bits 解题报告(Python)
  7. 【剑指Offer】二进制中1的个数 解题报告(Python)
  8. 菜鸟物流的运输网络(计蒜客复赛F)
  9. 第四十五个知识点:描述一些对抗RSA侧信道攻击的基础防御方法
  10. CS5266 Type-C转HDMI+PD3.0+USB3.0 三合一拓展坞电路设计