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约束并不会产生很大的影响,因为这些场景对数据处理时间往往不会有较高的需求。然而,在现实世界中,同样存在许多对延时要求较为苛刻的用例

HBase结构的更多相关文章

  1. Hbase结构简单、作法

    Hbase架构简单介绍.实践 版权声明:本文博主原创文章,博客,未经同意不得转载.

  2. Phoenix(sql on hbase)简单介绍

    Phoenix(sql on hbase)简单介绍 介绍: Phoenix is a SQL skin over HBase delivered as a client-embedded JDBC d ...

  3. kylin-cube存储结构

    前言 本篇文章通过图文的方式分析不同维度组合下的cube在hbase中的存储结构 需要声明的是,kylin不存原始数据,存储cube 全维度构建 假设一张表有3个字段name,age,sex,那么当通 ...

  4. RDBMS关系型数据库与HBase的对比

    关系型数据库 结构: * 数据库以表的形式存在 * 支持FAT.NTFS.EXT.文件系统 * 使用Commit log存储日志 * 参考系统是坐标系统 * 使用主键(PK) * 支持分区 * 使用行 ...

  5. 大数据篇:Hbase

    大数据篇:Hbase Hbase是什么 Hbase是一个分布式.可扩展.支持海量数据存储的NoSQL数据库,物理结构存储结构(K-V). 如果没有Hbase 如何在大数据场景中,做到上亿数据秒级返回. ...

  6. 深度预警:深入理解HBase的系统架构

    HBase的构成 物理上来说,HBase是由三种类型的服务器以主从模式构成的.这三种服务器分别是:Region server,HBase HMaster,ZooKeeper. 其中Region ser ...

  7. hbase_2

    ====HBase API========================================================= ** 配置maven依赖(pom.xml),不需要hado ...

  8. HBase 的表结构

    HBase 的表结构 2016-10-13 杜亦舒 HBase 是一个NoSQL数据库,用于处理海量数据,可以支持10亿行百万列的大表,下面就了解一下数据是如何存放在HBase表中的 关系型数据库的表 ...

  9. Hbase之修改表结构

    import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; impo ...

随机推荐

  1. Python的 垃圾回收机制

    垃圾回收 1. 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 257) 这些整 ...

  2. ThreadLocal的正确使用与原理

    ThreadLocal是什么 ThreadLocal是线程Thread中属性threadLocals即ThreadLocal.ThreadLocalMap的管理者,ThreadLocal用于给每个线程 ...

  3. JAVA将Object对象转byte数组

    /** * 将Object对象转byte数组 * @param obj byte数组的object对象 * @return */ public static byte[] toByteArray(Ob ...

  4. RPA账户和密码管理方案

    如何将登录业务系统的账户和密码"更好的,更合适"地交给RPA? 相信很多小伙伴们在做RPA的时候, 都会或多或少的遇到类似的问题. 正常情况下IT管理人员都会给真实的业务人员分配业 ...

  5. ubuntu下AF_INET和AF_INET6的值

    关于 演示环境 $ uname -a Linux xxxxxxx 5.4.0-47-generic #51-Ubuntu SMP Fri Sep 4 19:50:52 UTC 2020 x86_64 ...

  6. 【LeetCode】437. Path Sum III 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS + DFS BFS + DFS 日期 题目地 ...

  7. 全网连夜修复的Log4j漏洞,如何做到一行代码都不改?

    GitHub 21.5k Star 的Java工程师成神之路,不来了解一下吗! GitHub 21.5k Star 的Java工程师成神之路,真的不来了解一下吗! Apache Log4j2 远程代码 ...

  8. Boost的反射库PFR

    目录 目录 简介 使用方法 限制 总结 简介 Boost.PFR是一个Boost 1.75版本出的C++14的基础反射库,其使用非常简单,非常便捷,但是适用性也比较差,有很多的地方无法使用,适合比较简 ...

  9. HashMap及LinkedHashMap

    HashMap是Map族中最为常用的一种,也是Java Collection Framework的重要成员.HashMap和双向链表合二为一即是LinkedHashMap.所谓LinkedHashMa ...

  10. 【C/C++笔记】友元类函数

    最近学了友元,有三个用法: 1友元函数 2友元类 3友元类函数 我发现友元类函数的用法要比上两个用法要严格,不按格式写会各种出错,要把两个类都拆开来写,共分4步. 第一步: class A; //有 ...