大数据技术原理与应用作业四
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框架