大数据技术原理与应用作业四
大数据技术原理与应用作业四
1. 试述在Hadoop体系架构中HBase与其他组成部分的相互关系。
HBase利用Hadoop MapReduce来处理HBase中的海量数据,实现高性能计算;
利用Zookeeper作为协同服务,实现稳定服务和失败恢复;
使用HDFS作为高可靠的底层存储,利用廉价集群提供海量数据存储能力。
当然,HBase也可以直接使用本地文件系统而不用HDFS作为底层数据存储方式,不过,为了提高数据可靠性和系统的健壮性,发挥HBase处理大数据量等功能,一般都是用HDFS作为HBase的底层数据存储方式。此外,为了方便在HBase上进行数据处理:
Sqoop为HBase提供了高效、便携的RDBMS数据导入功能,
Pig和Hive为HBase提供了高层语言支持。
HBase是BigTable的开源实现,HBase和BigTable的底层技术对应关系见下图。
2. 请阐述HBase和BigTable的底层技术的对应关系。
见下表:
项目 | BigTable | HBase |
---|---|---|
文件存储系统 | GFS | HDFS |
海量数据处理 | MapReduce | Hadoop MapReduce |
协同服务管理 | Chubby | Zookeeper |
3. 请阐述HBase和传统关系数据库的区别。
HBase与传统的关系数据库的区别主要体现在以下几个方面。
- 数据类型:关系数据库采用关系模型,具有丰富的数据类型和存储方式。HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串,用户可以把不同格式的结构化数据和非结构化数据都序列化成字符串保存到HBase中,用户需要自己编写程序把字符串解析成不同的数据类型。
- 数据操作:关系数据库中包含了丰富的操作,如插入、删除、更新、查询等,其中会涉及复杂的多表连接,通常是借助于多个表之间的主外键关联来实现的。HBase操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,因为HBase在设计上就避免了复杂的表与表之间的关系,通常只采用单表的主键查询,所以它无法实现像关系数据库中那样的表与表之间的连接操作。
- 存储模式:关系数据库是基于行模式存储的,元组或行会被连续地存储在磁盘页中。在读取数据时,需顺序扫描每个元组,然后从中筛选出查询所需要的属性。如果每个元组只有少量属性的值对于查询是有用的,那么基于行模式存储就会浪费许多磁盘空间和内存带宽。HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的,它的优点是可以降低I/O开销,支持大量并发用户查询,因为仅需要处理可以回答这些查询的列,而不需要处理与查询无关的大量数据行;同一个列族中的数据会被一起进行压缩,由于同意列族的数据相似度较高,因此可以获得较高的数据压缩比。
- 数据索引:关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。与关系数据库不同的是,HBase只有一个索引——行键,通过巧妙地设计,HBase中的所有访问方法,或者通过行键扫描,从而使得整个系统不会慢下来。由于HBase位于Hadoop框架之上,因此可以使用Hadoop MapReduce来快速、高效地生成索引表。
- 数据维护:在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而在HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留。
- 可伸缩性:关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase和BigTable这些分布式数据库就是为了实现灵活的水平扩展而开发的,因此能能够轻易地通过再集群中增加或者减少硬件数量来实现性能地伸缩。
但是,相对于关系数据库来说,HBase也有自身地局限性,如HBase不支持事务,因此无法实现跨行的原子性。
4. HBase有哪些类型的访问接口?
类型 | 特点 | 场合 |
---|---|---|
Native Java API | 最常规和高效的访问方式 | 适合Hadoop MapReduce作业并行批量处理HBase表数据 |
HBase Shell | HBase的命令行工具,最简单的接口 | 适合于HBase管理 |
Thrift Gateway | 利用Thrift序列化技术,支持C++、PHP、Python等多种语言 | 适合其他异构系统在线访问HBase表数据 |
REST Gateway | 解除了语言限制 | 支持REST风格的Http API 访问HBase |
Pig | 使用Pig Latin流式编程语言来处理HBase中的数据 | 适合做数据统计 |
Hive | 简单 | 当需要以类似SQL语言的方式来访问HBase的时候 |
5. 请以实例说明HBase数据模型。
HBase的数据模型有:行键、列族、列限定符、时间戳
6. 分别解释HBase中行键、列键和时间戳的概念。
行键:行键是唯一的,在一个表里只出现一次,否则就是在更新同一行,行键可以是任意的字节数组。
列键:列族需要在创建表的时候就定义好,数量也不宜过多。列族名必须由可打印字符组成,创建表的时候不需要定义好列。
时间戳:时间戳,默认由系统指定,用户也可以显示设置。使用不同的时间戳来区分不同的版本。
7. 请举个例来阐述HBase的概念视图和物理视图的不同。
8. 试述HBase各功能组件及其作用。
HBase的实现包括3个主要功能组件:
库函数:链接到每个客户端;
一个Master主服务器:主服务器Master负责管理和维护HBase表的分区信息,比如,一个表被分成了哪些Region,每个Region被存放在哪台Region服务器上,同时也负责维护Region服务器列表。Master会实时监测集群中的Region服务器,把特定的Region分配到可用的Region服务器上,并确保整个集群内部不同Region服务器之间的负载均衡。除此之外,Master还处理模式变化,如表和列族的创建;
许多个Region服务器:Region服务器负责存储和维护分配给自己的Region,处理来自客户端的读写请求。
9. 请阐述HBase的数据分区机制。
HBase采用分区存储,一个大的表会被分拆许多个Region,这些Region会被分发到不同的服务器上实现分布式存储。
10. HBase中的分区是如何定位的。
每个Region都有一个RegionID来标识它的唯一性,这样,一个Region标识符就可以表示成“表名+开始主键+RegionID”。
有了Region标识符,就可以唯一标识每个Region。为了定位每个Region所在的位置,就可以构建一张映射表,映射表的每个条目(或每行)包含两项内容,一个式Region标识符,另一个是Region服务器标识,这个条目就表示Region和Region服务器之间的对应关系,从而就可以知道某个Region被保存在哪个Region服务器中。这个映射表中包含了关于Region的元数据(即Region和Region服务器之间的对应关系),因此也被称为“元数据表”,又名“.META.表”。
11. 试述HBase的三层结构中各层次的名称和作用。
层次 | 名称 | 作用 |
---|---|---|
第一层 | Zookeeper文件 | 记录了-ROOT-表的位置信息 |
第二层 | -ROOT-表 | 记录了 .META. 表的Region位置信息,-ROOT-表只能有一个Region。通过-ROOT-表就可以访问.META.表中的数据 |
第三层 | .META.表 | 记录了用户数据表的Region位置信息,.META.表可以有多个Region,保存了HBase中所有用户数据表的Region位置信息 |
12. 请阐述在HBase三层结构下,客户端时如何访问到数据的。
当一个HBase表中的Region数量非常庞大的时候,.META.表的条目就会非常多,一个服务器保存不下,也需要分区存储到不同的服务器上,因此.META.表也会被分裂成多个Region,这时,为了定位这些Region,就需要再构建一个新的映射表,记录所有元数据的具体位置,这个新的映射表就是“根数据表”,又名“-ROOT-”表。-ROOT-表是不能被分割的,永远只存在一个Region用于存放-ROOT-表,因此这个用来存放-ROOT-表的唯一一个Region,它的名字是在程序中被写死的,Master主服务器永远知道它的位置。
客户端访问用户数据之前,需要首先访问Zookeeper,获取-ROOT-表的位置信息,然后访问-ROOT-表,获得.META.表的信息,接着访问.META.表,找到所需的Region具体位于哪个Region服务器,最后才会到该Region服务器读取数据。
13. 试述HBase系统基本架构以及每个组成部分的作用
1)客户端
客户端包含访问HBase的接口,同时在缓存中维护着已经访问过的Region位置信息,用来加快后续数据访问过程
2)Zookeeper服务器
Zookeeper可以帮助选举出一个Master作为集群的总管,并保证在任何时刻总有唯一一个Master在运行,这就避免了Master的“单点失效”问题
3)Master
主服务器Master主要负责表和Region的管理工作:管理用户对表的增加、删除、修改、查询等操作;实现不同Region服务器之间的负载均衡;在Region分裂或合并后,负责重新调整Region的分布;对发生故障失效的Region服务器上的Region进行迁移
4)Region服务器
Region服务器是HBase中最核心的模块,负责维护分配给自己的Region,并响应用户的读写请求
14. 请阐述Region服务器向HDFS文件系统中读写数据的基本原理。
Region服务器内部管理一系列Region对象和一个HLog文件,其中,HLog是磁盘上面的记录文件,它记录着所有的更新操作。每个Region对象又是由多个Store组成的,每个Store对象了表中的一个列族的存储。每个Store又包含了MemStore和若干个StoreFile,其中,MemStore是在内存中的缓存。
15. 试述HStore的工作原理。
每个Store对应了表中的一个列族的存储。每个Store包括一个MemStore缓存和若干个StoreFile文件。MemStore是排序的内存缓冲区,当用户写入数据时,系统首先把数据放入MemStore缓存,当MemStore缓存满时,就会刷新到磁盘中的一个StoreFile文件中,当单个StoreFile文件大小超过一定阈值时,就会触发文件分裂操作。
16. 试述HLog的工作原理。
HBase系统为每个Region服务器配置了一个HLog文件,它是一种预写式日志(Write Ahead Log),用户更新数据必须首先写入日志后,才能写入MemStore缓存,并且,直到MemStore缓存内容对应的日志已经写入磁盘,该缓存内容才能被刷写到磁盘。
17. 在HBase中,每个Region服务器维护一个HLog,而不是为每个Region都单独维护一个HLog。请说明这种做法的优点和缺点。
优点:
多个Region对象的更新操作所发生的日志修改,只需要不断把日志记录追加到单个日志文件中,不需要同时打开、写入到多个日志文件中。
缺点:
如果一个Region服务器发生故障,为了恢复其上次的Region对象,需要将Region服务器上的对象,需要将Region服务器上的HLog按照其所属的Region对象进行拆分,然后分发到其他Region服务器上执行恢复操作。
18. 当一台Region服务器意外终止时,Master如何发现这种意外终止情况?为了恢复这台发生意外的Region服务器上的Region,Master应该做出哪些处理(包括如何使用HLog进行恢复)?
Zookeeper会实时监测每个Region服务器的状态,当某个Region服务器发生故障时,Zookeeper会通知Master。
Master首先会处理该故障Region服务器上面遗留HLog文件,这个遗留的HLog文件中包含了来自多个Region对象的日志记录。系统会根据每条日志记录所属的Region对象对HLog数据进行拆分,分别放到相应Region对象的目录下,然后,再将失效的Region重新分配到可用的Region服务器中,并把与该Region对象相关的HLog日志记录也发送给相应的Region服务器。
Region服务器领取到分配给自己的Region对象以及与之相关的HLog日志记录以后,会重新做一遍日志记录中的各种操作,把日志记录中的数据写入到MemStore缓存中,然后,刷新到磁盘的StoreFile文件中,完成数据恢复。
19. 请列举几个HBase常用命令,并说明其使用方法。
1)create:创建表
创建表t1,列族为f1,f2,f3, 命令如下。
create ‘t1’, ‘f1’, ‘f2’, ‘f3’
2)list:列出HBase中所有表的信息
3)put:向表、行、列指定的单元格添加数据
向表t1中行row1和列fl:c1所对应的单元格中添加数据value1,时间戳为1421822284898,命令如下。
put ‘t1’, ‘row1’, ‘f1:c1’, ‘value1’, 1421822284898
4)get:通过指定表名、行、列、时间戳、时间范围和版本号来获得相应单元格的值
获得表tl、行r1、列c1、时间范围为[ts1, ts2]、 版本号为4的数据,命令如下。
get ‘t1’, ‘r1’, {COLUMN => ‘c1’, TIMERANGE => [ts1, ts2], VERSIONS => 4}
5)scan:浏览表的相关信息
可以通过TIMERANGE、FILTER、 LIMIT、 STARTROW、 STOPROW、TIMESTAMP、MAXLENGTH、COLUMNS、CACHE来限定所需要浏览的数据。
浏览表“.META."、列info:regioninfo上的数据,命令如下。
scan ‘.META.’ {COLUMNS =>info: regioninfo’}
6)alter:修改列族模式
向表t1添加列族f1,命令如下。
alter ‘t1’,NAME=>‘f1’
7)count:统计表中的行数
统计表t1的行数
count ‘t1’
8)describe:显示表的相关信息
显示表t1的信息
describe ‘t1’
9)enable/disable:使表有效或无效
10)delete:删除指定单元格的数据
删除表t1、行r1、列c1、时间戳为ts1上的数据,命令如下。
delete ‘t1’, ‘r1’, ‘c1’, ts1
11)drop:删除表
删除表之前必须使该表无效。
12)exists:判断表是否存在
13)truncate:使表无效,删除该表,然后重新建立表
14)exit:退出HBase Shell
15)shutdown:关闭HBase集群
16)version:输出HBase版本信息
17)status:输出HBase集群状态信息
大数据技术原理与应用作业四相关推荐
- 大数据技术原理与应用作业一
大数据技术原理与应用作业一 1.试述信息技术发展史上的3次信息化浪潮及其具体内容. 第一次信息化浪潮发生在1980年前后,具体标志是个人计算机的出现,PC开始普及,使得计算机走入企业和千家万户,大 ...
- 大数据技术原理与应用作业七
大数据技术原理与应用作业七 1. 试述MapReduce和Hadoop的关系. Google公司最先提出了分布式并行编程模型MapRedece,Hadoop MapReduce是它的开源实现.Goog ...
- 大数据技术原理与应用作业十
大数据技术原理与应用作业十 1. 试述流数据的概念. 流数据,即数据以大量.快速.时变的流形式持续到达. 2. 试述流数据的特点. 流数据具有如下特征: 数据快速持续到达,潜在大小也许是无穷无尽的 数 ...
- [渝粤教育] 厦门大学 大数据技术原理与应用 参考 资料
教育 -大数据技术原理与应用-章节资料考试资料-厦门大学[] 第1章 大数据概述 单元测验 1.[单选题]第三次信息化浪潮的标志是: A.个人电脑的普及 B.互联网的普及 C.云计算.大数据.物联网技 ...
- 大数据技术原理与应用课后题(林子雨)
大数据技术原理与应用(林子雨) 第1章 大数据概述 1单选(2分) 第三次信息化浪潮的标志是: A.个人电脑的普及 B.云计算.大数据.物联网技术的普及 C.虚拟现实技术的普及 D.互联网的普及 正确 ...
- 大数据技术原理与应用—课后题答案(第一章)
大数据技术原理与应用_林子雨版_课后题答案(第一章) 1.试述信息技术发展史上的3次信息化浪潮及具体内容. 信息化浪潮 发生时间 标志 解决问题 ...
- 林子雨试卷《大数据技术原理与应用》试题与答案
<大数据技术原理与应用>试题与答案 问答题(100分): (问答题,共13道题目,第1题4分,第2题6分,第3题10分,第4题10分,第5题16分,第6题6分,第7题12分,第8题6分,第 ...
- 大数据技术原理与应用课程建设经验分享
大数据技术原理与应用课程 建设经验分享 林子雨 厦门大学信息科学与技术学院, 福建 厦门 361005 摘要:大数据专业人才的培养是世界各国新一轮科技较量的基础,高等院校承担着大数据人才培养的重任 ...
- 关于大数据技术原理与应用的学习(3)
学习目标: 大数据技术原理与应用 学习内容: 分布式文件系统HDFS 3.1HDFS简介 3.2HDFS相关概念 3.3HTFS体系结构 3.4HTFS存储元原理 3.5HDFS数据读写 3.6HDF ...
最新文章
- 8.29 对象?数组?
- 基于超声波升压中周构建的150kHz的单管选频放大电路
- Hibernate:不容易理解的 lock 和 merge
- url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介
- Android开发常用开源框架2
- dva处理_umi项目中dvaeffects异常统一处理
- truncate、drop、delete区别
- 如何防止单例模式被JAVA反射攻击
- python 添加数据库表_通过时间表(Python库)简化复杂的计划
- 为什么要使用计算机协议,为什么需要网络协议
- c语言怎样编写图形,「分享」C语言如何编写图形界面
- SQLite剖析之事务处理技术
- MAC maven 安装和配置
- url后面的参数是什么_揭秘亚马逊黑科技之超级URL原理
- sata 双硬盘 电源线_电脑双硬盘安装图解教程
- VS2012安装步骤
- XML语言学习2---方立勋教程DTD
- 教你几招提高自媒体文章原创度
- linux Guest账户下如何更新默认的python版本
- 【系列笔记一】-USYD悉尼大学Data1002 Grok Module 3 课件 作业 assignment讲解