文档章节

大数据(HBase-应用场景、原理与基本架构)

这很耳东先生
 这很耳东先生
发布于 06/25 12:44
字数 1633
阅读 131
收藏 1

Hbase概述

     HBase是一个构建在HDFS上的分布式列存储系统;

     HBase是Apache Hadoop生态系统中的重要一员,主要用于海量结构化数据存储

     从逻辑上讲, HBase将数据按照表、行和列进行存储。

Hbase是Hadoop生态系统的一个组成部分

Hbase与HDFS对比

两者都具有良好的容错性和扩展性,都可以扩展到成百上千个节点;

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

Hbase表的特点

     大:一个表可以有数十亿行,上百万列;

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

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

     稀疏:对于空( null)的列,并不占用存储空间,表可以设计的非常稀疏;

     数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;

     数据类型单一: Hbase中的数据都是字符串,没有类型

行存储与列存储

   数据是按行存储的
   没有索引的查询使用大量I/O 
   建立索引需要花费大量时间和资源

    数据是按列存储-每一列单独存放
    数据即是索引
    指访问查询涉及的列-大量降低系统I/O 
    每一列由一个线索来处理-查询的并发处理
    数据类型一致,数据特征相似-高效压缩

 

Hbase数据模型

     HBase是基于Google BigTable模型开发的, 典型的key/value系统;

Hbase逻辑视图

 

Rowkey与Column Family

 

Hbase基本概念

Row Key
  Byte array
  表中每条记录的“主键”
  方便快速查找

Column Family
  拥有一个名称(string)
  包含一个或者多个相关列

Column
  属于某一个column family
  包含在某一列中
    familyName:columnName

Version Number
默认值系统时间戳

Value(cell)
  Byte array

Hbase数据模型

     HBase schema可以有多个类似Table 
     每个表可由多个Column Family组成
     Hbase可以有Dynamic Column

version number 可由用户提供
   无需以递增的顺序插入
Table可能非常稀疏
   不同的cell可以拥有不同的列
Row Key是主键

Hbase与支持的操作

所有操作均是基于rowkey的;
支持CRUD(Create、Read、Update和Delete)和Scan;
单行操作
   put
   get
   scan
多行操作
   Scan
   Multiput
没有内置join操作,可使用MapReduce解决
 

Hbase物理模型

  每个column family存储在HDFS上的一个单独文件中;
  Key 和 Version number在每个 column family中均由一份;
  空值不会被保存。
  Hbase为每个值维护了多级索引

一个实例

物理存储

1、 Table中的所有行都按照row key的字典序排列;
2、 Table 在行的方向上分割为多个Region;

3、 Region按大小分割的,每个表开始只有一个region,随着数据增多, region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region,之后会有越来越多的region;

4 、 Region是HBase中分布式存储和负载均衡的最小单元。不同Region分布到不同RegionServer上;

5 、 Region虽然是分布式存储的最小单元,但并不是存储的最小单元
   Region由一个或者多个Store组成,每个store保存一个columns family
   每个Store又由一个memStore和0至多个StoreFile组成;
   memStore存储在内存中, StoreFile存储在HDFS上。

 

HBase架构

 

Hbase基本组件

Client
   包含访问Hbase的接口,并维护cache来加快对Hbase的访问
ZooKeeper
   保证任何时候,集群中只有一个master
   存贮所有Region的寻址入口
   实时监控Region server的上线和下线信息。并实时通知给Master
   存储HBase的schema和table元数据
Master
   为Region server分配region
   负责Region server的负载均衡
   发现失效的Region server并重新分配其上的region
   管理用户对table的增删改查操作
Region Server
   Region server维护region,处理对这些region的IO请求
   Region server负责切分在运行过程中变得过大的region
 

Zookeeper作用

HBase 依赖ZooKeeper
默认情况下, HBase 管理ZooKeeper 实例
   比如, 启动或者停止ZooKeeper
Master与RegionServers启动时会向ZooKeeper注册
Zookeeper的引入使得Master不再是单点故障

Write-Ahead-Log( WAL)

Hbase容错性

Master容错: Zookeeper重新选择一个新的Master
   无Master过程中,数据读取仍照常进行;
   无master过程中, region切分、负载均衡等无法进行;
RegionServer容错:定时向Zookeeper汇报心跳,如果一旦时间内未出现心跳
   Master将该RegionServer上的Region重新分配到其他RegionServer上;
   失效服务器上“预写”日志由主服务器进行分割并派送给新的RegionServer
Zookeeper容错: Zookeeper是一个可靠地服务
   一般配置3或5个Zookeeper实例。

Region定位

寻找RegionServer
   ZooKeeper
   -ROOT-(单Region)
   .META.
   用户表

-ROOT-表与.META.表

-ROOT-
   表包含.META.表所在的region列表,该表只会有一个Region;
   Zookeeper中记录了-ROOT-表的location。
 .META.
   表包含所有的用户空间region列表,以及 RegionServer的服务器地址。

 

HDFS与Hbase比较

 

关系数据库与Hbase比较

 

何时使用Hbase

     需对数据进行随机读操作或者随机写操作;
     大数据上高并发操作,比如每秒对PB级数据进行上千次操作;
     读写访问均是非常简单的操作。

什么公司在使用Hbase

    国外有facebook,twitter,yahoo等 国内有阿里巴巴,百度,360等一些公司

Hbase在淘宝的应用

交易历史记录查询系统
   百亿行数据表,千亿级二级索引表
   每天千万行更新
   查询场景简单,检索条件较少
   关系型数据库所带来的问题
   基于userId+time+id rowkey设计
   成本考虑

 

© 著作权归作者所有

这很耳东先生
粉丝 10
博文 110
码字总数 288043
作品 0
广州
私信 提问
HBase+Spark技术双周刊 第三期

最全资料下载 2018年 | HBase生态社群画像 +最全资料汇总下载 在本文中,云栖社区与阿里云多模型数据库组联合出品了《HBase生态社群画像》,并且附上了最全汇总资料,如HBase开发者画像、HBa...

hbase小能手
01/05
0
0
中国HBase技术社区第九届meetup(北京站)最全资料下载

2018年12月23日14点,我们在北京朝阳360公司A座一层发布厅举办了中国HBase技术社区第九届meetup-HBase典型应用场景与实践。 沙龙全程视频在线观看:https://yq.aliyun.com/live/715 本期活动...

hbase小能手
2018/12/23
0
0
中国HBase技术社区第八届MeetUp ——HBase应用实践专场

中国HBase技术社区第八届MeetUp ——HBase应用实践专场 HBase—Hadoop Database是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据...

阿里云栖开发者沙龙
2018/11/13
32
0
中国HBase技术社区第八届MeetUp ——HBase应用实践专场

中国HBase技术社区第八届MeetUp ——HBase应用实践专场 HBase—Hadoop Database是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据...

阿里云栖技术沙龙
2018/11/13
38
0
基于阿里云HBase产品的游戏大数据实践

大数据架构 我们团队大数据方案主要参考阿里巴巴大数据方案并结合自身特点量身定做,像阿里巴巴大数据体系架构一样也分四层,只是内容有所简化和差异。其实多数大数据架构方案都略同,只是在...

黑云长剑
05/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

关于java中变量的重名问题

在java语言中,变量的命名有很多规则和规范,但是有的地方可以使用相同的变量名,有的地方却不能使用,这是为什么呢? 下面是个人的一点见解,是从作用域和内存来分析的,目的是为了方便理解...

INEVITABLE
11分钟前
3
0
MySQL的COUNT语句,竟然都能被面试官虐的这么惨?

数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查。 在数据库的增删改查操作中,使用最频繁的就是查询操作。而在所有查询操作中,...

程序员修BUG
13分钟前
1
0
PHP+Mysql统计文件下载次数实例

PHP+Mysql统计文件下载次数实例,实现的原理也很简单,是通过前台点击链接download.php传参id,来更新点击次数。 获取文件列表: <?php require 'conn.php'; $query = mysql_query("S...

ymkjs1990
14分钟前
2
0
一、环境变量及Jshell

一、环境变量: 作用: 可执行文件所在位置的链接。CLI输入命令时,通过环境变量指引找到命令所在位置 windows的环境变量名不区分大小写,Linux区分 Windows下的用户变量即只有当前用户生效 ...

清自以敬
15分钟前
2
0
微软改名部又出手:Office 365正在悄悄更名为Microsoft 365

然而让人疑惑的是Microsoft 365 是微软面向企业提供的服务,这项服务附带操作系统以及办公软件的订阅授权。 现在把面向家庭消费者的办公软件也换成Microsoft 365 是什么操作?没人知道因为微...

linuxCool
15分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部