HBase与BigTable的比较
基于Hadoop数据分析系统设计(优秀毕业设计)

第一章 某某企业数据分析系统设计需求分析
某某企业成立于 1999 年,其运营的门户网站每年产生大概 2T 的日志信息, 为了分析网站的日志,部署了一套 Oracle 数据库系统,将所有的日志信息都导 入 Oracle 的表中。 随着时间的推移,存储在 Oracle 数据库中的日志系统越来越 大, 查询的速度变得越来越慢, 并经常因为查询的数据量非常大而导致系统死机。 日志信息的分析成为了 XX 企业急需解决的问题,考虑到单机分析的扩展性与成 本问题,且 XX 企业当前有一部分服务器处于闲置状态,最终决定在现有服务器 的基础上部署一套分布式的系统来对当前大量的数据进行分析。 结合淘宝目前已 经部署成功的数据雷达系统,同时由于 XX 企业预算有限,为了节约资金,决定 采用开源的 Hadoop 来部署公司的数据分析系统。 采用 Hadoop 集群优势:
1. 采用单 master 的设计,单 master 的设计极大地简化了系统的设计和实现, 由此带来了机器规模限制和单点失效问题。 2. 编程复杂,学习曲线过于陡峭,让许多人难以深入。 3. 开源性,在广大社区维护不断推进 Hadoop 的发展的同时,一旦代码出现漏 洞并未被发现, 而又被有心的人利用, 将会对数据的安全造成毁灭性的后果。 4. 缺乏认证,Hadoop 并没有对使用 Hadoop 的权限进行细致的划分。
3.8.1 Hive 安装...................................................................................................... 33 3.8.2 使用 MySQL 存储 Metastore..................................................................... 33 3.8.3 Hive 的使用.................................................................................................. 36 3.9 HBASE 安装与配置.......................................................................................... 37
云计算导论 第8章-云计算导论(第2版)-吕云翔-清华大学出版社

NoSQL数据库的四大分类
分类
键值 (keyvalue)
Examples举例
1、Hbase的访问接口和数据模型
Hbase的访问接口如下: ➢ Native Java API 最常规和高效的访问方式,适合Hadoop MapReduce Job并行批处理 HBase表数据 ➢ HBase Shell HBase的命令行工具,最简单的接口,适合HBase管理使用 ➢ Thrift Gateway 利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合 其他异构系统在线访问HBase表数据;
1、Hbase的访问接口和数据模型
➢ REST Gateway 支持REST 风格的Http API访问HBase, 解除了语言限制 ➢ Pig 可以使用Pig Latin流式编程语言来操作HBase中的数据,和Hive类似, 本质最终也是编译成MapReduce Job来处理HBase表数据,适合做数 据统计 ➢ Hive 当前Hive的Release版本尚没有加入对HBase的支持。
结构化数据
图结构
优点
缺点
查找速度快
数据无结构化,通常 只被当作字符串或者
二进制数据
查找速度快,可扩 展性强,更容易进
行分布式扩展
功能相对局限
数据结构要求不严
格,表结构可变, 不需要像关系型数 据库一样需要预先
查询性能不高,而且 缺乏统ቤተ መጻሕፍቲ ባይዱ的查询语法。
大数据技术原理与应用-林子雨版-课后习题答案

第一章1.试述信息技术发展史上的3次信息化浪潮及具体内容。
2.试述数据产生方式经历的几个阶段答:运营式系统阶段,用户原创内容阶段,感知式系统阶段。
3.试述大数据的4个基本特征答:数据量大、数据类型繁多、处理速度快和价值密度低。
4.试述大数据时代的“数据爆炸”的特性答:大数据时代的“数据爆炸”的特性是,人类社会产生的数据一致都以每年50%的速度增长,也就是说,每两年增加一倍。
5.数据研究经历了哪4个阶段?答:人类自古以来在科学研究上先后历经了实验、理论、计算、和数据四种范式。
6.试述大数据对思维方式的重要影响答:大数据时代对思维方式的重要影响是三种思维的转变:全样而非抽样,效率而非精确,相关而非因果。
7.大数据决策与传统的基于数据仓库的决策有什么区别答:数据仓库具备批量和周期性的数据加载以及数据变化的实时探测、传播和加载能力,能结合历史数据和实时数据实现查询分析和自动规则触发,从而提供对战略决策和战术决策。
大数据决策可以面向类型繁多的、非结构化的海量数据进行决策分析。
8.举例说明大数据的基本应用答:9.举例说明大数据的关键技术答:批处理计算,流计算,图计算,查询分析计算10.大数据产业包含哪些关键技术。
答:IT基础设施层、数据源层、数据管理层、数据分析层、数据平台层、数据应用层。
11.定义并解释以下术语:云计算、物联网答:云计算:云计算就是实现了通过网络提供可伸缩的、廉价的分布式计算机能力,用户只需要在具备网络接入条件的地方,就可以随时随地获得所需的各种IT资源。
物联网是物物相连的互联网,是互联网的延伸,它利用局部网络或互联网等通信技术把传感器、控制器、机器、人类和物等通过新的方式连在一起,形成人与物、物与物相连,实现信息化和远程管理控制。
12.详细阐述大数据、云计算和物联网三者之间的区别与联系。
第二章1.试述hadoop和谷歌的mapreduce、gfs等技术之间的关系答:Hadoop的核心是分布式文件系统HDFS和MapReduce,HDFS是谷歌文件系统GFS的开源实现,MapReduces是针对谷歌MapReduce的开源实现。
林子雨大数据技术原理及应用第四章课后作业答案

林⼦⾬⼤数据技术原理及应⽤第四章课后作业答案⼤数据技术原理与应⽤第四章课后作业黎狸1.试述在Hadoop体系架构中HBase与其他组成部分的相互关系。
HBase利⽤Hadoop MapReduce来处理HBase中的海量数据,实现⾼性能计算;利⽤Zookeeper作为协同服务,实现稳定服务和失败恢复;使⽤HDFS作为⾼可靠的底层存储,利⽤廉价集群提供海量数据存储能⼒; Sqoop为HBase的底层数据导⼊功能,Pig 和Hive为HBase提供了⾼层语⾔⽀持,HBase是BigTable的开源实现。
2.请阐述HBase和BigTable的底层技术的对应关系。
3.请阐述HBase和传统关系数据库的区别。
4.HBase有哪些类型的访问接⼝?HBase提供了Native Java API , HBase Shell , Thrift Gateway , REST GateWay , Pig , Hive 等访问接⼝。
5.请以实例说明HBase数据模型。
6.分别解释HBase中⾏键、列键和时间戳的概念。
①⾏键标识⾏。
⾏键可以是任意字符串,⾏键保存为字节数组。
②列族。
HBase的基本的访问控制单元,需在表创建时就定义好。
③时间戳。
每个单元格都保存着同⼀份数据的多个版本,这些版本采⽤时间戳进⾏索引。
7.请举个实例来阐述HBase的概念视图和物理视图的不同。
8.试述HBase各功能组件及其作⽤。
①库函数:链接到每个客户端;②⼀个Master主服务器:主服务器Master主要负责表和Region的管理⼯作;③③许多个Region服务器:Region服务器是HBase中最核⼼的模块,负责存储和维护分配给⾃⼰的Region,并响应⽤户的读写请求9.请阐述HBase的数据分区机制。
每个⾏区间构成⼀个分区,被称为“Region”,分发到不同的Region服务器上。
10.HBase中的分区是如何定位的?通过构建的映射表的每个条⽬包含两项内容,⼀个是Regionde 标识符,另⼀个是Region服务器标识,这个条⽬就标识Region和Region服务器之间的对应关系,从⽽就可以知道某个Region被保存在哪个Region服务器中。
四种重要的非关系型数据库

四种重要的⾮关系型数据库Hbase列式存储以流的⽅式在列中存储所有的数据。
对于任何记录,索引都可以快速地获取列上的数据;列式存储⽀持⾏检索,但这需要从每个列获取匹配的列值,并重新组成⾏。
HBase(Hadoop Database)是⼀个⾼可靠性、⾼性能、⾯向列、可伸缩的分布式存储系统,利⽤HBase技术可在廉价PC Server上搭建起⼤规模结构化存储集群。
HBase是Google BigTable的开源实现,模仿并提供了基于Google⽂件系统的BigTable数据库的所有功能。
HBase可以直接使⽤本地⽂件系统或者Hadoop作为数据存储⽅式,不过为了提⾼数据可靠性和系统的健壮性,发挥HBase处理⼤数据量等功能,需要使⽤Hadoop作为⽂件系统。
HBase仅能通过主键(row key)和主键的range来检索数据,仅⽀持单⾏事务,主要⽤来存储⾮结构化和半结构化的松散数据。
Hbase中表的特点:⼤,稀疏,⾯向列Hadoop⽣态系统中的各层系统HBase位于结构化存储层;HDFS为HBase提供了⾼可靠性的底层存储⽀持;MapReduce为HBase提供了⾼性能的计算能⼒;Zookeeper为HBase提供了稳定服务和失败恢复机制;Pig和Hive还为HBase提供了⾼层语⾔⽀持,使得在HBase上进⾏数据统计处理变的⾮常简单;Sqoop则为HBase提供了⽅便的RDBMS数据导⼊功能,⽅便数据迁移;Hbase在互联⽹存储的⼏个应⽤场景:1.抓取增量数据使⽤HBase 作为数据存储,抓取来⾃各种数据源的增量数据,如抓取⽤户交互数据,以备之后进⾏分析、处理2.内容服务传统数据库最主要的使⽤场合之⼀是为⽤户提供内容服务,如URL短链接服务,可以HBase为基础,存储⼤量的短链接以及和原始长链接的映射关系3.信息交换Facebook的短信平台每天交换数⼗亿条短信,HBase可以很好的满⾜该平台的需求:⾼的写吞吐量,极⼤的表,数据中⼼的强⼀致性Hbase与传统关系型数据库区别:数据类型HBase只有简单的字符串类型,所有类型都由⽤户⾃⼰处理,它只保存字符串;关系数据库有丰富的类型选择和存储⽅式。
Hbase学习总结

HBase学习报告0 引言随着互联网的发展,用户的使用量和使用范围变得越来越广,因此会产生大量的数据,对于这些数据的储存、处理,传统的数据库表现出越来越多的问题,从目前发展情况看,关系数据库已经不适应这种巨大的存储量和计算要求,查询效率随着数据量的增长变得越来越低。
面对这些问题,一些新型的数据库应运而生,对海量数据的存储和处理提出了解决方案,HBase就是其中之一。
1 HBase简介Hbase是Apache Hadoop的数据库,能够对大数据提供随机、实时的读写访问,具有开源、分布式、可扩展及面向列存储的特点。
HBase的目标是处理大型的数据,具体来说就是使用普通的硬件配置即可处理成千上万行的列和行组成的大数据。
HBase是一个分布式的,多版本的,面向列的存储模型。
它可以使用本地文件系统。
也可以使用HDFS文件存储系统,但是,为了提高系统的健壮性和可靠性,并充分发挥HBase的大数据处理能力,使用HDFS作为文件存储系统更合适,使用MapReduce来处理海量数据,利用Zookeeper作为协同服务。
另外,HBase的存储结构是松散性数据,它使用简单的key和value的映射关系,但又不是简单的映射关系,这种关系为超大规模的高并发的海量数据实时响应系统提供了一个很好的解决方案。
HBase的存储的数据从逻辑上来看就像是一张很大的表,并且,它的数据可以根据需求动态地增加。
HBase还具有这样的特点:它向下提供了存储,向上提供了运算。
这样的特点使它将数据存储和并行计算完美地结合在了一起。
2 HBase体系结构HBase的服务器体系结构遵从简单的主从服务器架构,它由HRegion服务器群和HBase Master服务器构成。
HBase Master服务器负责管理所有的HRegion服务器,而HBase中的所有服务器都是通过ZooKeeper来进行协调并处理HBase服务器运行期间可能遇到的错误。
HBase Master本身并不储存HBase中的任何数据。
Hbase教程

HBase原理与基本架构
原理 前面介绍了HBase的一般架构,我们知道了HBase有ZK、Master和RS 等组成,本节我们来介绍下HBase的基本原理,从数据访问、RS路 由到RS内部缓存、数据存储和刷写再到region的合并和拆分等等功 能。 RegionServer定位 访问HBase通过HBase客户端(或API)进行,整个HBase提供给外部的 地址,其实是ZK的入口,前面也介绍了,ZK中有保存-ROOT-所在的 RS地址,从-ROOT-表可以获取.META.表信息,根据.META.表可以获 取region在RS上的分布,整个region寻址过程大致如下:
Hbase原理与基本架构
RegionServer(简称RS)在非Replication模式下, 整个系统中都是唯一的,也就是说,在整 个非Replication的HBase集群中,每台RS上 保存的数据都不一样,所以相对于前面两 者,该模式下的RS并不是高可用的,至少 RS可能存在单点故障的问题,但是由于 HBase内部数据分region存储和region可以迁 移的机制,RS服务的单点故障可能会在极 小代价下很快恢复,但是一旦停掉的RS上 有-ROOT-或者.META.表的region,那后果还 是比较严重,因为数据节点的RS停机,只 会在短时间内影响该台RS上的region不可访 问,等到region迁移完成后即可恢复,如果 是-ROOT-、.META.所在的RS停机,整个 HBase的新的求情都将受到影响,因为需要 通过.META.表来路由,从而寻找到region所 在RS的地址。
Hbase简介
左图描述Hadoop EcoSystem中的 各层系统。其中,HBase位于结构 化存储层,Hadoop HDFS为HBase 提供了高可靠性的底层存储支持, Hadoop MapReduce为HBase提供 了高性能的计算能力, Zookeeper为HBase提供了稳定服 务和failover机制。
HBase与BigTable的比较

HBase与BigTable的比较众说周知,HBase是Google的BigTable架构的一个开源实现。
但是我个人觉得,要做到下面两点还是有点困难的:一HBase涵盖了BigTable规范的哪些部分二HBase与BigTable仍然有哪些区别下面我将对这两个系统做些比较。
在做比较之前,我要指出一个事实:HBase是非常接近BigTable论文描述的东西。
撇开一些细微的不同,比如HBase 0.20使用ZooKeeper做它的分布式协调服务,HBase已经基本实现了BigTable所有的功能,所以我下面的篇幅重点落在它们细微的区别上,当然也可以说是HBase小组正在努力改进的地方上。
比较范围本文比较的是基于七年前发表的论文(OSDI’06)所描叙的Google BigTable系统,该系统从2005年开始运作。
就在论文发表的2006年末到2007年初,作为Hadoop的子项目的HBase 也产生了。
在那时,HBase的版本是0.15.0. 如今大约2年过去了,Hadoop 0.20.1和HBase 0.20.2都已发布,你当然希望有一些真正的改进。
要知道我所比较的是一篇14页的技术论文和一个从头到脚都一览无余的开源项目。
所以下面的比较内容里关于HBase怎么做的讲得比较多点。
在文章的结尾,我也会讨论一些BigTable的如今的新功能,以及HBase跟它们比较如何。
好,我们就从术语开始。
术语有少数几个不同的术语被两个系统用来描述同样的事物。
最显著的莫过于HBase中的regions 和BigTable中的tablet。
自然地,它们各自把一连串的行(Rows)切分交给许多Region server 或者tablet server管理。
特性比较接下来的就是特性比较列表,列表中是BigTable跟HBase的特性比较。
有的是一些实现细节,有的是可配置的选项等。
让人感到有困惑的是,将这些特性分类很难。
BigTable 新特性OSDI’06 BigTable论文发表已有几年,BigTable当然也有改进。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HBase与BigTable的比较
HBase是Google的BigTable架构的一个开源实现。
但是我个人觉得,要做到充分了解下面两点还是有点困难的:一HBase涵盖了BigTable规范的哪些部分?二HBase与BigTable仍然有哪些区别?下面我将对这两个系统做些比较。
在做比较之前,我要指出一个事实:HBase是非常接近BigTable论文描述的东西。
撇开一些细微的不同,比如HBase 0.20使用ZooKeeper做它的分布式协调服务,HBase已经基本实现了BigTable所有的功能,所以我下面的篇幅重点落在它们细微的区别上,当然也可以说是HBase 小组正在努力改进的地方上。
比较范围本文比较的是基于七年前发表的论文(OSDI’06)所描叙的Google BigTable系统,该系统从2005年开始运作。
就在论文发表的2006年末到2007年初,作为Hadoop的子项目的HBase 也产生了。
在那时,HBase的版本是0.15.0. 如今大约2年过去了,Hadoop 0.20.1和HBase 0.20.2都已发布,你当然希望有一些真正的改进。
要知道我所比较的是一篇14页的技术论文和一个从头到脚都一览无余的开源项目。
所以下面的比较内容里关于HBase怎么做的讲得比较多点。
在文章的结尾,我也会讨论一些BigTable的如今的新功能,以及HBase跟它们比较如何。
好,我们就从术语开始。
术语有少
数几个不同的术语被两个系统用来描述同样的事物。
最显著的莫过于HBase中的regions和BigTable中的tablet。
自然地,它们各自把一连串的行(Rows)切分交给许多Region server或者tablet server管理。
特性比较接下来的就是特性比较列表,列表中是BigTable跟HBase的特性比较。
有的是一些实现细节,有的是可配置的选项等。
让人感到有困惑的是,将这些特性分类很难。
特性
BigTable
HBase
说明读/ 写/ 修改的原子性
支持,每行
支持,每行
因为BigTable 不像关系型数据库,所以不支持事务。
最接近事务的就是让对每行数据访问具有原子性。
HBase 同样实现了”行锁”的API ,让用户访问数据时给一行或者几行数据加锁。
词典顺序的行排序
支持
支持
所有行都按照词典顺序排序
数据块支持
支持
支持
在数据存储文件中,数据是由更小的数据块构成的。
这使从大的存储文件读取数据更快。
数据块的大小是可配置的,典型配置是64K 。
数据块压缩
支持,按Column Family
支持,按Column Family
Google 使用BMDiff 和Zippy 做两步处理。
BMDiff 工作得很好是因为存储文件中相邻的key-value 对的内容经常非常相似。
因为数据支持多个版本,几个版本的内容会被排序然后被存在一起,它们之间有很多相同的内容。
或者row key 也会被用这样的方式处理,比如如果用URL 来作为
row key ,而这些URL 来自统一个网站,那么row key 也会有很多相似之处。
Zippy 使用的是改进的LZW 算法。
HBase 使用的是Java 支持的标准的GZip ,以及一点点GPL licensed LZO 格式支持。
Hadoop 也有想使用BMDiff 和Zippy 的征兆。
Column Family 数量限制
最多几百
小于100
理论上行数和列数是无限的,可是列族(column family )却不是。
这个只是设计上的一些折中考率 . Column Famil 命名格式
可打印
可打印
HBase 这样做的主要原因是Column Famil 的名称会被作为文件系统中的目录名称Qualifier 命名的格式
任意
任意
任意的字节数组
Key/Value 对的格式
任意
任意
任意的字节数组
访问控制
支持
无
BigTable 支持column family 级别的访问控制。
HBase 暂不支持Cell 多版本
支持
支持
多版本支持是基于时间戳。
版本数目限制可以基于cloumn family 级别自由配置自定义时间戳
支持
支持
两个系统都支持用户设定时间戳,如果用户不指定,则使用
当前时间作为时间戳。
数据TTL
支持
支持
除了数据可以有多个版本,用户还可制定TTL
(time-to-live ),当数据到期后会被清除批量写入
支持
支持
都支持批量表操作
值计数器
支持
支持
两者都可使用特定的列作为原子计数器。
HBase 实现是:当计数器的值要增长时,它必须获得行锁。
行过滤器
支持
支持
两者都支持扫描行时支持行过滤器
客户端脚本执行
支持
不支持
BigTable 使用Sawzall 使客户端可以处理存储的数据。
MapReduce 支持
支持
支持
两者都有方便的工具类让MapReduce Job 扫描表。
底层文件系统
GFS
HDFS,S3, S3N, EBS
BigTable 工作在GFS 之上,HBase 可以使用任何文件系统,只要有该文件系统的代理或者驱动即可。
存储文件格式
SSTable
HFile 块索引
在文件最后
在文件最后
两者都有相似的块结构化的存储文件格式,并且块索引被放在文件的最后
内存映射
支持
不支持
BigTable 可以让存储文件直接映射到内存。
锁服务Chubby
ZooKeeper
ZooKeeper 被HBase 用来协调任务并非当成锁服务。
总体说来,HBase 使用ZooKeeper 达到了BigTable 使用Chubby 的效果,只有语义有点细微区别。
单个Master 是
不是
HBase 近来支持多个Master 。
多个Master 是”热”待命模式工作,它们都侦听ZooKeeper 上的
Master 节点。
Tablet/Region 数目
10-1000
10-1000
两个系统都推荐每个Region server 分配相同数目的region 。
当然这决定于很多因素,由于两个系统都使用普通电脑,出于负载考虑,它们推荐相同的数目Tablet/Region 大小
100-200MB
256MB
在两个系统中,单个Region 大小是可配置的,在HBase 中,默认大小为256MB Root 位置
1st META / Chubby
-ROOT- / ZooKeeper
HBase 会使用一个只有单个Region 的自身表来存储Root 表。
二者启动时都会把Root region 所在机器的地址放到ZooKeeper 或者Chubby 中。
客户端Region 信息缓存
支持
不支持
二者客户端都支持Region 位置信息缓存并且有相应的机制去除过时的缓存和更新缓存Meta 预读
支持
不支持(?)
BigTable 的一个设计就是会预读超过1 个Meta Region 信息并将之放入客户端缓存。
Region 事件记录
支持
支持
Region 相关事件(切分,分配,再分配)都会记录在Meta 表中存储位置分组(Locality Groups )
支持
不支持
这不是很确定,但是看起来BigTable 中的任何东西都有个位置分组的属相。
如果多个列族的位置分组相同,那么它们将被存放在一起,并且拥有相同的配置参数。
单个列族就可能是一个拥有一个成员的位置分组。
HBase 不支持这种选项,并将不同的列族分开存储。
完全内存Column Family 存储
支持
这是为需要高速存取小表准备的
KeyValue 缓存
支持
不支持
缓存热点Cell 数据数据块缓存
支持
支持
数据块从存储文件读入到在可配置的缓存中
布隆过滤器(Bloom Filters)
支持
支持
这些过滤器会消耗一些内存,但是可以快速检查一个指定的cell 是否在一个Region Server 上存在Write-Ahead Log (WAL)
支持
每个Region Server 都会记录被它管理的所有Region 上的数据改动Secondary Log
支持
不支持
出于性能考虑,一旦WAL 性能下降,BigTable 还有别的log 可以使用忽略Write-Ahead Log
?
支持
在大量数据导入时,HBase 的客户端可以选择忽略WAL 快速Region 切分
支持
支持
切分region 是快速的,因为切分出来的子region 暂时还会去读取原存储文件直到一个compaction 将数据写入region 的自有的存储文件。