SlideShare a Scribd company logo
1 of 37
HBASE 云存储
计算机科学学院 刘莎
Content
 什么是云存储?
 Hadoop 分布式系统架
构
 HBase 分布式存储系统
 Hive 项目
云存储是在云计算 (cloud computing) 概念上延伸和发展出来的一个新的概
念,是指通过集群应用、网格技术或分布式文件系统等技术,通过应用软件
将网络中大量各种不同类型的存储设备集合起来协同工作,共同对外提供数
据存储和业务访问功能的一个系统。
当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中
就需要配置大量的存储设备,因此,云计算系统也成为了一个巨大的存储
系统,所以,云存储系统的定义可以简化为:一个以数据存储和管理为核
心的云计算系统。
什么是云存储?
 由 Apache 基金会开发的一个开源项目;
 一个能够对大量数据进行分布式处理的软件架构;
 由 HDFS 、 MapReduce 、 HBase 、 ZooKeeper 和 Hive 等
成员组成;
 在 众 多 企 业 都 得 到 应 用 :
Yahoo 、 Facebook 、 Tiwtter 、 Amazon 、淘宝、网易、百度、中国移
动、中科院计算所等。
……
Hadoop 集群架构
-1
Slave Node
Slave Node
Slave Node
Hadoop Ecosystem
HDFS 是 Google GFS 的开源版本,它是一个高度容错的分布式文件
系统,它能够提供高吞吐量的数据访问,适合存储海量( PB 级)的
大文件(通常超过 64M ,因为 HDFS 中最小存储粒度为 64M )。
HDFS
HDFS Architecture
 NameNode 节点作为主控节点,维护集群内的元数据,对外提供
创建、打开、删除以及重命名文件或目录的功能。
 DataNode 节点存储数据,并负责提出处理数据的读写请求。
 NameNode 是唯一的,应用程序与之通信,然后往 DataNode 上
存储文件或者从 DataNode 上读取文件。这些操作是透明的,与常规
的普通文件系统 API 没有区别。
 整个集群具有单一的命名空间。集群中存储的文件被分割成多个
文件块,每个文件块被分配到一个或多个数据节点上(通常是多个,
存储冗余度可以根据需求设置,但不能超过 DataNode 的个数)。
HDFS 内部 行机制运
MapReduce
MapReudce 是 Hadoop 中重要的分布式计算模型,用以进行大规模
的 数据计算 。用 户指定 一个 map 函数,通过这个 map 函数处理
key/value 键值对,并产生一系列的中间 key/value 对 ,再使用 reduce 函
数合并所有的相同 Key 值对应的 value 集合。
Map-Reduce 应用程序执行模
型
MapReduce 的本质是:在 map
阶段分发数据,在 Reduce 阶段收
集相同 key 对应的 value ,因此
在这个问题上,可以在 map 阶段
,将两个表格数据根据 “ 产品 ID ”
这个 key 分发出去 ,将 “ 商品 ID
” 及 “ 支付 ID ” 封装一下,作为
map 阶 段 的 value , 这 样 在
reduce 阶段就可 以根据 “ 产品 ID
” 得到对应的 “ 商品 ID ” 及 “ 支付
ID ” 了。
(1) 商品表 (trade table) ,“产品 ID” 字段作为主键
,每行为一条数据;
(2) 支付表 (pay table) ,“产品 ID” 字段作为主键,
每行为一条数据;
示例, MapReduce 实现表关联:假设有两个
表格,均以 .txt 文件存储:将这两个表格根据相
同的产品 ID 链接起来,生成新的 key/value pair
:
HBASE 展 史发 历
 2006 年底由 PowerSet 的 Chad Walters 和 Jim Kellerman
发起
 2008 年成为 Apache Hadoop 的一个子项目
 现已作为产品在多家企业被使用
 WorldLingo
 Streamy.com
 OpenPlaces
 Yahoo!
 Adobe
 淘宝
 Facebook
 Twitter
 Trend Micro
引入 HBASE 的原因
 普通的数据库系统已无法适应大型分布式数据存储的需
要
 改良的关系数据库(副本、分区等)难于安装与维护
 关系模型对数据的操作使数据的存贮变得复杂
 HBase 从设计理念上就为可扩展做好了充分准备
 存储空间的扩展只需要简单地加入存储结点
 HBase 同样使用‘表’的概念,它实质上是将一张极大的
、非常稀疏的表,存储到分布式文件系统上
—— 《 Hadoop 权威指南》, Tom White
(美)
HBase
HBase 是 Apache 的 Hadoop 项目的子项目。
利用 Apache 开源项目 Hadoop HDFS 作为其内部文件存储系统;
利用 Hadoop MapReduce 来处理 HBase 中的海量数据,为 HBase 提
供了高性能的计算能力;
利用 Zookeeper 作为协同服务,为 HBase 提供了稳定服务和 failover 机
制。
HBase 即 Hadoop Database ,是 Google BigTable 的开源实现,构造
在 HDFS 之上,提供一个高可靠性、高性能、面向列、可伸缩、可扩
展、分布式的数据库系统。利用 HBase 技术可在廉价 PC Server 上搭
建起大规模存储集群。
HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储
的数据库,另一个不同就是 Hbase 具有基于列的而不是基于行的模式
。
HBase 系统架构
 连接到 ZooKeeper 集群获取根区域数据和元数据的位置
 在元数据中查找需要访问行所在的区域并定位提供该区域服务的
区域服务器
 直接与区域服务器交互以获取数据
 根区域数据、元数据以及用户区域信息都被客户端缓存以备下次
访问使用
Client 使用 HBase 的 RPC 机制与 Master 和 RegionServer 进行通
信,对于管理类操作, Client 与 Master 进行 RPC ;对于数据读写
类操作, Client 与 RegionServer 进行 RPC 。
Client
Client 工 作 过
程
Master 没有单点问题, HBase 中可以启动多个 Master ,通过 Zookeeper 的
Master Election 机制保证总有一个 Master 作为主 master 运行。
Master
Master 在功能上主要负责 Table 和 Region 的管理工作:
1. 管理用户对 Table 的增、删、改、查操作;
2. 管理 RegionServer 的负载均衡,调整 Region 分布;
3. 在 Region Split 后,负责新 Region 的分配;
4. 在 RegionServer 因故障宕机后,负责对失效的 RegionServer 上所有相关
Regions 进行迁移。
Zookeeper Quorum 中 除 了 存 储 了 -ROOT- 表 的 地 址 和 Master 的 地
址, RegionServer 也会把自己以 Ephemeral 方式注册到 Zookeeper 中,使
得 Master 可以随时感知到各个 RegionServer 的健康状态。
Zookeeper
RegionServer 主要负责响应用户 I/O 请求,向 HDFS 文件系统中读写数
据,是 HBase 中最核心的模块。
RegionServer 内部管理了一系列 HRegion 对象,每个 HRegion 对应了
Table 中的一个 Region , HRegion 中由多个 HStore 组成。每个 HStore
对应了 Table 中的一个 Column Family 的存储,可以看出每个 Column
Family 其实就是一个集中的存储单元,因此最好将具备共同 IO 特性的
column 放在一个 Column Family 中,这样最高效。
RegionServer
 负责处理用户的读写请求
 向主服务器 (Master Server) 上报自己的状态,并获取自己需要服务的区
域
 为提高效率,消息通过捎带 (pigback) 方式通过“心跳”分组进行传递
RegionServer 主 要 职
能
RegionServer
内部表存储结构
数据存 体-区域储实
 表按照“水平”的方式划分成一个或多个“区域” (region)
 每个区域都包含一个随机 id ,区域内的行也是按行键有序的
 最初每张表包含一个区域,当表增大超过阈值后,这个区域被自动分割成两个
相同大小的区域
 区域是 Hbase 中分布式存储和负责均衡的最小单元,以该最小单元的形式分布
在集群内
区域的管理
 区域服务器 (Region Server)
 为区域的访问提供服务,直接为用户提供服务
 负责维护区域的合并与分割
 负责数据存持久化
 主服务器 (Master Server)
 管理区域服务器
 指派区域服务器对特定区域服务
 恢复失效的区域服务器
Store 是 HBase 存储的核心,由两部分组成:一部分是 MemStore ,另一部
分是 StoreFiles 。 MemStore 是 Sorted Memory Buffer ,用户写入的数据首
先会放入 MemStore ,当 MemStore 满了以后会 Flush 成一个 StoreFile 。
当 StoreFile 文件数量增长到一定阈值,会触发 Compact 合并操作,将多个
StoreFiles 合并成一个 StoreFile ,合并过程中进行版本合并和数据删除,因
此, HBase 其实只有增加数据,所有的更新和删除操作都是在后续的
compact 过程中进行,这使得用户的写操作只要进入内存中就可以立即返回
,保证了 HBase I/O 的高性能。
当 StoreFiles Compact 后 , 会 逐 步 形 成越 来 越 大的 StoreFile , 当 单个
StoreFile 大小超过一定阈值后,会触发 Split 操作,同时把当前 Region Split
成两个 Region ,父 Region 下线,新 Split 出的两个孩子 Region 被主 Master
分配到相应的 RegionServer 上,使得原先一个 Region 的压力分配到两个
Region 上。
Store
每个 RegionServer 中都有一个 HLog 对象, HLog 是一个实现 Write Ahead
Log 的类,在每次用户操作写入 MemStore 的同时,也会写一份数据到 HLog
文件中, HLog 文件定期会滚动出新的,并删除旧的文件(已持久化到
StoreFile 中的数据)。
Store 在系统正常工作的前提下是没有问题的,但是在分布式系统环境中,无
法避免系统出错或者宕机,因此一旦 RegionServer 意外退出, MemStore 中
的内存数据将会丢失,于是引入了 HLog 。
当 RegionServer 意外终止后, Master 会通过 Zookeeper 感知到, Master
首先会处理遗留的 HLog 文件,将其中不同 Region 的 Log 数据进行拆分,
分别放到相应 region 的目录下,然后再将失效的 region 重新分配,领取到这
些 region 的 RegionServer 在 Load Region 的过程中,会发现有历史 HLog
需要处理,因此会 Replay HLog 中的数据到 MemStore 中,然后 flush 到
StoreFiles ,完成数据恢复。
HLog
RegionServer 内 部 结 构 示 意
图
区域服 器-“写”务
 写数据首先写入“预写”日志
 对于一个区域服务器而言,对其提供服务的所有区域的“写”操作日志
都存储在同一个日志中
 数据并非直接写文件系统,而是先缓存,缓存到一定数量再批量写入
 写入完成后在日志中做标记
区域服 器-“ ”务 读
 区域服务器在内存的缓存中查找,如果命中请求,则直接服务
 如果存在多个版本,则返回顺序按照从最新到最老
区域服 器-合并务
 如果映射文件 (Map File) 数量超过阈值,区域服务器会进行一次合并
(Compaction)
 合并操作也周期性进行
 合并可与区域服务器响应用户的读写请求并发进行
 如果读写请求与合并区域相关,读写操作先挂起,直到合并操作完成
区域服 器-分割务
 当区域文件大过阈值后,区域文件会按照行的方式对半进行分割
(Split) 操作
 分割也作为一种请求被区域服务器处理
 被分割区域先离线
 区域服务器在元信息表中生成子表元信息
 主服务器在得知分割操作进行后,将子表分配给新的区域服务器进行
服务
 被分割区域通过垃圾回收机制回收
 如果主服务器没能正确收到分割消息,主服务器可通过定期检查
MATA 数据发现分割操作
 开始分割操作后,被分割区域离线,此时客户端能检测到并在分割后
的区域上线后重发访问请求
特殊目 数据录
 元数据 (META)
 全部用户区域的属性数据都存在元数据表中
 包括区域中数据起止行信息、区域“在线”状态等
 保存区域服务器地址
 元数据表也可包含多个区域,区域属性数据存储在“根”结点上
 “ 根”表 (ROOT)
 只包含一个区域
 将元数据中的区域映射到区域服务器
 存储元数据服务器位置以及映射了哪些元数据区域
HBase Table 和 Region 的关系,比较类似 HDFS File 和 Block 的关系, HBase 提
供了配套的 TableInputFormat 和 TableOutputFormat API ,可以方便的将 HBase
Table 作为 Hadoop MapReduce 的 Source 和 Sink ,对于 MapReduce Job 应用开
发人员来说,基本不需要关注 HBase 系统自身的细节。
MapReduce on HBase
HBase 用例- WebTable

WebTable 用于存储抓取网页和相关信息

每个页面对应一行,是个有百万行的大表

要基于此表进行分析与解析并由搜索引擎对关键
字进行索引

表需要并发地被众多网页抓取程序随机地访问以
及更新数据

表内容也要作为网页实时缓存被大量用户随机访
问
逻辑视图
Row Key Time
Stamp
Column
Contents
Column Anchor Column
“mime”cnnsi.com my.look.ca
“com.cnn.www
”
T9 CNN
T8 CNN.COM
T6 “<html>.. “ Text/html
T5 “<html>.. “
t3 “<html>.. “
HBase 以表的形式存储数据。表由行和列组成,列划分为若干个列族
(row family)
Row key 是用来检索记录的主键。存储时,数据按照 Row key 的字典
序 (byte order) 排序存储 。设计 key 时,要充分排序存储这个特性,
将经常一起读取的行存储放到一起。 ( 位置相关性 )
数据模型-行
Row Key Time
Stamp
Column
Contents
Column Anchor Column
“mime”
cnnsi.com my.look.ca
“com.cnn.www
”
T9 CNN
T8 CNN.COM
T6 “<html>.. “ Text/html
T5 “<html>.. “
t3 “<html>.. “
行键 列 列
数据模型-行
 每行数据有一可排序的关键字和任意列项
 字符串、整数、二进制串甚至与串行化的结构都可以
作为行键
 表按照行键的“逐字节排序”顺序对行进行有序化处理
 表内数据非常‘稀疏’,不同的行的列的数完全目可以
大不相同
 对数据进行操作时,可以只对一行上“锁”
 对行的写操作是始终是“原子”的
数据模型-列
Row Key Time
Stamp
Column
Contents
Column Anchor Column
“mime”cnnsi.com my.look.c
a
“com.cnn.ww
w”
T9 CNN
T8 CNN.COM
T6 “<html>.. “ Text/html
T5 “<html>.. “
t3 “<html>.. “
族 标签
 列必须用‘族’ (family) 来定义
 任意一列有如下形式
“ 族:标签”
其中,族和标签都可为任意形式的串
 物理上将同“族”数据存储在一起
 数据通过时间戳区分版本
物理视图
Row Key Time Stamp Column: Contents
Com.cnn.www T6 “<html>..”
T5 “<html>..”
T3 “<html>..”
Row Key Time Stamp Column: Anchor
Com.cnn.www T9 Anchor:cnnsi.com CNN
T5 Anchor:my.look.ca CNN.COM
Row Key Time Stamp Column: mime
Com.cnn.www T6 text/html
HBASE 接口访问
 启动
 bin/hbase shell
 主要命令
 create 创建表
 describe 描述表
 enable/disable 表激活 / 取消
 drop 删除表
 get/put 表读写
HBase Shell
Java Client API
HBaseConfiguration
addResource(…)
HTable
put(…)
get(…)
ResultScanner
next(…)
HBASE 比对 传统 RDBMS 缺
点
 不支持二级索引;
 不具有 sql/join/ 跨行跨表等 RDBMS 特性;
HBASE 适用 景场
 需要存储海量数据( TB 级以上);
 需要具有较高的吞吐量;
 需要对大数据集合进行高效的随机访问(主键查询);
 针对于结构化和非结构化的数据存储;
 不要求满足全部的 RDBMS 特性的应用需求(跨行 / 跨
表交互,连接查询等)。
Hive 是 Facebook 公司的开源项目,它实现在 Hadoop 之上提供一种类
似于 SQL 的查询语言 (HQL) ,使不熟悉 MapReduce 的用户很方便的利
用 SQL 语言查询、汇总和分析数据。并且, MapReduce 开发人员可以
把自己写的 mapper 和 reducer 作为插件来支持 Hive 做更复杂的数据分
析。
Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映
射为一张数据库表,并提供完整的 sql 查询功能,可以将 sql 语句转换为
MapReduce 任务进行运行。其学习成本低,可以通过类 SQL 语句快速实
现简单的 MapReduce 统计,不必开发专门的 MapReduce 应用,十分适
合数据仓库的统计分析。
谢 谢
!

More Related Content

What's hot

Zh Tw Introduction To Map Reduce
Zh Tw Introduction To Map ReduceZh Tw Introduction To Map Reduce
Zh Tw Introduction To Map Reducekevin liao
 
Zh Tw Introduction To Hadoop And Hdfs
Zh Tw Introduction To Hadoop And HdfsZh Tw Introduction To Hadoop And Hdfs
Zh Tw Introduction To Hadoop And Hdfskevin liao
 
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹Apache hadoop and cdh(cloudera distribution) introduction 基本介紹
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹Anna Yen
 
Zh Tw Introduction To Cloud Computing
Zh Tw Introduction To Cloud ComputingZh Tw Introduction To Cloud Computing
Zh Tw Introduction To Cloud Computingkevin liao
 
Introduction to Hbase
Introduction to HbaseIntroduction to Hbase
Introduction to Hbaseliamzheng
 
Hadoop大数据实践经验
Hadoop大数据实践经验Hadoop大数据实践经验
Hadoop大数据实践经验Hanborq Inc.
 
Hbase简介与实践分享
Hbase简介与实践分享Hbase简介与实践分享
Hbase简介与实践分享bluedavy lin
 
高可用可扩展数据层 - MySQL架构实践
高可用可扩展数据层 - MySQL架构实践高可用可扩展数据层 - MySQL架构实践
高可用可扩展数据层 - MySQL架构实践Sky Jian
 
浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华zhuozhe
 
大型互联网广告应用系统架构
大型互联网广告应用系统架构大型互联网广告应用系统架构
大型互联网广告应用系统架构Shaoning Pan
 
Hbase拾荒者
Hbase拾荒者Hbase拾荒者
Hbase拾荒者chernbb
 
What could hadoop do for us
What could hadoop do for us What could hadoop do for us
What could hadoop do for us Simon Hsu
 
Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Shaoning Pan
 
百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010Chuanying Du
 
大规模数据处理
大规模数据处理大规模数据处理
大规模数据处理Kay Yan
 

What's hot (20)

Zh Tw Introduction To Map Reduce
Zh Tw Introduction To Map ReduceZh Tw Introduction To Map Reduce
Zh Tw Introduction To Map Reduce
 
Zh Tw Introduction To Hadoop And Hdfs
Zh Tw Introduction To Hadoop And HdfsZh Tw Introduction To Hadoop And Hdfs
Zh Tw Introduction To Hadoop And Hdfs
 
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹Apache hadoop and cdh(cloudera distribution) introduction 基本介紹
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹
 
Zh Tw Introduction To Cloud Computing
Zh Tw Introduction To Cloud ComputingZh Tw Introduction To Cloud Computing
Zh Tw Introduction To Cloud Computing
 
Introduction to Hbase
Introduction to HbaseIntroduction to Hbase
Introduction to Hbase
 
Hadoop大数据实践经验
Hadoop大数据实践经验Hadoop大数据实践经验
Hadoop大数据实践经验
 
Hbase简介与实践分享
Hbase简介与实践分享Hbase简介与实践分享
Hbase简介与实践分享
 
Hadoop 介紹 20141024
Hadoop 介紹 20141024Hadoop 介紹 20141024
Hadoop 介紹 20141024
 
高可用可扩展数据层 - MySQL架构实践
高可用可扩展数据层 - MySQL架构实践高可用可扩展数据层 - MySQL架构实践
高可用可扩展数据层 - MySQL架构实践
 
浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华浅析分布式存储架构—设计自己的存储- 58同城徐振华
浅析分布式存储架构—设计自己的存储- 58同城徐振华
 
大型互联网广告应用系统架构
大型互联网广告应用系统架构大型互联网广告应用系统架构
大型互联网广告应用系统架构
 
Hbase拾荒者
Hbase拾荒者Hbase拾荒者
Hbase拾荒者
 
What could hadoop do for us
What could hadoop do for us What could hadoop do for us
What could hadoop do for us
 
Hadoop hive
Hadoop hiveHadoop hive
Hadoop hive
 
IT03
IT03IT03
IT03
 
大數據
大數據大數據
大數據
 
内存数据库[1]
内存数据库[1]内存数据库[1]
内存数据库[1]
 
Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照
 
百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010百度系统部分布式系统介绍 马如悦 Sacc2010
百度系统部分布式系统介绍 马如悦 Sacc2010
 
大规模数据处理
大规模数据处理大规模数据处理
大规模数据处理
 

Similar to H base云存储

Hadoop 簡介 教師 許智威
Hadoop 簡介 教師 許智威Hadoop 簡介 教師 許智威
Hadoop 簡介 教師 許智威Awei Hsu
 
华为软件定义存储架构分析
华为软件定义存储架构分析华为软件定义存储架构分析
华为软件定义存储架构分析Liang Ming
 
Hadoop-分布式数据平台
Hadoop-分布式数据平台Hadoop-分布式数据平台
Hadoop-分布式数据平台Jacky Chi
 
大型网站架构设计
大型网站架构设计大型网站架构设计
大型网站架构设计notes4mark
 
Hdfs原理及实现
Hdfs原理及实现Hdfs原理及实现
Hdfs原理及实现baggioss
 
Paas研究介绍
Paas研究介绍Paas研究介绍
Paas研究介绍snakebbf
 
HDInsight for Hadoopers
HDInsight for HadoopersHDInsight for Hadoopers
HDInsight for HadoopersKuo-Chun Su
 
淘宝Hadoop数据分析实践
淘宝Hadoop数据分析实践淘宝Hadoop数据分析实践
淘宝Hadoop数据分析实践Min Zhou
 
Hdfs introduction
Hdfs introductionHdfs introduction
Hdfs introductionbaggioss
 
基于hbase的实时计算框架prom(20111114)
基于hbase的实时计算框架prom(20111114)基于hbase的实时计算框架prom(20111114)
基于hbase的实时计算框架prom(20111114)yiihsia
 
RockStor - A Cloud Object System based on Hadoop
RockStor -  A Cloud Object System based on HadoopRockStor -  A Cloud Object System based on Hadoop
RockStor - A Cloud Object System based on HadoopSchubert Zhang
 
Hadoop 與 SQL 的甜蜜連結
Hadoop 與 SQL 的甜蜜連結Hadoop 與 SQL 的甜蜜連結
Hadoop 與 SQL 的甜蜜連結James Chen
 
Hyperion基础架构
Hyperion基础架构Hyperion基础架构
Hyperion基础架构Jack Wong
 
Hbase使用hadoop分析
Hbase使用hadoop分析Hbase使用hadoop分析
Hbase使用hadoop分析baggioss
 
Hadoop development in China Mobile Research Institute
Hadoop development in China Mobile Research InstituteHadoop development in China Mobile Research Institute
Hadoop development in China Mobile Research InstituteXu Wang
 
Couchbase introduction - Chinese
Couchbase introduction - Chinese Couchbase introduction - Chinese
Couchbase introduction - Chinese Vickie Zeng
 
Ceph中国社区9.19 Ceph FS-基于RADOS的高性能分布式文件系统02-袁冬
Ceph中国社区9.19 Ceph FS-基于RADOS的高性能分布式文件系统02-袁冬Ceph中国社区9.19 Ceph FS-基于RADOS的高性能分布式文件系统02-袁冬
Ceph中国社区9.19 Ceph FS-基于RADOS的高性能分布式文件系统02-袁冬Hang Geng
 

Similar to H base云存储 (20)

Hadoop 簡介 教師 許智威
Hadoop 簡介 教師 許智威Hadoop 簡介 教師 許智威
Hadoop 簡介 教師 許智威
 
华为软件定义存储架构分析
华为软件定义存储架构分析华为软件定义存储架构分析
华为软件定义存储架构分析
 
Hadoop-分布式数据平台
Hadoop-分布式数据平台Hadoop-分布式数据平台
Hadoop-分布式数据平台
 
大型网站架构设计
大型网站架构设计大型网站架构设计
大型网站架构设计
 
Hdfs原理及实现
Hdfs原理及实现Hdfs原理及实现
Hdfs原理及实现
 
Hadoop
HadoopHadoop
Hadoop
 
Paas研究介绍
Paas研究介绍Paas研究介绍
Paas研究介绍
 
HDInsight for Hadoopers
HDInsight for HadoopersHDInsight for Hadoopers
HDInsight for Hadoopers
 
淘宝Hadoop数据分析实践
淘宝Hadoop数据分析实践淘宝Hadoop数据分析实践
淘宝Hadoop数据分析实践
 
Hbase
HbaseHbase
Hbase
 
Hdfs introduction
Hdfs introductionHdfs introduction
Hdfs introduction
 
基于hbase的实时计算框架prom(20111114)
基于hbase的实时计算框架prom(20111114)基于hbase的实时计算框架prom(20111114)
基于hbase的实时计算框架prom(20111114)
 
RockStor - A Cloud Object System based on Hadoop
RockStor -  A Cloud Object System based on HadoopRockStor -  A Cloud Object System based on Hadoop
RockStor - A Cloud Object System based on Hadoop
 
Zh tw introduction_to_h_base
Zh tw introduction_to_h_baseZh tw introduction_to_h_base
Zh tw introduction_to_h_base
 
Hadoop 與 SQL 的甜蜜連結
Hadoop 與 SQL 的甜蜜連結Hadoop 與 SQL 的甜蜜連結
Hadoop 與 SQL 的甜蜜連結
 
Hyperion基础架构
Hyperion基础架构Hyperion基础架构
Hyperion基础架构
 
Hbase使用hadoop分析
Hbase使用hadoop分析Hbase使用hadoop分析
Hbase使用hadoop分析
 
Hadoop development in China Mobile Research Institute
Hadoop development in China Mobile Research InstituteHadoop development in China Mobile Research Institute
Hadoop development in China Mobile Research Institute
 
Couchbase introduction - Chinese
Couchbase introduction - Chinese Couchbase introduction - Chinese
Couchbase introduction - Chinese
 
Ceph中国社区9.19 Ceph FS-基于RADOS的高性能分布式文件系统02-袁冬
Ceph中国社区9.19 Ceph FS-基于RADOS的高性能分布式文件系统02-袁冬Ceph中国社区9.19 Ceph FS-基于RADOS的高性能分布式文件系统02-袁冬
Ceph中国社区9.19 Ceph FS-基于RADOS的高性能分布式文件系统02-袁冬
 

H base云存储

  • 2. Content  什么是云存储?  Hadoop 分布式系统架 构  HBase 分布式存储系统  Hive 项目
  • 3. 云存储是在云计算 (cloud computing) 概念上延伸和发展出来的一个新的概 念,是指通过集群应用、网格技术或分布式文件系统等技术,通过应用软件 将网络中大量各种不同类型的存储设备集合起来协同工作,共同对外提供数 据存储和业务访问功能的一个系统。 当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中 就需要配置大量的存储设备,因此,云计算系统也成为了一个巨大的存储 系统,所以,云存储系统的定义可以简化为:一个以数据存储和管理为核 心的云计算系统。 什么是云存储?
  • 4.  由 Apache 基金会开发的一个开源项目;  一个能够对大量数据进行分布式处理的软件架构;  由 HDFS 、 MapReduce 、 HBase 、 ZooKeeper 和 Hive 等 成员组成;  在 众 多 企 业 都 得 到 应 用 : Yahoo 、 Facebook 、 Tiwtter 、 Amazon 、淘宝、网易、百度、中国移 动、中科院计算所等。
  • 7. HDFS 是 Google GFS 的开源版本,它是一个高度容错的分布式文件 系统,它能够提供高吞吐量的数据访问,适合存储海量( PB 级)的 大文件(通常超过 64M ,因为 HDFS 中最小存储粒度为 64M )。 HDFS HDFS Architecture
  • 8.  NameNode 节点作为主控节点,维护集群内的元数据,对外提供 创建、打开、删除以及重命名文件或目录的功能。  DataNode 节点存储数据,并负责提出处理数据的读写请求。  NameNode 是唯一的,应用程序与之通信,然后往 DataNode 上 存储文件或者从 DataNode 上读取文件。这些操作是透明的,与常规 的普通文件系统 API 没有区别。  整个集群具有单一的命名空间。集群中存储的文件被分割成多个 文件块,每个文件块被分配到一个或多个数据节点上(通常是多个, 存储冗余度可以根据需求设置,但不能超过 DataNode 的个数)。 HDFS 内部 行机制运
  • 9. MapReduce MapReudce 是 Hadoop 中重要的分布式计算模型,用以进行大规模 的 数据计算 。用 户指定 一个 map 函数,通过这个 map 函数处理 key/value 键值对,并产生一系列的中间 key/value 对 ,再使用 reduce 函 数合并所有的相同 Key 值对应的 value 集合。 Map-Reduce 应用程序执行模 型
  • 10. MapReduce 的本质是:在 map 阶段分发数据,在 Reduce 阶段收 集相同 key 对应的 value ,因此 在这个问题上,可以在 map 阶段 ,将两个表格数据根据 “ 产品 ID ” 这个 key 分发出去 ,将 “ 商品 ID ” 及 “ 支付 ID ” 封装一下,作为 map 阶 段 的 value , 这 样 在 reduce 阶段就可 以根据 “ 产品 ID ” 得到对应的 “ 商品 ID ” 及 “ 支付 ID ” 了。 (1) 商品表 (trade table) ,“产品 ID” 字段作为主键 ,每行为一条数据; (2) 支付表 (pay table) ,“产品 ID” 字段作为主键, 每行为一条数据; 示例, MapReduce 实现表关联:假设有两个 表格,均以 .txt 文件存储:将这两个表格根据相 同的产品 ID 链接起来,生成新的 key/value pair :
  • 11. HBASE 展 史发 历  2006 年底由 PowerSet 的 Chad Walters 和 Jim Kellerman 发起  2008 年成为 Apache Hadoop 的一个子项目  现已作为产品在多家企业被使用  WorldLingo  Streamy.com  OpenPlaces  Yahoo!  Adobe  淘宝  Facebook  Twitter  Trend Micro
  • 12. 引入 HBASE 的原因  普通的数据库系统已无法适应大型分布式数据存储的需 要  改良的关系数据库(副本、分区等)难于安装与维护  关系模型对数据的操作使数据的存贮变得复杂  HBase 从设计理念上就为可扩展做好了充分准备  存储空间的扩展只需要简单地加入存储结点  HBase 同样使用‘表’的概念,它实质上是将一张极大的 、非常稀疏的表,存储到分布式文件系统上
  • 13. —— 《 Hadoop 权威指南》, Tom White (美)
  • 14. HBase HBase 是 Apache 的 Hadoop 项目的子项目。 利用 Apache 开源项目 Hadoop HDFS 作为其内部文件存储系统; 利用 Hadoop MapReduce 来处理 HBase 中的海量数据,为 HBase 提 供了高性能的计算能力; 利用 Zookeeper 作为协同服务,为 HBase 提供了稳定服务和 failover 机 制。 HBase 即 Hadoop Database ,是 Google BigTable 的开源实现,构造 在 HDFS 之上,提供一个高可靠性、高性能、面向列、可伸缩、可扩 展、分布式的数据库系统。利用 HBase 技术可在廉价 PC Server 上搭 建起大规模存储集群。 HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储 的数据库,另一个不同就是 Hbase 具有基于列的而不是基于行的模式 。
  • 16.  连接到 ZooKeeper 集群获取根区域数据和元数据的位置  在元数据中查找需要访问行所在的区域并定位提供该区域服务的 区域服务器  直接与区域服务器交互以获取数据  根区域数据、元数据以及用户区域信息都被客户端缓存以备下次 访问使用 Client 使用 HBase 的 RPC 机制与 Master 和 RegionServer 进行通 信,对于管理类操作, Client 与 Master 进行 RPC ;对于数据读写 类操作, Client 与 RegionServer 进行 RPC 。 Client Client 工 作 过 程
  • 17. Master 没有单点问题, HBase 中可以启动多个 Master ,通过 Zookeeper 的 Master Election 机制保证总有一个 Master 作为主 master 运行。 Master Master 在功能上主要负责 Table 和 Region 的管理工作: 1. 管理用户对 Table 的增、删、改、查操作; 2. 管理 RegionServer 的负载均衡,调整 Region 分布; 3. 在 Region Split 后,负责新 Region 的分配; 4. 在 RegionServer 因故障宕机后,负责对失效的 RegionServer 上所有相关 Regions 进行迁移。 Zookeeper Quorum 中 除 了 存 储 了 -ROOT- 表 的 地 址 和 Master 的 地 址, RegionServer 也会把自己以 Ephemeral 方式注册到 Zookeeper 中,使 得 Master 可以随时感知到各个 RegionServer 的健康状态。 Zookeeper
  • 18. RegionServer 主要负责响应用户 I/O 请求,向 HDFS 文件系统中读写数 据,是 HBase 中最核心的模块。 RegionServer 内部管理了一系列 HRegion 对象,每个 HRegion 对应了 Table 中的一个 Region , HRegion 中由多个 HStore 组成。每个 HStore 对应了 Table 中的一个 Column Family 的存储,可以看出每个 Column Family 其实就是一个集中的存储单元,因此最好将具备共同 IO 特性的 column 放在一个 Column Family 中,这样最高效。 RegionServer  负责处理用户的读写请求  向主服务器 (Master Server) 上报自己的状态,并获取自己需要服务的区 域  为提高效率,消息通过捎带 (pigback) 方式通过“心跳”分组进行传递 RegionServer 主 要 职 能
  • 20. 数据存 体-区域储实  表按照“水平”的方式划分成一个或多个“区域” (region)  每个区域都包含一个随机 id ,区域内的行也是按行键有序的  最初每张表包含一个区域,当表增大超过阈值后,这个区域被自动分割成两个 相同大小的区域  区域是 Hbase 中分布式存储和负责均衡的最小单元,以该最小单元的形式分布 在集群内 区域的管理  区域服务器 (Region Server)  为区域的访问提供服务,直接为用户提供服务  负责维护区域的合并与分割  负责数据存持久化  主服务器 (Master Server)  管理区域服务器  指派区域服务器对特定区域服务  恢复失效的区域服务器
  • 21. Store 是 HBase 存储的核心,由两部分组成:一部分是 MemStore ,另一部 分是 StoreFiles 。 MemStore 是 Sorted Memory Buffer ,用户写入的数据首 先会放入 MemStore ,当 MemStore 满了以后会 Flush 成一个 StoreFile 。 当 StoreFile 文件数量增长到一定阈值,会触发 Compact 合并操作,将多个 StoreFiles 合并成一个 StoreFile ,合并过程中进行版本合并和数据删除,因 此, HBase 其实只有增加数据,所有的更新和删除操作都是在后续的 compact 过程中进行,这使得用户的写操作只要进入内存中就可以立即返回 ,保证了 HBase I/O 的高性能。 当 StoreFiles Compact 后 , 会 逐 步 形 成越 来 越 大的 StoreFile , 当 单个 StoreFile 大小超过一定阈值后,会触发 Split 操作,同时把当前 Region Split 成两个 Region ,父 Region 下线,新 Split 出的两个孩子 Region 被主 Master 分配到相应的 RegionServer 上,使得原先一个 Region 的压力分配到两个 Region 上。 Store
  • 22. 每个 RegionServer 中都有一个 HLog 对象, HLog 是一个实现 Write Ahead Log 的类,在每次用户操作写入 MemStore 的同时,也会写一份数据到 HLog 文件中, HLog 文件定期会滚动出新的,并删除旧的文件(已持久化到 StoreFile 中的数据)。 Store 在系统正常工作的前提下是没有问题的,但是在分布式系统环境中,无 法避免系统出错或者宕机,因此一旦 RegionServer 意外退出, MemStore 中 的内存数据将会丢失,于是引入了 HLog 。 当 RegionServer 意外终止后, Master 会通过 Zookeeper 感知到, Master 首先会处理遗留的 HLog 文件,将其中不同 Region 的 Log 数据进行拆分, 分别放到相应 region 的目录下,然后再将失效的 region 重新分配,领取到这 些 region 的 RegionServer 在 Load Region 的过程中,会发现有历史 HLog 需要处理,因此会 Replay HLog 中的数据到 MemStore 中,然后 flush 到 StoreFiles ,完成数据恢复。 HLog
  • 23. RegionServer 内 部 结 构 示 意 图
  • 24. 区域服 器-“写”务  写数据首先写入“预写”日志  对于一个区域服务器而言,对其提供服务的所有区域的“写”操作日志 都存储在同一个日志中  数据并非直接写文件系统,而是先缓存,缓存到一定数量再批量写入  写入完成后在日志中做标记 区域服 器-“ ”务 读  区域服务器在内存的缓存中查找,如果命中请求,则直接服务  如果存在多个版本,则返回顺序按照从最新到最老 区域服 器-合并务  如果映射文件 (Map File) 数量超过阈值,区域服务器会进行一次合并 (Compaction)  合并操作也周期性进行  合并可与区域服务器响应用户的读写请求并发进行  如果读写请求与合并区域相关,读写操作先挂起,直到合并操作完成
  • 25. 区域服 器-分割务  当区域文件大过阈值后,区域文件会按照行的方式对半进行分割 (Split) 操作  分割也作为一种请求被区域服务器处理  被分割区域先离线  区域服务器在元信息表中生成子表元信息  主服务器在得知分割操作进行后,将子表分配给新的区域服务器进行 服务  被分割区域通过垃圾回收机制回收  如果主服务器没能正确收到分割消息,主服务器可通过定期检查 MATA 数据发现分割操作  开始分割操作后,被分割区域离线,此时客户端能检测到并在分割后 的区域上线后重发访问请求
  • 26. 特殊目 数据录  元数据 (META)  全部用户区域的属性数据都存在元数据表中  包括区域中数据起止行信息、区域“在线”状态等  保存区域服务器地址  元数据表也可包含多个区域,区域属性数据存储在“根”结点上  “ 根”表 (ROOT)  只包含一个区域  将元数据中的区域映射到区域服务器  存储元数据服务器位置以及映射了哪些元数据区域
  • 27. HBase Table 和 Region 的关系,比较类似 HDFS File 和 Block 的关系, HBase 提 供了配套的 TableInputFormat 和 TableOutputFormat API ,可以方便的将 HBase Table 作为 Hadoop MapReduce 的 Source 和 Sink ,对于 MapReduce Job 应用开 发人员来说,基本不需要关注 HBase 系统自身的细节。 MapReduce on HBase
  • 28. HBase 用例- WebTable  WebTable 用于存储抓取网页和相关信息  每个页面对应一行,是个有百万行的大表  要基于此表进行分析与解析并由搜索引擎对关键 字进行索引  表需要并发地被众多网页抓取程序随机地访问以 及更新数据  表内容也要作为网页实时缓存被大量用户随机访 问
  • 29. 逻辑视图 Row Key Time Stamp Column Contents Column Anchor Column “mime”cnnsi.com my.look.ca “com.cnn.www ” T9 CNN T8 CNN.COM T6 “<html>.. “ Text/html T5 “<html>.. “ t3 “<html>.. “ HBase 以表的形式存储数据。表由行和列组成,列划分为若干个列族 (row family) Row key 是用来检索记录的主键。存储时,数据按照 Row key 的字典 序 (byte order) 排序存储 。设计 key 时,要充分排序存储这个特性, 将经常一起读取的行存储放到一起。 ( 位置相关性 )
  • 30. 数据模型-行 Row Key Time Stamp Column Contents Column Anchor Column “mime” cnnsi.com my.look.ca “com.cnn.www ” T9 CNN T8 CNN.COM T6 “<html>.. “ Text/html T5 “<html>.. “ t3 “<html>.. “ 行键 列 列
  • 31. 数据模型-行  每行数据有一可排序的关键字和任意列项  字符串、整数、二进制串甚至与串行化的结构都可以 作为行键  表按照行键的“逐字节排序”顺序对行进行有序化处理  表内数据非常‘稀疏’,不同的行的列的数完全目可以 大不相同  对数据进行操作时,可以只对一行上“锁”  对行的写操作是始终是“原子”的
  • 32. 数据模型-列 Row Key Time Stamp Column Contents Column Anchor Column “mime”cnnsi.com my.look.c a “com.cnn.ww w” T9 CNN T8 CNN.COM T6 “<html>.. “ Text/html T5 “<html>.. “ t3 “<html>.. “ 族 标签  列必须用‘族’ (family) 来定义  任意一列有如下形式 “ 族:标签” 其中,族和标签都可为任意形式的串  物理上将同“族”数据存储在一起  数据通过时间戳区分版本
  • 33. 物理视图 Row Key Time Stamp Column: Contents Com.cnn.www T6 “<html>..” T5 “<html>..” T3 “<html>..” Row Key Time Stamp Column: Anchor Com.cnn.www T9 Anchor:cnnsi.com CNN T5 Anchor:my.look.ca CNN.COM Row Key Time Stamp Column: mime Com.cnn.www T6 text/html
  • 34. HBASE 接口访问  启动  bin/hbase shell  主要命令  create 创建表  describe 描述表  enable/disable 表激活 / 取消  drop 删除表  get/put 表读写 HBase Shell Java Client API HBaseConfiguration addResource(…) HTable put(…) get(…) ResultScanner next(…)
  • 35. HBASE 比对 传统 RDBMS 缺 点  不支持二级索引;  不具有 sql/join/ 跨行跨表等 RDBMS 特性; HBASE 适用 景场  需要存储海量数据( TB 级以上);  需要具有较高的吞吐量;  需要对大数据集合进行高效的随机访问(主键查询);  针对于结构化和非结构化的数据存储;  不要求满足全部的 RDBMS 特性的应用需求(跨行 / 跨 表交互,连接查询等)。
  • 36. Hive 是 Facebook 公司的开源项目,它实现在 Hadoop 之上提供一种类 似于 SQL 的查询语言 (HQL) ,使不熟悉 MapReduce 的用户很方便的利 用 SQL 语言查询、汇总和分析数据。并且, MapReduce 开发人员可以 把自己写的 mapper 和 reducer 作为插件来支持 Hive 做更复杂的数据分 析。 Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映 射为一张数据库表,并提供完整的 sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进行运行。其学习成本低,可以通过类 SQL 语句快速实 现简单的 MapReduce 统计,不必开发专门的 MapReduce 应用,十分适 合数据仓库的统计分析。

Editor's Notes

  1. 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。
  2. MapReduce模型中,JobTracker节点作为主控节点,负责和用户程序通信获得应用程序,并且将其分割成许多很小的任务单元,分配工作给TaskTracker节点执行。
  3. Failover:通俗地说,即当A无法为客户服务时,系统能够自动地切换,使B能够及时地顶上继续为客户提供服务,且客户感觉不到这个为他提供服务的对象已经更换。 这里的A和B可以存在于各种领域,但一般fail-over特指计算机领域的数据库、应用服务、硬件设备等的失效转移。
  4. RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。 RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端, 进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。
  5. HRegion 是 Hbase 中分布式存储和负载均衡的最小单元。最小单元就表示不同的Hregion可以分布在不同的 HRegion server 上。但一个 Hregion 是不会拆分到多个server上的。
  6. 注意: 字 典 序 对 int 排 序 的 结 果 是 1,10,100,11,12,13,14,15,16,17,18,19,2,20,21, … ,9,91,92,93,94,95, 96,97,98,99 。要保持整形的自然序,行键必须用 0 作左填充。 逻辑模式(模式),是数据库系统模式结构的中间层,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
  7. 对应其他数据库的数据模型: 层次模型 网状模型 关系模型 面向对象模型 对象关系模型
  8. 内模式:存储模式,一个数据库只有一个内模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。
  9. 数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它并不是所谓的“大型数据库”。数据仓库的方案建设的目的,是为前端查询和分析作为基础,由于有较大的冗余,所以需要的存储也较大。