大数据技术及应用-基于Python语言 思考题参考答案 严宣辉 第1-4章 初识大数据-大数据存储_第1页
大数据技术及应用-基于Python语言 思考题参考答案 严宣辉 第1-4章 初识大数据-大数据存储_第2页
大数据技术及应用-基于Python语言 思考题参考答案 严宣辉 第1-4章 初识大数据-大数据存储_第3页
大数据技术及应用-基于Python语言 思考题参考答案 严宣辉 第1-4章 初识大数据-大数据存储_第4页
大数据技术及应用-基于Python语言 思考题参考答案 严宣辉 第1-4章 初识大数据-大数据存储_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章初识大数据1.什么是大数据?大数据的定义是什么?目前业界对大数据还没有一个统一的定义。常见的研究机构基于不同的角度给出如下定义。(1)大数据是指大小超出常规的数据库工具获取、存储、管理和分析能力的数据集(并不是说一定要超过特定TB

级的数据集才算大数据)。——麦肯锡(2)大数据是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集。——维基百科(3)大数据是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化力的海量、高增长率和多样化的信息资产。——Gartner(4)数据量大、获取速度快或形态多样的数据,难以用传统关系型数据分析方法进行有效分析,或者需要大规模的水平扩展才能高效处理。——美国国际标准技术研究院(NIST)(5)大数据一般会涉及两种或两种以上的数据形式,

它需要收集超过100TB(1TB=240B)的数据,并且是高速实时流数据;或者从小数据开始,但数据每年增长速率至少为60%。——国际数据公司总的来说,大数据是指所涉及的数据规模巨大到无法通过人工或计算机,在可容忍的时间下使用常规软件工具完成存储、管理和处理任务,并解释成人们所能解读的形式的信息。2.大数据技术包括哪几方面的内容?请简要回答。大数据技术可归纳为:大数据采集、大数据预处理、大数据存储、大数据计算、大数据挖掘、大数据安全和大数据可视化。3.请举一个大数据在生活中应用的例子,并简要回答大数据技术是如何应用的。拥堵监测。通过分析数据,可以实时获得用户的连贯位置信息。通过对信息长时间的统计,分析常驻用户和人车合并条件,挖掘道路中真正运行的用户。经过道路匹配、用户匹配、车向判断、车速计算、交通信息提取、道路交通状态判断等步骤,判断道路是否拥堵。在这个例子中,大数据技术是这样应用的:(1)大数据采集:通过采集用户的连贯位置信息,获取道路上的交通状况数据。(2)大数据预处理:对采集到的数据进行清洗和去重,同时对数据进行格式化处理和规范化处理。(3)大数据存储:将预处理后的数据存储到大数据存储系统中,例如Hadoop、Cassandra等,以便进行后续处理和分析。(4)大数据计算:通过大数据计算技术,例如MapReduce、Spark等,对存储在大数据存储系统中的数据进行处理和分析,例如道路匹配、用户匹配、车向判断、车速计算、交通信息提取等操作。(5)

大数据挖掘:利用大数据挖掘技术,例如数据聚类、关联规则挖掘等,对处理后的数据进行挖掘和分析,以提取有价值的交通信息。(6)

大数据可视化:将挖掘出的交通信息进行可视化展示,例如通过地图显示交通拥堵情况等,以便用户和交通管理部门实时了解交通状况。(7)大数据安全:对采集到的用户位置信息和交通信息进行加密和安全处理,以确保用户数据的隐私和安全。4.试述大数据的基本特征。大数据具有巨量性(Volume)、多样性(Variety)、高速性(Velocity)、准确性(Veracity)、高价值和低价值密度(Value)的特征。具体的:(1)Volume(巨量性):数据量巨大。这是大数据的显著特征,数据集合的规模不断扩大,已从

GB

级到

TB

级再到

PB

级,甚至已经到了

EB

级和

ZB

级。(2)Variety(多样性):数据类型复杂多样。以往产生或者处理的数据类型较为单一,大部分是结构化数据,如传统文本类和数据库数据。如今,数据类型不仅包括结构化数据,还包括大量半结构化或者非结构化数据,如

XML、邮件、博客、即时消息。此外,企业需要整合分析来自复杂的传统和非传统信息源的数据,包括企业内部和外部的数据。(3)Velocity(高速性):数据具有高速性。数据产生、处理和分析的速度持续提高,数据流量大。速度提高的原因是数据创建的实时性及需要将流数据结合到业务流程和决策过程中。(4)Veracity(准确性):数据具有准确性。该特征体现了大数据的数据质量。较为典型的应用是网络垃圾邮件,它们给社交网络带来了严重的困扰。据统计,网络垃圾占万维网所有内容的20%以上。(5)Value(高价值,低价值密度):数据具有潜在价值。大数据由于数据量不断增大,单位数据的价值密度不断降低,而数据的整体价值不断提高。有人甚至将大数据等同于黄金和石油,表示大数据中蕴含了无限的商业价值。5.大数据处理的数据类型有哪些?大数据处理的数据类型包括结构化数据、半结构化数据和非结构化数据。这些类型的数据都可以被大数据技术处理。其中,结构化数据是指数据库,也称作行数据,是由二维表形式来逻辑表达和实现的数据。半结构化数据具有一定的结构性,且和具有严格理论模型的关系型数据库的数据相比更灵活。非结构化数据是与结构化数据相对的,它不适合用二维表形式表示,包括所有格式的办公文档、图片和音频、视频信息等。6.简要回答大数据的出现为人们生活带来了哪些重要改变。大数据的出现为人们生活带来了许多重要改变。例如,大数据能够支持政务活动,如奥巴马竞选中的民意预测采用大数据存储和分析选民资料、筹集资金、投放广告等;然后,大数据可以提高社会服务能力,如洛杉矶的智能交通

ATSAC,采用感应器收集车速、流量等信息,进行实时处理。此外,大数据可以提高商业决策水平。例如,USXpress

的物流运输使用大数据分析车辆状况,对车辆人员进行合理调度。总之,大数据的出现为人们生活带来了许多重要改变。它能够支持政务活动,提高社会服务能力,并提高商业决策水平。这些只是大数据改变我们生活的几个例子。7.大数据、云计算和物联网三者之间有什么联系?又有哪些不同?大数据、云计算和物联网三者之间有着紧密的联系。物联网通过连接各种设备和传感器,产生了大量的数据。这些数据需要存储和分析,而云计算提供了一个可扩展、弹性和经济高效的方式来存储和处理这些数据。大数据技术则用于分析这些海量数据,从中提取有价值的信息。但它们也有着明显的不同:物联网(IoT)是指通过互联网连接的设备或对象的集合,它们通过互联网发送和收集数据,帮助设备做出决策并记住特定的模式和例程。物联网的目的是通过连接设备来提高效率、安全性和便利性。云计算是一种计算模型,它允许用户通过网络访问共享的计算资源,如服务器、存储和应用程序。云计算提供了一个集中的系统来帮助传输数据和各种文件到数据中心,不同的数据和程序可以从集中的云系统轻松访问。大数据是指结构化和非结构化大量数据的分析过程,以获得对不同业务模式的洞察力。大数据指的是数据太庞大或复杂,无法使用通常方法处理。总之,物联网、云计算和大数据三者之间有着密切的联系,但它们也有着明显的不同。物联网是数据来源,大数据是数据分析平台,云计算是存储、扩展和快速访问的位置。8.对大数据未来的发展趋势,简要说说自己的看法。大数据技术的发展将继续推动各行各业的数字化转型。随着人工智能、云计算、物联网和区块链等技术的不断发展,大数据将在这些领域发挥更大的作用。同时,随着数据量的不断增长,数据治理也将成为重要的议题。此外,大数据人才的培养和引进也将成为关键因素,以支持大数据行业的发展。第二章大数据采集

1.大数据与传统数据主要有哪些区别?

大数据和传统数据的主要区别包括以下几个方面:(1)数据规模:传统数据规模小,以

MB、GB

为单位;而大数据规模大,以

TB、PB

为单位。(2)生成速度:大数据的生成速度远快于传统数据。(3)数据源:传统数据数据源集中,大数据数据源分散。(4)数据类型:传统数据通常是单一的结构化数据,而大数据则包结构化、半结构化、非结构化等多源异构数据。(5)数据存储:传统数据通常存储在关系型数据管理系统(RDBMS)中,而大数据存储在非关系型数据库(NoSQL)、分布式存储系统(Hadoop

分布式文件系统)中。(6)处理工具:传统数据只有一种或少数几种处理工具,而大数据不存在单一的全处理工具。2.互联网的数据来源有哪些?主要特点是什么?

(1)互联网数据主要源于各种网络和社交媒体的半结构化数据和非结构化数据,包括

Web

文本、单击流数据、GPS

和地理定位映射数据,通过管理文件传输协议传送的海量图像文件、评价数据、科学信息、电子邮件等。具体分为以下几个方面:①网站和应用程序:互联网上的各种网站和应用程序都会产生大量的数据,如社交媒体、电子商务、搜索引擎等。②传感器和设备:随着物联网的发展,越来越多的传感器和设备连接到互联网上,产生各种类型的数据,如气象数据、交通数据、智能家居数据等。③开放数据:许多政府机构、科研机构和组织发布各种类型的开放数据,如人口普查数据、地理信息数据、科学研究数据等。④用户生成内容:互联网上的用户生成内容包括文本、图像、视频、音频等,这些内容可以通过社交媒体、博客、论坛等进行分享和发布。(2)互联网数据的主要特点包括以下几个方面:①多样性:互联网数据来源多样化,包括结构化、半结构化和非结构化的数据,如文本、图像、音频、视频等。②高速度:互联网数据增长速度非常快,需要快速、实时地处理和分析。③高容量:互联网数据量非常大,需要使用大规模的存储和处理技术来管理和分析。④不确定性:互联网数据的来源和质量不确定,需要进行数据清洗和预处理来提高数据质量。⑤价值潜力:互联网数据包含大量有价值的信息和洞见,可以用于商业、科学、医疗等领域的决策和发展。3.简述

Kafka

数据采集架构。

Kafka

是一个分布式消息系统,它具有高性能、持久化、多副本、横向扩展的特点。Kafka的主要功能是构建可靠的、用于传输实时数据的管道,以及构建实时的流数据处理应用来变换或处理流数据。Kafka

的基本架构由

Producer、Broker

Consumer

三层组成,其中

Producer

将消息发布到

Kafka

集群,Broker

负责保存和管理消息,而

Consumer

订阅特定

Topic

的消息并处理它们。整个过程中,Topic

作为消息分类的逻辑概念,使得

Producer

发送的消息可以被正确地分发和消费。4.主题可以分很多区,这些区有什么作用?

对于每个Topic,Kafka

集群都会维持一个分区(Partition)日志。Partition

的主要作用包括:(1)扩展数据容量:当单个

Topic

的数据容量超出单个

Broker

的存储能力时,可以通过分散到多个

Partition

上来扩展存储容量。(2)分布式处理:Partition

可以将数据分散到多个

Broker

上进行处理,提高整个系统的并发处理能力。5.在

Kafka

架构中,ZooKeeper

如何实现数据管理?ZooKeeper

Kafka

集群中扮演着重要的角色,通过管理元数据和集群成员关系,确保了

Kafka

集群的高可用性、高性能和可伸缩性。(1)ZooKeeper

Kafka

集群的元数据存储在其自己的数据节点中。例如,ZooKeeper

将每个

Broker

的信息存储在一个特定的节点上,这个节点的路径由固定的前缀和

Broker

ID

组成。每个

Topic

的信息也存储在特定的节点上,节点路径由固定的前缀和

Topic

名称组成。同样,每个

Partition

的信息也存储在一个特定的节点上,路径由固定的前缀、Topic

名称和

Partition

ID

组成。(2)当

Producer

Consumer

启动时,它们将向

ZooKeeper

发送请求,查询特定

Topic

的元数据,例如分区数、分区在哪些

Broker

上,以及每个分区的

Leader

Follower。这些元数据信息将由

ZooKeeper

返回,并缓存在

Producer

Consumer

的内存中。(3)当某个

Broker

加入或退出

Kafka

集群时,它将向

ZooKeeper

发送请求,将自己的信息注册或注销。ZooKeeper

将相应的节点添加或删除,并通知集群中的其他

Broker

进行更新。(4)当某个

Broker

失效时,其他

Broker

会通过

ZooKeeper

感知到该事件,ZooKeeper

将删除该

Broker

对应的节点,同时通知集群中的其他

Broker

进行更新。6.什么是网络爬虫?常用网络爬虫的抓取策略、更新策略及分析算法有哪些?(1)网络爬虫(又称为网页蜘蛛、网络机器人)是一种自动抓取

Web

信息的应用程序或脚本。它按照一定的规则和策略,在互联网上自动地爬行和抓取网页,并将抓取到的数据存储到本地或远程服务器中,以供进一步的处理和分析。网络爬虫通常用于搜索引擎、资讯采集、舆情监测、数据挖掘、网站性能测试等领域。(2)抓取策略:①深度优先策略是指按照深度由低到高的顺序依次访问下一级网页链接,直到不能再深入为止。②广度优先策略是指按照广度优先的搜索思想,逐层抓取待抓取

URL

队列中的每个

URL

的内容,并将每一层

URL

纳入已抓取

URL

队列中。③局部

PageRank

策略是指借鉴

PageRank

的思想,按照一定的网页分析算法,预测候

URL

与目标网页的相似度或与主题的相关性,并选取评价最好的一个或几个

URL

进行抓

取,即对已经下载的网页,连同待抓取

URL

队列中的

URL

形成网页集合,计算每个网页的

PageRank

值,计算完之后,将待抓取

URL

队列中的

URL

按照

PageRank

值的大小排序,并按照该顺序抓取网页。④OPIC

策略,即对网页进行一个重要性打分。⑤大站优先策略,指对于待抓取

URL

队列中的所有网页,根据所属的网站进行分类。

对于待下载网页量大的网站,优先下载。⑥反向链接数策略,使用反向链接数即一个网页被其他网页链接指向的数量来评价网页的重要程度,从而决定不同网页的抓取顺序。

⑦最佳优先搜索策略是指通过计算

URL

描述文本与目标网页的相似度或者与主题的相关性,根据所设定的阈值选出有效

URL

进行抓取。(3)更新策略

:常见的网页更新策略包括用户体验策略、历史数据策略及聚类分析策略。

①用户体验策略。在搜索引擎查询某个关键词时,通常会搜索大量的网页,并且这些网页会按照一定的规则进行排序,但是,大部分用户都只会关注排序靠前的网页,所以,在爬虫服务器资源有限的情况下,爬虫会优先更新排名结果靠前的网页。②历史数据策略。依据某一个网页的历史数据,通过泊松分布进行建模等手段,预测该网页下一次更新的时间,从而确定下一次对该网页的爬取时间。③聚类分析策略。该策略是将聚类算法运用于爬虫对网页更新的一种策略,其基本原理是先将海量网页进行聚类分析(按照相似性进行分类),一般来说,相似网页的更新频率类似。聚类之后,这些海量网页会被分为多个簇,每个簇中的网页具有类似的属性,即每个簇中的网页具有类似的更新频率。然后,对聚类结果的每个簇中的网页进行抽样,并计算出抽样网页的平均更新频率,从而确定每个聚类网页的爬虫频率。(4)分析算法:常用的网页分析算法包括基于用户行为的网页分析算法、基于网络拓扑的网页分析算法及基于网页内容的网页分析算法。

①基于用户行为的网页分析算法会依据用户对这些网页的访问行为,对这些网页进行评价。用户的访问行为包括用户对网页的访问频率、用户对网页的访问时长、用户的点击率等信息。

②基于网络拓扑的网页分析算法是根据网页的链接关系、结构关系、已知网页或数据等对网页进行分析的一种算法。常见的基于网络拓扑的网页分析算法包括基于网页粒度的分析算法、基于网站粒度的分析算法和基于网页块粒度的分析算法。

③PageRank

算法和

HITS

算法是最常见的基于网页粒度的分析算法。7.什么是聚焦网络爬虫?聚焦网络爬虫也叫主题网络爬虫,聚焦网络爬虫是按照预先定义好的主题有选择地进行网页爬虫的一种爬虫方法。聚焦网络爬虫不像通用网络爬虫一样将目标资源定位在全互联网中,而是将爬取的目标网页定位在与主题相关的网页中,这样可以大大节省爬虫时所需的带宽资源和服务器资源。8.中文分词算法包括哪些?

现有的中文分词算法可分为基于字符串匹配的分词算法、基于理解的分词算法和基于统计的分词算法。

(1)基于字符串匹配的分词算法

基于字符串匹配的分词算法又称机械分词算法,它是按照一定的策略将待分词文本与一个“充分大的”机器词典中的词条进行匹配,若在机器词典中找到某个字符串,则匹配成功(识别出一个分词)。

(2)基于理解的分词算法

基于理解的分词算法即人工智能算法。该算法是通过让计算机模拟人对句子的理解达到分词效果的。其基本思想是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。(3)基于统计的分词算法

基于统计的分词算法是在给定大量已经分词文本的前提下,利用统计原理、机器学习模型来学习文本切分的规律(称为训练),从而实现对未知文本的切分,如最大概率分词算法和最大熵分词算法等。9.使用聚焦网络爬虫爬取北上广等地近两年的空气质量数据。

#

页面过滤条件:北上广等地+近两年import

timeimport

requestsfrom

bs4

import

BeautifulSoup#

定义要爬取的城市列表city_list

=

["beijing",

"shanghai",

"guangzhou"]#

定义要爬取的时间列表time_list

=

["2021",

"2022"]#

初始URLurl1='/aqi/'#

定义URL列表url_list

=

[]#防反爬,模仿浏览器发送信息headers

=

{

'User-Agent'

:

'Mozilla/5.0

(Windows

NT

10.0;

Win64;

x64)

AppleWebKit/537.36

(KHTML,

like

Gecko)

Chrome/

Safari/537.36'}for

t

in

time_list:

for

k

in

city_list:

for

i

in

range(1,

13):

time.sleep(0.5)

#

把1转换为01

url

=

url1

+

k

+

'-'

+

t

+

str("%02d"

%

i)

+

'.html'

print(url)

response

=

requests.get(url=url,

headers=headers)

soup

=

BeautifulSoup(response.text,

'html.parser')

tr

=

soup.find_all('tr')

#

去除标签栏

for

j

in

tr[1:]:

td

=

j.find_all('td')

Date

=

td[0].get_text().strip()

Quality_grade

=

td[1].get_text().strip()

AQI

=

td[2].get_text().strip()

AQI_rank

=

td[3].get_text().strip()

PM

=

td[4].get_text()

name

=

'air_'

+

k

+

'_'+

t

+'.csv'

with

open(name,

'a+',

encoding='utf-8-sig')

as

f:

f.write(Date

+

','

+

Quality_grade

+

','

+

AQI

+

','

+

AQI_rank

+

','

+

PM

+

'\n')

url_list.append(url)#已爬取URL存放到URL列表10.采用

MMSEG

分词算法对“本科毕业设计模板”进行分词处理。#

定义待分词文本和词典text

=

"本科毕业设计模板"word_dict

=

["本科",

"毕业",

"设计",

"模板",

"本",

"科毕",

"毕业设计",

"设计模板"]#

定义最大匹配算法函数def

cmm(text,

word_dict):

result

=

[]

while

text:

#

设置匹配的最大长度

max_length

=

min(len(text),

len(word_dict[-1]))

#

从最大长度开始向前匹配

for

i

in

range(max_length,

0,

-1):

if

text[:i]

in

word_dict:

result.append(text[:i])

text

=

text[i:]

break

else:

result.append(text[0])

text

=

text[1:]

return

result#

定义消歧规则函数def

rule_disambiguation(words):

#

1.

优先选择较长的词

for

i

in

range(len(words)):

for

j

in

range(i+1,

len(words)):

if

len(words[i])

<

len(words[j]):

words[i],

words[j]

=

words[j],

words[i]

#

2.

如果两个词长度相同,则选择词频较高的词

freq_dict

=

{word:

word_dict.count(word)

for

word

in

words}

sorted_words

=

sorted(freq_dict.items(),

key=lambda

x:

x[1],

reverse=True)

words

=

[word[0]

for

word

in

sorted_words]

#

3.

如果两个词长度和词频都相同,则选择分词结果中首个词

return

words#

对文本进行分词result

=

cmm(text,

word_dict)result

=

rule_disambiguation(result)#

输出分词结果print(result)分词处理结果为:本科|

毕业设计

|

模板第三章大数据预处理1.数据清洗的主要任务是什么?常用的数据清洗包括哪些技术?

数据清洗的主要任务:纠正错误、标准化数据格式、清除异常和重复数据。常用的技术有:填充缺失值(忽略元组、人工填写、全局常量填充、中心度量填充等)光滑噪声数据(分箱、回归、孤立点分析)识别和删除离群点

纠正数据不一致2.数据集成需要考虑的问题包括哪些?

在数据集成过程中,模式识别、对象匹配、冗余问题、元组重复及数据值冲突的检测与处理都是需要重点考虑的问题。3.数据规约的目的是什么?常用的规约技术包括哪些?

数据规约的目的:在海量数据上进行数据分析和数据挖掘成本很高,而数据规约可以用来得到数据集的规约表示,使得数据集变小,但同时保持仍然近于原数据的完整性。常用的规约技术有:维规约(减少所考虑的随机变量或者属性的个数):离散小波变换和主成分分析方法数量规约(用较小的数据集替换原数据集):参数方法和非参数方法数据压缩(通过数据转换,得到原数据的压缩表示):无损方法和有损方法4.数据转换的主要任务是什么?常用的数据转换包括哪些技术?

数据转换的主要任务:是将数据进行转换或统一成适合数据挖掘的形式。技术:光滑数据、数据聚集、属性构造、数据规范化、数据离散化及数据泛化。

5.简述实现两种数据规范化的算法。

①最小-最大规范化给定是数值属性,具有个观测值、、...、,假设和分别为属性的最小值和最大值。最小-最大规范化计算公式如下。②分数()规范化

分数规范化(又称零均值规范化)是基于属性的均值和标准差的规范化。属性的值被规范化为的计算公式如下。式中,和分别为属性的均值和标准差,,。

6.简述实现一种数据缺失值填充的算法。使用属性的中心度量(如均值或中位数)填充缺失值。根据数据分布的特点,如果数据分布是对称的,那么可以使用属性均值来填充缺失值;如果数据分布是倾斜的,那么可以使用属性中位数来填充缺失值。这种方法的本质是利用已存数据的信息来推测缺失值,并用推测值来实现填充。第四章大数据存储1.简试述分布式文件系统设计的需求

(1)透明性。具备访问透明性、位置透明性、性能透明性和伸缩透明性。(2)并发控制。客户端对于文件的读/写不应该影响其他客户端对同一文件的读/写。(3)文件复制。一个文件可以拥有在不同位置的多个副本。(4)硬件和操作系统的异构性:可以在不同的操作系统和计算机上实现同样的客户端和服务器端程序。(5)可伸缩性。支持节点的动态加入或退出。(6)容错性。保证文件服务在客户端或者服务端出现问题时能正常使用。安全性。保障系统的安全性。2.试述

HDFS

中的块和普通文件系统中的块的区别。HDFS

在文件块大小的设置上要远远大于普通文件系统,以使其在处理大规模文件时能够获得更好的性能。HDFS

默认一个块的大小是

64MB。在

HDFS

中的文件会被拆分成多个块,每个块作为独立的单元进行存储。人们所熟悉的普通文件系统的块一般只有几千字节,HDFS

在块的大小设置上明显要大于普通文件系统。HDFS

寻址开销不仅包括磁盘寻道开销,还包括文件块的定位开销3.试述

HDFS

的冗余数据保存策略。每个数据节点会定期向名称节点发送心跳信息,向名称节点报告自己的状态。当数据节点发生故障,或者断网时,名称节点就无法收到来自一些数据节点的心跳信息,此时这些数据节点就会被标记为“宕机”,节点上面的所有数据都会被标记为“不可读”,名称节点不会再给它们发送任何

I/O

请求。这时,有可能出现一种情况,即由于一些数据节点的不可用,会导致一些文件块的副本数量小于冗余因子。名称节点会定期检查这种情况,一旦发现某个文件块的副本数量小于冗余因子,就会启动数据冗余复制,为它生成新的副本。HDFS

与其他分布式文件系统的最大区别就是可以调整冗余数据的位置。4.请阐述

HBase

和传统关系型数据库的区别。

(1)数据类型。关系型数据库采用关系模型,具有丰富的数据类型和存储方式。HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串,用户可以把不同格式的结构化数据和非结构化数据都序列化成字符串保存到

HBase

中,用户需要自己编写程序把字符串解析成不同的数据类型。(2)数据操作。关系型数据库中包含了丰富的操作,如插入、删除、更新、查询等,其中会涉及复杂的多表连接,通常是借助于多个表之间的主外键关联来实现的。HBase

操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,因为

HBase

在设计上避免了复杂的表与表之间的关系,通常只采用单表的主键查询,所以它无法实现像关系型数据库中那样的表与表之间的连接操作。(3)存储模式。关系型数据库是基于行存储的,元组或行会被连续地存储在磁盘页中。在读取数据时,需要先顺序扫描每个元组,然后从中筛选出查询所需要的属性。如果每个元组只有少量属性的值对于查询是有用的,那么基于行存储就会浪费许多磁盘空间和内存带宽。HBase

是基于列存储的,每个列族(Column

Family)都由几个文件保存,不同列族的文件是分离的,它的优点是:可以降低

I/O

开销,支持大量并发用户查询,因为仅需要处理可以回答这些查询的列,而不需要处理与查询无关的大量数据行;同一个列族中的数据会被一起进行压缩,由于同一列族内的数据相似度较高,因此可以获得较高的数据压缩比。(4)数据索引。关系型数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。与关系型数据库不同的是,HBase

只有一个索引——行键(Row

Key),通过巧妙的设计,HBase

中的所有访问方法为通过行键访问或者通过行键扫描,从而使得整个系统不会慢下来。由于

HBase

位于

Hadoop

框架之上,因此可以使用

Hadoop

MapReduce

来快速、高效地生成索引表。(5)数据维护。在关系型数据库中,更新操作会用当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而在

HBase

中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧的版本仍然保留。(6)可伸缩性。关系型数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase

BigTable

这些分布式数据库就是为了实现灵活的水平扩展而开发的,因此能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩。

5.请阐述

HBase

的数据分区机制。

在一个

HBase

中,存储了许多表。对于

HBase

中的每个表而言,表中的行是根据行键值的字典序进行维护的,表中包含的行数量可能非常庞大,无法存储在一台机器上,需要分布存储到多台机器上。因此,需要根据行键值对表中的行进行分区,每个行区间构成一个Region。Region

包含了位于某个值域区间内的所有数据,它是负载均衡和数据分发的基本单位。这些

Region

会被分发到不同的

Region

服务器上。HBase

中的表被划分成多个

Region,如图

4.14

所示。初始时,每个表只包含一个

Region,随着数据的不断插入

Region

的大小会持续增大,当一个

Region

中包含的行数量达到一个阈值时就会被自动等分成两个新的Regi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论