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. Windows的Nginx服务可视化界面安装

    先安装Nginx服务 启动 Windows安装Nginx服务 参考:https://www.cnblogs.com/pxblog/p/14871932.html 下载软件 https://github ...

  2. 模块化和webpack模块化打包

    模块化和webpack模块化打包: 一.❀ 模块化 [导入import-----导出export] 1.为什么需要模块化? JavaScript 发展初期,代码简单地堆积在一起,只要能顺利地从上往下一 ...

  3. 【LeetCode】714. Best Time to Buy and Sell Stock with Transaction Fee 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetc ...

  4. 【LeetCode】491. Increasing Subsequences 解题报告(Python)

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

  5. 记一次引入Elasticsearch的系统架构实战

    前言 我曾经面试安踏的技术岗,当时面试官问了我一个问题:如果你想使用某个新技术但是领导不愿意,你怎么办? 对于该问题我相信大家就算没有面试被问到过,现实工作中同事之间的合作也会遇到. 因此从我的角度重 ...

  6. 解决ubuntu突然无法联网问题

    一.问题描述 今天使用笔记本远程办公的时候,突然电脑无法联网了,使用chrome浏览器访问网页出现如下错误 This site can't be reachedwww.baidu.com's serv ...

  7. 你真的会用react hooks?看看eslint警告吧!(如何发请求、提升代码性能等问题)

    前言 看过几个react hooks 的项目,控制台上几百条警告,大多是语法不规范,react hooks 使用有风险,也有项目直接没开eslint.当然,这些项目肯定跑起来了,因为react自身或者 ...

  8. hisql 与sqlsugar,freesql 数据插入性能测试

    hisql与目前比较流行的ORM框架性能测试对比 hisql 一直定位为新一代的ORM框架 为低代码开发而生 测试数据数据库为sqlserver数据库 测试源码地址hisql与sqlsugar fre ...

  9. Docker下安装Elasticsearch、ik分词器、kibana

    1:使用docker拉取Elasticsearch镜像 docker pull elasticsearch:7.12.0(不加版本号默认是最新版本) 2:查看是否成功下载镜像 docker image ...

  10. python 用字典进行计数的三种常用方法

    1.常规方法 初始化一个字典,遍历列表或字符串,如果遍历的值已经存在于字典中,则字典值直接加1,否则,令字典键为当前遍历的值,字典值为1, 代码如下: >>> dic = {} &g ...