第一章 作业
2、请阐述把数据变得可用需要经过哪几个步骤.
答:一共要经历三个步骤:数据清洗、数据管理、数据分析。
第一步:数据清洗。使用数据的第一步通常是数据清洗,也就是把数据变成一种可用的状态。这个过程需要借助工具去实现数据转换,一旦完成数据的清洗,就要开始关注数据的质量。对于来源众多、类型多样的数据而已,数据缺失和语义模糊等问题是不可避免的 ,必须采取相应的措施来解决这些问题。
第二步:数据管理。数据经过清洗以后,被存放在数据库系统中进行管理。关系数据库一直是占据主流地位的数据库管理系统。随着 web 2.0应用的不断发展,非结构化数据开始迅速增加。
第三步:数据分析。存储数据是为了更好地分析数据,分析数据需要借助于数据挖掘和机器学习算法,同时需要使用相关的大数据处理技术。构建统计模型对于数据分析十分重要,统计是数据分析的重要方式。可视化对于数据分析来说也是一项重要的工作,如果需要找出数据的差别,就需要画图帮助人们进行直观理解,继而找出问题所在。
4、请阐述信息科技是如何为大数据时代的到来提供技术支撑的。
答:信息科技进步是大数据时代的物质基础。信息科技需要解决信息存储、信息处理和信息传输三个核心问题。人类社会在信息科技领域的不断进步,为大数据时代提供了技术支撑。
1.存储设备容量不断增加
数据被存储在磁盘、磁带、光盘、闪存等各种类型的存储介质中。随着科学技术的不断进步,存储设备制造工艺不断升级、容量大幅增加、读写速度不断提升,价格 却在不断下降。现在,高性能的硬盘存储设备,不仅提供了海量的存储空间,还大大降低了数据存储成本。
2.CPU处理能力大幅提升
CPU处理性能的不断提升也是促数据量不断增长的重要因素。CPU的性能不断提升,大大提高了处理数据的能力,使我们可以更快地处理不断果积的海量数据。从20世纪80年代至今,CPU的制造工艺不断提升,晶体管数数目不断增加, 运行频率不断提高,核心数量逐渐增多,而用间等价格所他获得的CPU处理能力也呈几何级数上升。
3、网络宽带不断增加
进人21世纪,世界各国纷纷加大宽带网络建设力度,不断扩大网络覆盖范围,提高数据传输速率。目前,移动通信4G基站数量也已接近520万个,我国4G网络的规模全球第一,在大数据时代,数据传输不再受网络发展初期的瓶颈的制约。
6、请阐述大数据发展的3个重要阶段。
答:从发展历程来看,大数据总体上可以划分为3个重要阶段:萌芽期、成熟期和大规模应用期。
萌芽期: 约为20世纪90年代至21世纪初 随着数据挖掘理论和数据库技术的逐步成熟,一批商业智能工具和知识
管理技术开始被应用,如数据仓库、专家系统、知识管理系统等。
成熟期: 约为21世纪前十年 Web 2.0应用迅猛发展,非结构化数据大量产生,传统处理方法难以应对,带动了大数据技术的快速突破,大数据解决方案逐渐走向成熟,形成了
并行计算与分布式系统两大核心技术,谷歌的GFS和MapReduce等大数据技术受到追捧,Hadoop平台开始盛行。
大规模应用期: 约为2010年以后 大数据应用渗透各行各业,数据驱动决策,信息社会智能化程度大幅提高。
7、请阐述大数据的“5V”特性:
答:
(1)、数据量大
从数据量的角度而言,大数据泛指无法在可容忍的时间内用传统信息技术和软、其进行获取、管理和处理的巨量数据集合,需要可伸缩的计算体系结构以支持其存储、处理和分析。
(2)数据类型繁多
大数据是有结构化和非结构化数据组成的
(3)处理速度快
(4)价值密度低
数据价值密度远远低于传统关系中的数据价值密度,但是商业价值高!
(5)数据的真实性
数据的真实性是指:数据的准确度和可信赖度代表数据的质量。
8、请阐述大数据对科学研究的影响
答:大数据最根本的价值在于为人类提供了复杂的新思维新手段。人类自古以来在科学研究上先后经历了实验科学、理论科学、计算科学和数据密集型科学四种范式。
1、第一种范式:实验科学
在最初的科学研究阶段,人类采用实验来解决一些科学问题, 著名的比萨斜塔实验就是一个典型实例。1590 年,伽利略在比萨斜塔上做了“两个铁球同时落地”的实验,得出了重量不同的两个铁球同时下落的结论,从此推翻了亚里士多德“物体下落速度和重量成比例”的学说,纠正了这个持续了1900年之久的错误结论。
2、第二种范式:理论科学
实验科学的研究会受到当时实验条件的限制,难以完成对自然现象更精确的理解。随着科学的进步,人类开始采用数学、几何、物理等理论,构建问题模型和寻找解决方案。比如牛顿第一定律、牛顿第二定律、牛顿第三定律构成了牛顿经典力学的体系,奠定了经典力学的概念基础,它的广泛传播和运用对人们的生活和思想产生了重大影响,在很大程度上推动了人类社会的发展。
3、第三种范式:计算科学
1946年,随着人类历史上第一台通用计算机ENIAC的诞生,人类社会步入计算机时代,科学研究也进入了一个以“计算”为中心的全新时期。在实际应用中,计算科学主要用于对各个科学问题进行计算机模拟和其他形式的计算。通过设计算法并编写相应程序输入计算机运行,人类可以借助计算机的高速运算能力去解决各种问题。计算机具有存储容量大、运算速度快、精度高、可重复执行等特点,是科学研究的利器,推动了人类社会的飞速发展。
4、第四种范式:数据密集型科学
随着数据的不断累积,其宝贵价值日益得到体现,物联网和云计算的出现,更促成了事物发足从最到质的转弯,他人类社会开启了全新的大数据时代。如今,计算机不仅能做模报仿真,还能进行分析总结,得到理论。在大数据环境下,一切将以数据为中心,从数据中发现问题、解决问题,真正体现数据的价值。大数据成为科学工作者的宝藏,从数据中可以挖据未知模式和有价值的信息,服务于生产和生活,推动科技创新和社会进步。虽然第二种范式和第四种范式都是利用计算机来进行计算,但是,二者还造有本质的区别。在第三种范式中,一般是先提出可能的理论,再搜索数据,然后通过计算来验证。而对于第四种范式,是先有了大量已知的数据,然后通过计算得出之前未知的结论。
第二章 作业
2、请阐述云计算有哪几种服务模式和哪几种类型?
答:云计算包括3种典型的服务模式,即基础设施即服务、平台即服务和软件即服务。
云计算包括公有云、私有云和混合云3种类型,公有云面向所有用户提供服务,只要是注册付费的用户都可以使用,私有云只为特定用户提供服务,混合云综合了公有云和私有云的特点。
6.请阐述物联网有些关键技术?
答:
1.识别和感知技术
二维码是物联网中一种重要的识别和感知技术,是在条形码基础上扩展出来的条码技术。二维码包括堆叠式/行列式二维码和矩阵式二维码,后者更较为常见。
2.网络与通信技术
物联网中的网络和通信技术包括短距离无线通信技术和远程通信技术。
3.数据挖掘与融合技术:物联网中存在各种异构网络和不同类型的系统,产生了大量不同来源的不同类型数据,如此大量的不同类型数据,如何实现有效整合、处理和挖掘,是物联网处理层需要解决的关键技术问题。
7.请阐述大数据与云计算,物联网的相互关系?
答:
大数据、云计算和物联网代表了IT领域最新的技术发展趋势,三者既有区别又有联系。随着大数据概念的提出,云计算中的分布式计算技术开始更多地被列人大数据技术,从云计算和大数据概念的诞生到现在,二者之间的关系非常微妙,既密不可分,又千差万别。因此,我们不能把云计算和大数据割裂开来作为截然不同的两类技术区别来看待。此外,物联网也是和云计算、大数据相伴相生的技术。
物联网是大数据的重要来源,大数据技术为物联网数据分析提供支撑,云计算为大数据提供了技术基础,大数据为云计算提供用武之地。大数据,云计算为物联网提供海量数据存储能力,物联网为云计算技术提供了广阔的应用空间。
9.请阐述人工智能有哪些关键技术?
答:
1.机器学习:机器学习是一门涉及统计学、系统辨识、逼近理论、神经网络、优化理论、计算机科学、脑科学等诸多领域的交叉学科,研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能。重新组织已有的知识使之不断改善自身的性能,是人工智能技术的核心。机器学习强调3个关键词:算法、经验、性能,机器学习在数据的基础上,通过算法构建出模型并对模型进行评估。
2.知识图谱:知识图谱,又称为科学知识图谱,在图书情报界称为知识域可视化或知识领域映射地图,是显示知识发展进程与结构关系的一系列各种不同的图形。知识图谱用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及它们之间的相互联系。
3.自然语言处理:自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能使人与计算机之间用自然语言进行有效沟通的各种理论和方法。
4.人机交互:人机交互是一门研究系统与用户之间的交互关系的学科。系统可以是各种各样的机器,也可以是计算机化的系统和软件。
5.计算机视觉:计算机视觉是一门研究如何使机器学会"看"的科学。更进一步地说,计算机视觉是指用摄影机和计算机代替人眼对目标进行识别、跟踪和测量,并进一步做图形处理,使其成为更适合人眼观察或传送给仪器检测的图像。
6.生物特征识别:生物特征识别技术 但简洁快速,而且利用它进行身份的认定,安全、可靠、准确。同时采用生物特征识别技术更易于配合计算机和安全、监控、管理系统整合,实现自动化管理。
7.VR/AR:虚拟现实(VR)/增强现实(AR)是以计算机为核心的新型视听技术。虚拟现实/增强现实结合相关科学技术,在一定范围内生成与真实环境在视觉、听觉、触觉等方面高度近似的数字化环境。
10.请阐述人工智能与大数据的关系?
答:人工智能和大数据是紧密相关的两种技术,二者既有联系,又有区别.一方面,人工智能需要数据来建立其智能,特别是机器学习。人工智能应用的数据越多,其获得的结果就越准确。今天,大数据为人工智能提供了海量的数据,使得人工智能技术有了长足的发展,甚至可以说,没有大数据就没有人工智能。
另一方面,大数据技术为人工智能提供了强大的存储能力和计算能力,大数据时代,面对海量的数据,传统的单机存储和单机算法都已经无能为力。
人工智能与大数据存在着明显的区别,人工智能是一种计算形式,它允许计算机执行认知功能,例如,对输人起作用或做出反应,类似于人类的做法。而大数据是一种传统计算,它不会根据结果采取行动,只是寻找结果。
另外,二者要达成的目标和实现目标的手段不同。大数据的主要目的是通过数据的对比分析来掌握和推演出更优的方案。
12.请阐述区块链是如何解决防篡改和去中心化问题的?
答:(1)为了解决"防篡改"问题,我们引人哈希函数。哈希函数的作用是将任意长度的字符串转变成固定长度的输出,输出的值就被称为“哈希值”。
哈希函数有以下两个非常重要的特性。
第一个特性:很难找到两个不同的x和y,使得h(x)=h(y),也就是说,通过两个不同的输人、很难找到对应的、相同的输出。
第二个特性:根据已知的输出,很难找到对应的输人。只要增加哈希函数输出值的长度,寻找可能的输入就会很困难。
首先,我们所有的交易记录都被记录在一个账本中。这个账本非常大,于是,我们可以把这个大账本切分成很多个区块进行存储,每个区块记录一段时间内的交易,区块与区块之间就会形成继承关系。
然后,我们在每个区块上,增加区块头,在区块头中记录父区块的哈希值。通过在每个父区块的哈希值,就可以把所有区块按照顺序组织起来,形成区块链。每个区块的区块头,都存储父区块的哈希值。这样就将所有区块按照顺序连接了起来,最终形成了一条链,就叫"区块链"。
那么,假设我们修改了区块45的一点内容,当有其他人来检查的时候,他很容易就可以发现,假设篡改区块45的人的权限很大,他不仅把区块45的内容篡改了,他还同时把区块46中的区块头的内容也篡改了,那么实际上,我们也能够发现篡改信息的行为。
假设这个篡改的人很厉害,他把信息一直篡改下去,一直篡改到最后一个区块,那么也没有什么问题。他只有获得最新区块的写人权,才可以做到。而要想获得最新区块的写人权,他就必须控制网络中至少51%的算力。但是通过硬件和电力控制算力的成本十分高昂。
如图:
因此:我们可以说,区块链能够保证里面记录的信息和当时发生的一模一样,中间没有发生篡改。
(2)对于去中心化问题,我们采用的方式是:人人都可以记账,每个人都可以保留完整账本。任何人都可以下载开源程序,加入P2P网络,监听全世界发送的交易,成为记账节点参与记账。当P2P网络中的某个节点接收到一条交易记录时,它会传播给相邻的节点,然后相邻的节点再传播给其他相邻的节点,那么通过这样一个P2P网络,这个数据会瞬间传遍全球。
采用去中心化记账以后,具体的分布式记账流程如下。
(1)某人发起一笔交易以后,他向全网广播。
(2)每个记账节点,持续监听、传播全网的交易。收到一笔新交易,验证准确性以后,将其放入交易池,并继续向其他节点传播。
(3)因为网络传播,同一时间、不同记账节点的交易池不一定相同。
(4)每隔10分钟,从所有记账节点当中,按照某种方式抽取一个节点,将其交易池作为下一个区块,并向全网广播。
(5)其他节点根据最新的区块中的交易,删除自己交易池中已经记录的交易,继续记账,等待下一次被选中。
在上面的这个分布式记账的步骤中,还有一个很重要的问题就是如何分配记账权。在比特币区块链中,采用的是工作量证明机制来分配记账权。记账节点通过计算数学题来争夺记账权。计算数学公式,除了从零开始遍历随机数碰运气以外,没有其他办法。解题的过程又叫“挖矿”,记账节点被称为“矿工”。谁先解对,谁就获得记账权。某记账节点率先找到解,就向全网公布,其他节点验证无误之后,将该区块列入区块链,重新开始下一轮计算,这种机制被称为“PoW”。.
总而言之,比特币的全貌就是,采用区块链(数据结构+哈希函数),保证账本不能被篡改;采用数字签名技术,保证只有自己才能够使用自己的账户;采用P2P网络和PoW共识机制,保证去中心化的运作方式。
13.请阐述区块链和大数据的关系?
答:
区块链和大数据都是新一代信息技术,二者既有区别,又存在着紧密的联系。
1.大数据与区块链的区别主要表现在以下几个方面。
(1)数据量。区块链技术是分布式数据存储,点对点传输、共识机制、加密算法等计算机技术的新型应用模式。
区块链处理的数据量小,具有细致的处理方式。而大数据管理的是海量数据,要求广度和数量,处理方式上会更粗糙。
(2)结构化和非结构化。区块链是结构定义严谨的块,通过指针组成的链,是典型的结构化数据,而大数据需要处理的更多的是非结构化数据。
(3)独立和整合。区块链系统为保证安全性,信息是相对独立的,而大数据的重点是信息的整合分析。
(4)直接和间接。区块链是一个分布式账本,本质上就是一个数据库,而大数据指的是对数据深度分析和挖掘,是一种间接的数据。
(5) CAP理论。它是指任何一个读操作总是能够读到之前完成
的写操作的结果,也就是在分布式环境中,多点的数据是一致的。CAP理论告诉我们,一个分布式系统不可能同时满足一致性、可用性和分区容忍性这3个需求,最多只能同时满足其中2个,正所谓"鱼和熊掌不可兼得"。大数据通常选择实现AP,区块链则选择实现CP
(6)基础网络。大数据底层的基础设施通常是计算机集群,而区块链的基础设施通常是P2P网络。
(7)价值来源。对于大数据而言,数据是信息,需要从数据中提炼得到价值。而对于区块链而言,数据是资产,是价值的传承。
(8)计算模式。在大数据的场景中,是把一件事情分给多个人做 在区块链的场景中,是让多个人重复做一件事情。
2.大数据与区块链的联系
区块链的可信任性、安全性和不可篡改性,正在让更多数据被释放出来,区块链会对大数据产生深远的影响。
(1)区块链使大数据极大降低信用成本。
(2)区块链是构建大数据时代的信任基石。区块链因其"去中心化、不可篡改"的特性,可以极大地降低信用成本,实现大数据的安全存储。不仅可以保障数据的真实、安全、可信,而且,如果数据遭到破坏,可以通过区块链技术的数据库应用平台灾备中间件进行迅速恢复。
(3)区块链是促进大数据价值流通的管道。"流通"使得大数据发挥出更大的价值。 实现大数据在更加广泛领域的应用及变现,充分发挥大数据的经济价值。 有了区块链提供安全保障,大数据将更加活跃。
第三章作业
2.请阐述大数据安全与传统数据安全的不同。
答:大数据安全与传统数据安全的不同主要有以下几个方面:大数据成为网络攻击的显著目标;大数据加大隐私泄露风险;大数据技术被应用到攻击手段中;大数据成为高级可持续攻击的载体。
(1)大数据成为网络攻击的显著目标:在网络中,数据量越大,就越容易收到关注,由于大数据的数据量十分巨大,因此也更容易被盯上,更容易被攻击,而且大数据包含的数据量大包含了大量复杂和敏感的数据,所以大数据的价值高,而数据在一个地方大量聚集以后,安全屏障一旦被攻破,攻击者将获益巨大。
(2)大数据加大隐私泄露风险:
目前的各种大数据平台对数据的聚合增加了数据泄露的风险,而且非关系型数据库发展时间较短,也没有形成完整的安全防护机制,所以它的风险也更高。大数据存储的数据量十分庞大,以目前的保密手技术也不能够保证百分百保护如此大量的数据不被泄露,而一旦数据发生泄露,影响将是巨大的,损失也将难以估量。
(3)大数据技术被应用到攻击手段中:海量的数据为黑客提供了更加准确和完善的被攻击对象的信息,使黑客攻击更容易成功。
(4)大数据成为高级可持续攻击的载体:大数据的庇护下,黑客能够更好的隐藏自己,传统的检测只能单一监测,但是大数据的高级可持续攻击是一个实施过程,无法被实时检测。
6.请阐述大数据时代人类思维方式的转变主要体现在哪些方面。
答:主要体现在5个方面:全样而非抽样;效率而非精确;相关而非因果、以数据为中心、“我为人人,人人为我”。
(1)全样而非抽样:在分析和推断过程中使用完整的、全部的数据集,而不是从中抽取一部分样本进行分析。这种方法能够提高预测和决策的准确性和可信度,但同时也需要处理和存储巨量的数据,需要借助大数据技术和算法来应对。
(2)效率而非精确
大数据思维中的效率而非精确的思维指的是,在面对海量、复杂、多变的数据时,不一定需要追求完美的准确性和精度,而应该注重高效地处理和分析数据,以快速获得有用的信息和洞见。这种思维方式强调数据的实用性和可操作性,即使数据存在一定的误差或不确定性,也可以通过合理的方法和技术,快速地提取出有效信息,并支持决策和行动。因此,在大数据思维中,效率比精确更为重要。
(3)相关而非因果:在大数据时代,对于数据的分析不一定要局限于两者之间有一定的因果性,只要是因为某种原因使两种数据产生了联系,就可以通过大数据分析出相关性,从而达到对数据的高效科学处理。
(4)以数据为中心:全世界各个领域数据不断向外扩展,渐渐形成了另外一个特点,那就是很多数据开始出现交叉,各个维度的数据从点和线渐渐连成了网,或者说,数据之间的关联性极大地增强。在这样的背景下,大数据出现了,使得“以数据为中心”的思考和解决问题的方式的优势逐渐得到显现。
(5)“我为人人,人人为我”
“我为人人,人人为我”是大数据思维的又一体现,城市的智能交通管理便是体现该思维的一个例子。
7.请根据自己的生活实践举出一个大数据思维的典型案例。(谷歌流感趋势预测)
答:谷歌流感趋势预测使用的是全样而非抽样的大数据思维。因为它基于全球数亿用户在搜索引擎上输入关于流感相关症状和治疗方法的查询数据来分析和预测全球流感爆发的情况。这些数据可以看作是完整的、全面的、包含全部信息的数据集,而不是从中随机抽取一部分样本进行分析和推断。
谷歌流感趋势预测利用了大数据分析技术,通过对这些海量数据的处理和分析,构建了一个能够准确反映全球流感爆发趋势的模型。该模型不仅考虑到了人们搜索流感相关词汇的数量,还结合了时间、地理位置等多个因素,使得预测结果更加准确可靠。
8.请阐述大数据伦理的概念。
答:大数据伦理属于科技伦理的范围,科技伦理只科技在使用过程中所遵循的行为准则和道德规范等。大数据作为新的技术,在使用过程中也有着人与人之间的行为准则问题,是用大数据做善事,还是做恶事,全在与使用者,处于不同的目的,大数据会带来积极的影响,但也会带来消极的影响。
10.请阐述大数据伦理问题具体体现在哪些方面。
答:大数据的伦理问题主要体现在隐私泄露问题、数据安全问题、数字鸿沟问题、数据独裁问题数据垄断问题、数据的真实可靠问题、人的主体地位问题。
(1)隐私泄露问题:在大数据时代,我们的一举一动几乎都会在网络种留下痕迹,我们每个人都处在大数据的监视之下,我们留下的“数据痕迹”会被永久记录,不易被清除,这也导致我们的个人信息一旦泄露,隐私将被别人一览无余,将带来巨大的损失。
(2)数据安全问题:个人的数据都有被入侵的风险,比如我们的APP可能会偷偷监视我们,我们生活中的各种智能产品虽然带来了方便,但同时也有安全隐患,如一旦家里的摄像头被入侵,就可以监视我们的生活。
(3)数字鸿沟问题:数字鸿沟是指数字化时代数据,信息的不均衡分配,如信息量,信息基础设施等等,城市远高于农村,发达地区远高于不发达的地区,就会导致穷的越穷,富的越富,加大了地区之间发展的不平衡问题使差异分化逐渐严重。
(4)数据独裁问题:数据独裁是指在大数据时代,人们必须依赖于数据的精确运算和分析才能得出结果,因此人的主观思考能力逐渐下降,开始出现以数据为中心,人开始逐渐成为数据的奴隶,盲目崇拜数据,使人的思维“空心化”,人的自主性丧失。
(5)数据垄断问题:数据时代,数据的价值十分巨大,谁拥有的数据量大,谁也就越发有竞争力,因此,特别是一些企业之间,谁也不愿意将自己的数据与他人共享,为了自己的利益和发展,垄断数据,这使得大量数据无法流通,造成了数据的浪费,信息的利用率下降。
(6)数据的真实可靠问题:防范数据失信和失真是基本的伦理挑战,如在医疗领域,若不能保证数据的准确性,或者故意报错信息,隐瞒真实数据,会给人的健康带来无可估量的危害。因此保证数据的真实可靠十分重要。
(7)人的主体地位问题:在数据满天飞的时代,万能的数据无时无刻不在冲击着我们人的主体地位,许许多多的职位因为有了大数据而不再需要人来工作,我们的生活习惯也在受到影响,大数据的推送,广告,各种信息,正将我们塑造成固化的形象,使人们失去了人格,失去了个性,魅力等等,变得单调,生活圈子越来越小。
15,请阐述什么是数据孤岛问题及产生原因。
答:数据孤岛问题就是政府,各大企业各自存储数据,各部门之间数据无法互通,导致数据像一个个孤岛一样,无法相互联系,导致数据无法发挥其充分价值。
产生的原因是因为大数据产业发展,各政府,企业掌握海量数据,但是缺乏数据共享交换协同机制使数据孤岛问题逐渐严重。
20,请阐述政府开放数据的理论基础。
答:政府开放数据的理论基础主要包括数据资产理论,数据权理论和开放政府理论。
(1)数据资产理论:大数据时代,数据已经成为重要的战略资源,也可以成为一种资产。是以经济形态存在的重要经济资源,同其他资产一样,数据资产对于企业和政府来说具有重大价值,将决定企业和政府的核心竞争力。
(2)数据权理论:数据权包括两个方面:数据主权和数据权利。数据主权的主体是国家,是一个国家独立自主对本国数据进行管理和利用的权利。数据权利的主体是公民,是相对公民数据采集义务而形成的对数据利用的权利,这种对数据的利用是建立在数据主权之下的。只有在数据主权法定框架下,公民才可自由行使数据权利。
(3)开放政府理论:开放政府是前所未有的透明政府,是能为公众信任、使公众积极参与和协作的开放系统、其中,开放是民主的良药,能提高政府的效率并保障决策的有效性。
政府 在大数据环境下,政府的开放与信息技术结合起来,并且在原有"透明政府"的基础上,增加促进政府创新、合作、参与、有效率和灵活性等因素,进一步丰富开放政府的内涵。
22,请阐述政府开放数据的重要意义。
答:有以下3点重要意义:有利于促进开放透明的政府的形成;有利于创新创业和经济增长;有利于社会治理创新。
(1)有利于促进开放透明的政府的形成:政府公开信息和数据,有利于让全体公民了解政府,使民众监督政府工作,有利于促进透明政府的形成。有助于提高政府公信力,保障公民权益,保障公民的知情权。
(2)有利于创新创业和经济增长:政府公开数据以后,企业和有能力的个人可以挖掘寻找有价值的数据进行利用和再加工,有助于创新和创业发展,利用数据所产生的价值,也将极大的促进社会经济的发展。不仅可以带来经济效益,还会增加就业岗位。
(3)有利于社会治理创新。
23,请阐述什么是大数据交易平台。
答:(1)类型:主要包括综合数据服务平台和第三方数据交易平台两种。综合数据服务平台为用户提供定制化的数据服务,由于需要涉及数据的处理加工, 第三方数据交易平台主要负责对交易过程的监管,通常可以提供数据出售、数据购买、数据供应方查询以及数据需求发布等服务。
(2)数据来源:交易平的数据来源主要包括政府公开数据、企业内部数据、数据供应方数据、网页爬虫数据等。
1.政府公开数据。政府 作为公共数据的核心生产者和拥有者,汇集了最具挖掘价值的数据资源。 对大数据交易市场的繁荣将起到重要作用。
2.企业内部数据。企业在生产经营过程中,积累了海量的数据, 这些数据经过处理加工以后,是具有重要商业价值的数据源。
3.数据供应方数据。该类型的数据一般是由数据供应方在数据交易平台上根据交易平台的规则和流程提供自己所拥有的数据。
4.网页爬虫数据。通过相关技术手段,从全球范围内的互联网网页爬取的数据。
(3)产品类型:
交易产品的类型主要有以下几种: API 、数据包、云服务、解决方案、数据定制服务以及数据产品。
1.API 。 API 是应用程序接口, 数据需求 直接通过调用接口 获得数据包。
3.云服务。云服务 通常通过互联网来提供实时的、动态的资源。
4.解决方案。在特定的情景下,利用已有的数据,为需求方提供处理问题的方案
(4)交易产品涉及的主要领域:主要包括政府,经济,教育,环境,法律,医疗,人文,地理,交通,通信,人工智能,商业,农业,工业等。
(5)平台的交易规则:平台中的交易规则是用户的行为规范,是交易安全进行的保障,是大数据对每个用户的交易过程的监管。
(6)交易平台的运营模式:大数据交易平台的运营模式主要包括两种:一种是兼具中介和数据处理加工功能的交易平台, 另一种是只具备中介功能的交易平台 仅提供纯粹的数据交易中介服务,并不提供数据存储和数据分析等服务。
28,请阐述什么是大数据交易。
答:大数据交易应当是买卖数据的活动,是以货币为交易媒介获取数据这种商品的过程,具有3种特征:一是标的物受到严格的限制,只有经过处理之后的数据才能交易;二是涉及的主体众多,包括数据提供方、数据购买方、数据平台等;三是交易过程烦琐,涉及大数据的多个产业链,如数据源的获取、数据安全的保障、数据的后续利用等。大数据交易是指利用服务器上的最新科技,对海量的、非结构数据进行分析归类,从而获取决策及最优化策略的技术。它采用如精准营销、智能投资等形式,能够给企业提供相关洞察和信息分析,从而增加企业的竞争力。
大数据交易实现了从批量处理和静态分析到实时处理和动态分析的跨越,其中一项关键技术是分布式存储技术。通过构建多节点存储架构,可以更有效地传输、存储和处理大量数据,实现企业决策的及时支撑。这种分布式存储的重要性正日益受到重视,可以更方便地处理大数据交易中的海量数据。
大数据交易实现了从批量处理和静态分析到实时处理和动态分析的跨越,其中一项关键技术是分布式存储技术。通过构建多节点存储架构,可以更有效地传输、存储和处理大量数据,实现企业决策的及时支撑。这种分布式存储的重要性正日益受到重视,可以更方便地处理大数据交易中的海量数据。
第四章作业
1.请阐述什么是长尾理论。
答:从商品的角度而言,推荐系统要比热门推荐更加有效,前者可以更好地发掘“长尾商品”。美国《连线》杂志主编ChrisAnderson于2004年提出了“长尾理论”的概念,用来描述以亚马逊为代表的电子商务网站的商业和经济模式。长尾商品代表了用户的个性化需求。
2.推荐系统的本质是建立用户与商品的联系,根据推荐算法的不同,请阐述推荐放大包括哪几类。
答:主要包括专家推荐、基于统计的推荐、基于内容的推荐、协同过滤推荐、混合推荐。
(1)专家推荐。专家推荐是传统的推荐方式,本质上是一种人工推荐,由资深的专业人士来进行商品的筛选和推荐,这需要较多的人力成本。现在专家推荐结果主要作为其他推荐算法结果的补充。
(2)基于统计的推荐。基于统计信息的推荐(如热门推荐),概念直观,易于实现,但是,对用户个性化偏好的描述能力较弱。
(3)基于内容的推荐。基于内容的推荐是信息过滤技术的延续与发展,其更多是通过机器学习的方法去描述内容的特征,并基于内容的特征来发现与之相似的内容。
(4)协同过滤推荐。协同过滤推荐是推荐系统中应用最早和最为成功的技术之一。它一般采用最近邻技术,利用用户的历史信息计算用户之间的距离,然后利用目标用户的最近邻居用户对商品的评价信息,来预测目标用户对特定商品的喜好程度,最后根据这一喜好程度来对目标用户进行推荐。
(5)混合推荐。在实际应用中,单一的推荐算法往往无法取得良好的推荐效果,因此,多数推荐系统会对多种推荐算法进行有机组合,如在协同过滤之上加入基于内容的推荐。
3.请阐述推荐系统的组成模块。
答:一个完整的推荐系统通常包括3个组成模块:用户建模模块、推荐对象建模模块、推荐算法模块。推荐系统首先对用户进行建模,根据用户行为数据和属性数据来分析用户的兴趣和需求,同时对推荐对象进行建模。,同时对推荐对象进行建模。接着,基于用户特征和商品特征,采用推荐算法计算得到用户可能感兴趣的对象,之后根据推荐场景对推荐结果进行一定程度的过滤和调整,最终将推荐结果展示给用户。
4.请阐述大数据在生物医学领域有哪些典型应用。
答:(1)流行病预测。
当用户使用移动电话进行通信时,电信运营网络会生成一个呼叫数据记录,包含主叫方和接收方、呼叫时间和处理这次呼叫的基站(能够粗略指示移动设备的位置)。通过对电信运营商提供的海量用户呼叫数据记录进行分析,就可以得到当地人口流动模式,疾病防控工作人员就可以提前判断下一个可能的疫区,从而把有限的医疗资源和相关物资进行有针对性的投放。
(2)智慧医疗。智慧医疗通过整合各类医疗信息资源,构建药品目录数据库、居民健康档案数据库、影像数据库、检验数据库、医疗人员数据库、医疗设备数据库等卫生领域的6大基础数据库,可以让医生随时查阅病人的病历、治疗措施和保险细则,随时随地快速制定诊疗方案,也可以让患者自主选择更换医生或医院,患者的转诊信息及病历可以在任意一家医院通过医疗联网方式调阅。智慧医疗具有以下3个优点。
(2.1)促进优质医疗资源的共享。智慧医疗给医疗资源分配不均匀的问题的解决指明了正确的大方向,一方面,社区医院和乡镇医院可以无缝连接到市区中心医院,实时获取专家建议、安排转诊或接受培训;另一方面,一些远程医疗器械可以实现远程医疗监护,不需要患者大老远地跑到医院,例如,无线云安全自动血压计、无线血糖仪、红外线温度计等传感器,可以实时监测患者的血压、心率、血糖含量、体温等数据,实时传输给相关医疗机构,从而使患者获得及时有效的远程治疗。
(2.2)避免患者重复检查。智慧医疗系统实现了不同医疗机构之间的信息共享,在任何医院就医时,只要输入患者身份证号码,就可以立即获得患者的所有信息,包括既往病史、检查结果、治疗记录等,几乎再也不需要在转诊时做重复检查。
(2.3)促进医疗智能化。智慧医疗系统可以对病患的生命体征、治疗化疗等信息进行实时监测,杜绝用错药、打错针等现象,系统还可以自动提醒医生和病患进行复查,提醒护士进行发药、巡查等工作。此外,系统可以利用历史累计的海量患者医疗数据,构建疾病诊断模型,根据一个新到达医院的病人的各种病症,自动诊断该病人可能患哪种疾病,从而为医生诊断提供辅助依据。
(3)生物信息学。
生物信息学是研究生物信息的采集、处理、存储、传播、分析和解释等方面的学科,也是随着生命科学和计算机科学的迅猛发展、生命科学和计算机科学相结合形成的一门新学科,它通过综合利用生物学、计算机科学和信息技术,揭示大量而复杂的生物数据所蕴含的生物学奥秘。和互联网数据相比,生物信息学领域的数据更是典型的大数据。生物数据主要是基因组学数据。生物大数据使我们可以利用先进的数据科学知识,更加深入地了解生物学过程、作物表型、疾病致病基因等。
5.请阐述智慧物流的概念与作用。
答:概念:智慧物流,是利用智能化技术,使物流系统能模仿人的智慧,具有思维、感知、学习、推理判断和自行解决物流中某些问题的能力,从而实现物流资源优化调度和有效配置、物流系统效率提升的现代化物流管理模式。
作用:智慧物流具有提高物流的信息化和智能化水平、降低物流成本和提高物流效率、提高物流活动的一体化三个重要作用。
(1)提高物流的信息化和智能化水平。物流的信息化和智能化不仅限于库存水平的确定、运输道路的选择、自动跟踪系统的控制、自动分拣系统的运行、物流配送中心的管理等问题,而且物品的信息也将存储在特定数据库中,智能物流能根据特定的情况做出智能化的决策和建议。
(2)降低物流成本和提高物流效率。由于交通运输、仓储设施、信息发布、货物包装和搬运等对信息的交互和共享要求较高,因此,可以利用物联网技术对物流车辆进行集中调度,有效提高运输效率;利用超高频RFID标签读写器实现仓储进出库管理,可以快速掌握货物的进出库情况;利用RFID标签读写器,建立智能物流分拣系统,可以有效地提高生产效率并保证系统的可靠性。
(3)提高物流活动的一体化。通过整合物联网相关技术,集成分布式仓储管理及流通渠道建设,可以实现物流中包装、装卸、运输、存储等环节全流程一体化的管理模式,以高效地向客户提供满意的物流服务。
6.请阐述大数据在城市管理领域有哪些典型应用。
答:大数据在城市管理中发挥着日益重要的作用,主要体现在智能交通、环保监测、城市规划和安防、疫情防控等领域。
(1)智能交通。
智能交通将先进的信息技术、数据通信传输技术、电子传感技术、控制技术以及计算机技术等,有效集成并运用于整个地面交通管理,同时可以利用城市实时交通信息、社交网络和天气数据来优化最新的交通情况。智能交通融合了物联网、大数据和云计算技术,其整体框架主要包括基础设施层、平台层和应用层。遍布城市各个角落的智能交通基础设施(如摄像机、感应线圈、监控视频等),每时每刻都在生成大量数据,这些数据构成了智能交通大数据。利用事先构建的模型对交通大数据进行实时分析和计算,就可以实现交通实时监控、交通智能诱导、公共车辆管理、旅行信息服务、车辆辅助控制等。,可以通过手机随时随地查询各条公交线路以及公交车当前位置,避免焦急地等待。如果自己赶时间却发现自己等待的公交车还需要很长时间才能到达,就可以选择打出租车。
(2)环保监测。
(2.1)森林监视。随着数据科学的不断发展,近年来,瞭人们开始把大数据应用于森林监视,其中,谷歌森林监视就是一项具有代表性的研究成果。谷歌森林监视系统采用谷歌搜索引擎提供时间分辨率,采用NASA和美国地质勘探局的地球资源卫星提供空间分辨率。系统利用卫星的可见光和红外数据画出某个地点的森林卫星图像。在卫星图像中,每个像素都包含了颜色和红外信号特征等信息,如果某个区域的森林被破坏,该区域对应的卫星图像像素信息就会发生变化;因此,通过跟踪监测森林卫星图像上像素信息的变化,就可以有效监测到森林变化情况。当大片森林被砍伐破坏时,系统就会自动发出警报。
(2.2)环境保护。大数据已经被广泛应用于污染监测领域,借助大数据技术,采集各项环境质量指标信息,将信息集成、整合到数据中心进行数据分析,并利用分析结果来指导制定下一步环境治理方案,可以有效提升环境整治的效果。把大数据技术应用于环境保护具有明显的优势,一方面,可以实现7×24小时的连续环境监测,另一方面,借助于大数据可视化技术,可以立体化呈现环境数据分析结果和治理模型,利用数据虚拟出真实的环境,辅助人类制定相关环保决策。
(3)城市规划。
大数据正深刻改变着城市规划的方式。对于城市规划师而言,规划工作高度依赖测绘数据、统计资料以及各种行业数据。目前,规划师可以多种渠道获得这些基础性数据,开展各种规划研究工作。。随着中国政府信息公开化进程的加快,各种政府层面的数据开始逐步对公众开放。与此同时,国内外一些数据开放组织也在致力于数据开放和共享工作。此外,数据堂等数据共享商业平台的诞生,也大大促进了数据提供者和数据消费者之间的数据交换。
(4)安防。
近年来,随着网络技术在安防领域的发展,高清摄像头在安防领域应用的不断升级,以及项目建设规模的不断扩大,安防领域积累了海量的视频监控数据,并且每天都在以惊人的速度生成大量新的数据。例如,中国的很多城市都在开展平安城市建设,在城市的各个角落布置摄像头,7×24小时不间断采集各个位置的视频监控数据,数据量之大,超乎想象。
(5)疫情防控。
疫情发生以后,全国上下步调一致,汇聚起了战“疫”硬核力量,其间大数据作用可圈可点。在疫情防控、资源调配、复工复产等方面,大数据都扮演着重要角色。
(5.1)大数据助力疫情防控。做好疫情防控工作,直接关系人民生命安全和身体健康,直接关系经济发展和社会稳定,也事关我国对外开放。在疫情防控方面,大数据表现可谓“亮眼”。 比如,疫情实时大数据报告、新冠肺炎确诊患者相同行程查询工具、发热门诊地图等,都在疫情防控中发挥了明显效用。
(5.2)大数据精准资源调配。因为新冠肺炎的传播,各地对医疗物资、生活物资等多维度资源需求短时间内激增。借助高价值数据,可以最大限度利用资源,实现系统谋划、顶层设计、动态调整。比如,“国家重点医疗物资保障调度平台”对医用防护服、口罩、护目镜、药品等重点医疗物资实施在线监测,全力保障重点医疗防控物资生产供应。
(5.3)大数据护航复工复产。疫情防控不能松懈,复工复产同样不能迟缓。推动企业复工复产,既是打赢疫情防控阻击战的实际需要,也是社会稳定运转的重要保证。随着复工复产的全力推进,多地依托疫情防控大数据平台,推出了居民健康登记系统和企业员工健康登记系统,实现了疫情防控的智能动态化监管。大数据发力,在为居民日常生活提供便利的同时,也形成了无遗漏、全覆盖、科学便捷的管控体系。
第五章作业
2.请阐述数据采集的三大要点。
答:数据采集的三大要点是全面性,多维性,高效性。
(1)全面性。全面性是指数据量足够具有分析价值、数据面足够支撑分析需求。
(2)多维性。数据更重要的是能满足分析需求。数据采集必须能够灵活、快速自定义数据的多种属性和不同类型,从而满足不同的分析目标要求。
(3)高效性。高效性包含技术执行的高效性、团队内部成员协同的高效性,以及数据分析需求和目标实现的高效性。
4.请阐述典型的数据采集方法有哪些。
答:数据采集方法包括系统日志采集、分布式消息订阅分发、ETL、网络数据采集等。
1.系统日志采集
Flume是Cloudera公司提供的一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的工具Flume运行的核心是Agent。Flume以Agent为最小的独立运行单位。
每个组件的具体功能:
(1)数据源是数据的收集端,负责将数据捕获后进行特殊的格式化处理,将数据封装到事件黛、然后将事件推入数据通道。
(2)数据通道是连接数据源和数据槽的组件,它可以将事件暂存到内存,也可以持久化保存到本地磁盘上,直到数据槽处理完该事件。
(3)数据槽取出数据通道中的数据,存储到文件系统和数据库,或者提交到远程服务器。
2.分布式消息订阅分发
分布式消息订阅分发也是一种常见的数据采集方式,其中,Kafka 就是一种具有代表性的产品。Kafka是由LinkedIn公司开发的一种高吞吐量的分布式发布/订阅消息系统。用户通过Kafka系统可以发布大量的消息,同时也能实时订阅消费消息。
(1)话题(Topic):特定类型的消息流。
(2)生产者(Producer):能够发布消息到话题的任何对象
(3)服务代理(Broker):保存已发布的消息的服务器,被称为代理或Kafka集群。
(4)消费者(Consumer):可以订阅一个或多个话题,并从服务代理拉数据,从而“消费”这些已发布的消息。
生产者将数据发送到服务代理,服务代理有多个话题,消费者从服务代理获取数据。
- ETL
ETL常用于数据仓库中的数据采集和预处理环节。顾名思义,ETL从原系统中抽取数据,并根据实际商务需求对数据进行转换,把转换结果加载到目标数据存储中。
4.网络数据采集
网络数据采集是指通过网络爬虫或网站公开应用程序编程接口等方式从网站上获取数据信息。该方法可以将非结构化数据从网页中抽取出来,将其存储为统一的本地数据文件,并以结构化的方式存储。
5.请阐述什么是网络爬虫。
答:网络爬虫是自动抓取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成部分。
网络爬虫的组成:
网络爬虫由控制节点、爬虫节点和资源库构成。网络爬虫中可以有多个控制节点,每个控制节点下可以有多个爬虫节点,控制节点可以互相通信。同时,控制节点和其下的各爬虫节点也可以互相通信,属于同一个控制节点的各爬虫节点亦可以互相通信。
7.请阐述网络爬虫的类型。
答:网络爬虫可以分为通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫4种类型.
(1)通用网络爬虫。通用网络爬虫又称“全网爬虫”,抓取对象从一些种子URL扩充到整个Web,该类爬虫主要为门户站点搜索引擎和大型Web服务提供商采集数据、为提高工作效率,通用网络爬虫会采取一定的抓取策略。常用的抓取策略有:深度优先策略和广度优先策略等。 横向优先 (宽度优先)
(2)聚焦网络爬虫。聚焦网络爬虫,又称“主题网络爬虫”是指选择性地抓取那些与预先定义好的主题相关的页面的网络爬虫。
(3)增量式网络爬虫。增量式网络爬虫是指对已下载页面采取增量式更新和只抓取新产生的或者已经发生变化页面的爬虫,它能够在一定程度上保证所抓取的页面是尽可能新的页面。
(4)深层网络爬虫。深层网络爬虫将Web页面按存在方式分为表层网页和深层网页表层网页是指传统搜索引擎可以索引的、超链接可以到达的静态网页。深层网页是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的Web页面。
Scrapy 爬虫:
Scrapy是一套基于Twisted的异步处理框架,是纯Python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松地实现一个爬虫,可用来抓取网页内容或者各种图片。
9.请阐述数据清洗的主要内容。
答:数据清洗的主要内容有缺失值处理,异常值处理,数据类型转换,重复值处理。
1.缺失值处理
由于调查、编码和录入误差,数据中可能存在一些缺失值,需要给予适当的处理。常用的处理方法有:估算、整列删除、变量删除和成对删除。
①估算:最简单的办法就是用某个变量的样本均值、中位数或众数代替缺失值。这种办法简单,但没有充分考虑数据中已有的信息,误差可能较大。另一种办法就是根据调查对象对其他问题的回答,对变量之间的相关分析或逻辑推论进行估计。
②整列删除:剔除含有缺失值的样本。整列删除只适合关键变量缺失,或者含有异常值或缺失值的样本比重很小的情况。
③变量删除:如果某一变量的缺失值很多,则可以考虑将该变量删除。这种做法减少了供分析用的变量数目,但没有改变样本量。
④成对删除:这是一种保守的处理方法,最大限度地保留了数据集中的可用信息。
2.异常值处理
异常值处理是指根据每个变量的合理取值范围和相互关系,检查数据是否合乎要求,发现超出正常范围、逻辑上不合理或者相互矛盾的数据。发现矛盾时,要列出问卷序号、记录序号、变量名称、错误类别等,便于进一步核对和纠正。
3.数据类型转换
数据类型往往会影响到后续的数据处理分析环节,因此,需要明确每个字段的数据类型。
4.重复值处理
重复的存在会影响数据分析和挖掘结果的准确性,所以,在数据分析和建模之前需要进行数据重复性检验,如果存在重复值,还需要删除重复值。
11.请阐述数据转换包括哪些策略。
答: 常见的数据转换策略有平滑处理,聚集处理,数据泛化处理,规范化处理,属性构造处理。
(1)平滑处理。帮助除去数据中的噪声。常用的方法包括分箱、回归和聚类。
(2)聚集处理:对数据进行汇总操作。常用于构造数据立方体或对数据进行多粒度的分析。
(3)数据泛化处理:用更抽象的概念来取代低层次的数据对象。
(4)规范化处理:将属性值按比例缩放,使之落入一个特定的区间。
(5)属性构造处理:根据已有属性集构造新的属性,后续数据处理直接使用新增的属性
12.请阐述数据规范化包含哪些方法。
答:常用的规范化处理方法包括 Min - Max 规范化、 Z - Score 规范化和小数定标规范化。
1.Min- Max 规范化
Min - Max 规范化方法对被转换数据进行一种线性转换 转换公式:
x =(待转换属性值﹣属性最小值)/(属性最大值﹣属性最小值)
- Z - Score 规范化
Z - Score 规范化的主要目的是将不同量级的数据统一转化为同一个量级的数据,统一用计算出的 Z - Score 值衡量,以保证数据之间的可比性。其转换公式:
z =(待转换属性值﹣属性平均值)/属性标准差
3.小数定标规范化
小数定标规范化通过移动属性值的小数位置来达到规范化的目的。所移动的小数位数取决于属性绝对值的最大值。其转换公式:
x =待转换属性值/10k
k 为能够使该属性绝对值的最大值的转换结果小于1的最小值。
13.请阐述数据脱敏的原则。
答:数据脱敏的原则有保持原有数据特征,保持数据之间的一致性,保持业务规则的关联性,多次脱敏数据之间的数据一致性。
(1)保持原有数据特征。数据脱敏前后必须保持原有数据特征。
(2)保持数据之间的一致性。在不同业务中,数据和数据之间具有一定的关联性。
(3)保持业务规则的关联性。保持数据业务规则的关联性是指数据脱敏时数据关联性和业务语义等保持不变.
(4)多次脱敏数据之间的数据一致性。对相同的数据进行多次脱敏,或者在不同的测试系统进行脱敏,需要确保每次脱敏的数据保持一致性,只有这样才能保障业务系统数据变更的持续一致性和广义业务的持续一致性。
第六章作业
3.试述数据仓库有哪些特性。
答:数据仓库有4个特性,分别是面向主题,集成,相对稳定,反映历史变化。
(1)面向主题。数据仓库中的数据按照一定的主题域进行组织。一个主题通常与多个操作型信息系统相关。
(2)集成。将数据从原来的数据中抽取出来,进行加工与集成、统一与综合之后才能进入数据仓库。
(3)相对稳定。数据仓库是不可更新的。
(4)反映历史变化。在构建数据仓库时,会每隔一定的时间从数据源抽取数据并加载到数据仓库。
4.试述Hadoop生态系统对其每个部分的具体功能。
答:Hadoop很多个生态系统,比如:HDFS,HBase,MapReduce,Hive,Pig,Mahout,Zookeeper,Flume,Sqoop,Ambari
1.HDFS
Hadoop分布式文件系统是针对谷歌文件系统的开源实现。对于超大数据集的应用程序而言,HDFS作为底层数据存储系统是较好的选择。
2.HBase
HBase是一个提供高可靠性、高性能、可伸缩、实时读写、分布式的列式数据库,具有良好的横向扩展能力,可以通过不断增加廉价的商用服务器来提高存储能力。
3. MapReduce
Hadoop MapReduce是针对谷歌MapReduce的开源实现。它把输入的数据集切分为若干独立的小数据块,分发给一个主节点管理下的各个分节点来共同并行完成。最后,通过整合各个节点的中间结果得到最终结果。
4. Hive
Hive是一个基于Hadoop的数据仓库工具,可以通过HiveQL语句快速实现简单的MapReduce任务,Hive自身可以将HiveQL语句转换为MapReduce任务运行.
5. Pig
Pig是一种数据流语言和运行环境,适合于使用Hadoop和MapReduce平台来查询大型半结构化数据集。采用Pig要比MapReduce具有明显的优势,前者只需要编写一个简单的脚本在集群中自动并行处理与分发,后者则需要编写一个单独的MapReduce应用程序。
6. Mahout
Mahout是Apache软件基金会旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现.
7. ZooKeeper
ZooKeeper是针对谷歌Chubby的一个开源实现,是高效和可靠的协同工作系统,提供分布式锁之类的基本服务用于构建分布式应用…
8. Flume
Flume是Cloudera提供的一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输系统。用于收集数据;同时,Flume提供对数据进行简单处理并写到各种数据接收方的能力。
9. Sqoop
Sqoop是SQL-to-Hadoop的缩写,主要用来在Hadoop和关系数据库之间交换数据,可以改进数据的互操作性
10. Ambari
Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的安装、部署、配置和管理.
6.试述HDFS的设计要实现哪些目标。
HDFS要实现5个目标,分别是兼容廉价的硬件设备,流数据读写,大数据集,简单的文件模型,强大的跨平台兼容性
(1)兼容廉价的硬件设备。HDFS设计了快速检测硬件故障和进行自动恢复的机制,可以实现持续监视、错误检查、容错处理和自动恢复.
(2)流数据读写。HDFS满足批量数据处理的要求而设计的,提高了数据吞吐率
(3)大数据集。HDFS中的文件通常可以达到GB甚至TB级别,一个数百台服务器组成的集群可以支持千万级别这样的文件。
(4)简单的文件模型。HDFS采用了“一次写入、多次读取”的简单文件模型,文件一旦完成写入,关闭后就无法再次写入,只能被读取。
(5)强大的跨平台兼容性。HDFS是采用Java实现的,具有很好的跨平台兼容性。
8.试述键值数据库,列族数据库,文档数据库,图数据库的适用场合和优缺点。
1.键值数据库:具有良好的伸缩性,理论上几乎可以实现数据量的无限扩容。
优点:扩展性好、灵活性好,进行大量写操作时性能高
缺点:无法存储结构化信息、条件查询效率较低
2.列族数据库适用场所:分布式数据存储与管理
优点:查找速度快、可扩展性强、容易进行分布式扩展、复杂性低
缺点:功能较少,大多不支持强事务一致性
3.文档数据库适用场所:存储、索引并管理面向文档的数据或者类似的半结构化数据
优点:性能好、灵活性高、复杂性低、数据结构灵活
缺点:缺乏统一的查询语法
4.图数据库适用场所:可用于大量复杂、互连接、低结构化的图结构场合,如社交网络、推荐系统等
优点:灵活性高、支持复杂的图算法、可用于构建复杂的关系图谱
缺点:复杂性高、只能支持一定的数据规模
9.试述云数据库的概念和特性。
概念:云数据库是部署在云计算环境中的虚拟化数据库。云数据库是在云计算的大背景下发展起来的一种新兴的共享基础架构的数据库客户端不需要了解云数据库的底层细节,所有的底层硬件都已经被虚拟化,对客户端而言是透明的。客户端就像在使用一个运行在单一服务器上的数据库一样,非常方便、容易,同时可以获得理论上近乎无限的存储和处理能力。
特性:
动态可扩展,高可用性,较低的使用代价,易用性,高性能,免维护,安全
(1)动态可扩展。云数据库具有无限可扩展性,可以满足不断增加的数据存储需求。在面对不断变化的条件时,云数据库可以表现出很好的弹性。
(2)高可用性。云数据库不存在单点失效问题。如果一个节点失效了,剩余的节点就会接管未完成的事务。
(3)较低的使用代价。云数据库同时为多个用户提供服务,共享资源的形式对于用户而言可以节省开销,云数据库底层存储通常采用大量廉价的商业服务器,这大大降低了开销。
(4)易用性。使用云数据库的用户不必控制运行原始数据库的机器,也不必了解它身在何处。
(5)高性能。云数据库采用大型分布式存储服务集群,支撑海量数据访问,多机房自动冗余备份,自动读写分离。
(6)免维护。用户不需要关注后端机器及数据库的稳定性、网络问题、机房灾难、单库压力等各种风险,
(7)安全。云数据库提供数据隔离,不同应用的数据会存在于不同的数据库中而不会相互影响;提供安全性检查,可以及时发现并拒绝恶意攻击性访问;提供数据多点备份,确保不会发生数据丢失。
13.试述在Haddoop体系架构中HBase与其他组成部分的相互关系。
答: HBase利用Hadoop MapReduce来处理HBase中的海量数据,实现高性能计算;利用ZooKeeper作为协同服务,实现稳定服务和失败恢复;使用HDFS作为高可靠的底层数据存储系统,利用廉价集群提供海量数据存储能力。当然,HBase也可以直接使用本地文件系统而不用HDFS作为底层数据存储系统。不过,为了提高数据可靠性和系统的健壮性,发挥HBase处理大数据量等功能,一般都使用HDFS作为HBase的底层数据存储系统。此外,为了方便在HBase上进行数据处理,Sqoop为HBase提供了高效、便捷的关系数据库管理系统数据导入功能,Pig和Hive为HBase提供了高层语言支持。
16.试述HBase的系统架构及其每个组件的功能。
答: HBase的系统架构包括客户端、ZooKeeper服务器、Master主服务器、Region服务器。
根据行键的值对表中的行进行分区,每个行区间构成一个分区,被称为“Region”,包含了位于某个值域的所有数据,它是负载均衡和数据分发的基本单位,这些Region会被分发到不同的Region服务器上。
客户端包含访问HBase的接口,同时在缓存中维护着已经访问过的Region位置信息,用来加快后续数据访问过程。HBase客户端使用HBase的RPC机制与Master和Region服务器进行通信。其中,对于管理类操作,客户端与Master进行RPC;而对于数据读写类操作,客户端会与Region服务器进行RPC。
在HBase服务器集群中,包含了一个Master和多个Region服务器。Master主要负责表和Region的管理工作,Region服务器负责维护分配给自己的Region,并响应用户的读写请求。Master必须知道Region服务器的状态。ZooKeeper就可以轻松做到这一点,每个Region服务器都需要到ZooKeeper中进行注册,ZooKeeper会实时监控每个Region服务器的状态并通知Master,这样,Master就可以通过ZooKeeper随时感知到各个Region服务器的工作状态。
17.试述Spanner服务器的组织方式。
答:一个Zone包括一个Zonemaster和一百至几千个Spanserver。Zonemaster把数据分配给Spanserver,Spanserver把数据提供给客户端。客户端使用每个Zone上面的Locationproxy来定位可以为自己提供数据的Spanserver。Universemaster是一个控制台,它显示了关于Zone的各种状态信息,可以用于相互之间的调试。Placementdriver会周期性地与Spanserver进行交互,来发现那些需要被转移的数据,或者是为了满足新的副本约束条件,或者是为了进行负载均衡。
第七章 作业
3.试述常见的机器学和数据挖掘的关系
答:
数据挖掘是指从大量的数据中通过算法搜索隐藏于其中的信息的过程。数据挖掘可以视为机器学习与数据库的交叉,它主要利用机器学习界提供的算法来分析海量数据,利用数据库界提供的存储技术来管理海量数据。
虽然数据挖掘的很多技术都来自机器学习领域,但是,我们并不能因此就认为数据挖掘只是机器学习的简单应用。毕竟,机器学习通常只研究小规模的数据对象,往往无法应用到海量数据,数据挖掘领域必须借助于海量数据管理技术对数据进行存储和处理,同时对一些传统的机器学习算法进行改进,使其能够支持海量数据的情形。
典型的机器学习和数据挖掘算法包括分类、聚类、回归分析和关联规则和协同过滤。
(1)分类。分类是指找出数据库中的一组数据对象的共同特点,并按照分类模式将其划分为不同的类。
(2)聚类。聚类类似于分类,但与分类的目的不同,是针对数据的相似性和差异性将一组数据分为几个类别。属于同一类别的数据之间的相似性很大,但不同类别之间数据的相似性很小,跨类的数据关联性很低。
(3)回归分析。回归分析反映了数据库中数据的属性值的特性,通过函数表达数据映射的关系来发现属性值之间的依赖关系。
售趋势做出预测并做出针对性的营销改变。
(4)关联规则。关联规则是隐藏在数据项之间的关联或相互关系,即可以根据一个数据项的出现推导出其他数据项的出现。
(5)协同过滤。简单来说协同过滤就是利用兴趣相投、拥有共同经验的群体的喜好,来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应并记录下来,以达到过滤的目的,进而帮助别人筛选信息。
5.试述典型的大数据处理与分析技术有哪几种类型,并给出代表性作品。
答:大数据处理与分析技术有四大类型,即批处理计算、流计算、图计算和查询分析计算。
(1)批处理计算:MapReduce,Spark
(2)流计算:DStream,银河流数据处理平台
(3)图计算:GraphX,PowerGraph
(4)查询分析计算:Dremel,实时查询引擎Impala
6.试述流计算的概念及其处理流程。
答:流计算平台实时获取来自不同数据源的海量数据,经过实时分析处理,获得有价值的信息。
总的来说,流计算秉承一个基本理念,即数据的价值随着时间的流逝而降低。因此,当事件出现时就应该立即进行处理,而不是缓存起来进行批量处理。为了及时处理流数据,需要一个低延迟、可扩展、高可靠的处理引擎。
流计算秉承一个基本理念,即数据的价值随着时间的流逝而降低。因此,当事件出现时就应该立即进行处理,而不是缓存起来进行批量处理。为了及时处理流数据,需要一个低延迟、可扩展、高可靠的处理引擎。对于一个流计算系统来说,它应达到如下需求。
(1)高性能。处理大数据的基本要求,如每秒处理几十万条数据。
(2)海量式。支持TB级甚至是PB级的数据规模。
(3)实时性。必须保证一个较低的延迟时间,达到秒级别,甚至是毫秒级别。
(4)分布式。支持大数据的基本架构,必须能够平滑扩展。
(5)易用性。能快速进行开发和部署。
(6)可靠性。能可靠地处理流数据。
流计算的处理流程:
流计算处理流程包括数据实时采集、数据实时计算和实时查询服务。
传统的数据处理流程需要先采集数据并存储在关系数据库等数据管理系统中,之后用户便可以通过查询操作和数据管理系统进行交互,最终得到查询结果。但是,这样一个流程隐含了两个前提。
①存储的数据是旧的。当查询数据的时候,存储的静态数据已经是过去某一时刻的快照,这些数据在查询时可能已不具备时效性了。
②需要用户主动发出查询。也就是说,用户是主动发出查询来获取结果的。
流计算的数据处理流程一般包含3个阶段:数据实时采集、数据实时计算、实时查询服务。
(1)数据实时采集
数据实时采集阶段通常采集多个数据源的海量数据,需要保证实时性、低延迟与稳定可靠。以日志数据为例,由于分布式集群的广泛应用,数据分散存储在不同的机器上,因此需要实时汇总来自不同机器的日志数据。
(2)数据实时计算
数据实时计算阶段对采集的数据进行实时的分析和计算。数据实时计算的流程如图7-5所示,流处理系统接收数据采集系统不断发来的实时数据,实时地进行分析计算,并反馈实时结果。经流处理系统处理后的数据,可视情况进行存储,以便之后进行分析计算。在时效性要求较高的场景中,处理之后的数据也可以直接丢弃。
(3)实时查询服务
流计算的第3个阶段是实时查询服务,经由流计算框架得出的结果可供用户进行实时查询、展示或存储。在传统的数据处理流程中,用户需要主动发出查询才能获得想要的结果。而在流处理流程中,实时查询服务可以不断更新结果,并将用户所需的结果实时推送给用户。虽然通过对传统的数据处理系统进行定时查询也可以实现不断更新结果和结果推送,但通过这样的方式获取的结果仍然是根据过去某一时刻的数据得到的结果,与实时结果有着本质的区别。
由此可见,流处理系统与传统的数据处理系统有如下不同之处。
①流处理系统处理的是实时的数据,而传统的数据处理系统处理的是预先存储好的静态数据。
②用户通过流处理系统获取的是实时结果,而通过传统的数据处理系统获取的是过去某一时刻的结果。并且,流处理系统无须用户主动发出查询,实时查询服务可以主动将实时结果推送给用户。
(3)实时查询服务
流计算框架得出的结果可供用户进行实时查询、展示或存储。在传统的数据处理流程中,用户需要主动发出查询才能获得想要的结果。而在流处理流程中,实时查询服务可以不断更新结果,并将用户所需的结果实时推送给用户。虽然通过对传统的数据处理系统进行定时查询也可以实现不断更新结果和结果推送,但通过这样的方式获取的结果仍然是根据过去某一时刻的数据得到的结果,与实时结果有着本质的区别。
8.试述MapReduce的工作流程和不足之处。
答:
MapReduce工作流程:
MapReduce的核心思想可以用“分而治之”来描述,把一个大的数据集拆分成多个小数据块在多台机器上并行处理。也就是说,一个大的MapReduce作业,首先会被拆分成许多个Map任务在多台机器上并行执行,每个Map任务通常运行在数据存储的节点上。这样计算和数据就可以放在一起运行,不需要额外的数据传输开销。当Map任务结束后,会生成以<key,value>形式表示的许多中间结果。然后,这些中间结果会被分发到多个Reduce任务在多台机器上并行执行,具有相同key的<key,value>会被发送到同一个Reduce任务,Reduce任务会对中间结果进行汇总计算得到最后结果,并输出到分布式文件系统。
MapReduce的不足之处:
(1)表达能力有限。计算都必须要转化成Map和Reduce两种操作,但这并不适合所有的情况,难以描述复杂的数据处理过程。
(2)磁盘IO开销大。每次执行时都需要从磁盘读取数据,并且在计算完成后需要将中间结果写入磁盘中,IO开销较大。
(3)延迟高。一次计算可能需要分解成一系列按顺序执行的MapReduce任务,任务之间的衔接由于涉及IO开销,会产生较高延迟。而且,在前一个任务执行完成之前,其他任务无法开始,因此难以胜任复杂、多阶段的计算任务。
由于MapReduce是基于磁盘的分布式计算框架,因此,性能方面要逊色于基于内存的分布式计算框架(如Spark和Flink等)。所以,随着Spark和Flink的发展,MapReduce的市场空间逐渐被挤压,地位也逐渐被边缘化。
12.试述对分布式计算框架Spark的理解。
答:1.简介:
Spark最初由美国加州大学伯克利分校的AMP实验室于2009年开发,是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。 Spark作为大数据计算平台的后起之秀, Spark仅使用了约十分之一的计算资源,获得了约比Hadoop快3倍的速度。表明了Spark可以作为一个更加快速、高效的大数据计算框架。
Spark具有如下4个主要特点。
(1)运行速度快。Spark使用先进的有向无环图执行引擎,以支持循环数据流与内存计算,基于内存的执行速度可比Hadoop MapReduce快上百倍,基于磁盘的执行速度也能快十倍左右。
(2)容易使用。Spark支持使用Scala、Java、Python和R进行编程,简洁的API设计有助于用户轻松构建并行程序,并且可以通过Spark Shell进行交互式编程。
(3)通用性强。Spark提供了完整而强大的技术栈,包括SQL查询、流式计算、机器学习和图算法组件,这些组件可以无缝整合在同一个应用中,足以应对复杂的计算。
(4)运行模式多样。Spark可运行于独立的集群模式中,或者运行于Hadoop中,也可运行于Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源。
2.Spark相对于MapReduce的优点:
Spark在借鉴Hadoop MapReduce优点的同时,很好地解决了MapReduce所面临的问题。相比于MapReduce,Spark主要具有以下优点。
(1)Spark的计算模式也属于MapReduce,但不局限于Map和Reduce,还提供了多种数据集操作类型,编程模型比MapReduce更灵活。
(2)Spark提供了内存计算,中间结果直接放到内存中,带来了更高的迭代运算效率。
(3)Spark基于DAG的任务调度执行机制,要优于MapReduce的迭代执行机制。
Spark最大的特点就是将计算数据、中间结果都存储在内存中,大大减少了IO开销,因而Spark更适合于迭代运算比较多的数据挖掘与机器学习运算。
使用MapReduce进行迭代计算非常耗资源,因为每次迭代计算都需要从磁盘中写入、读取中间数据,IO开销大。而Spark将数据载入内存后,之后的迭代计算都可以直接使用内存中的中间结果作运算,避免了从磁盘中频繁读取数据。
在实际进行开发时,使用MapReduce需要编写不少相对底层的代码,不够高效。相对而言,Spark提供了多种高层次、简洁的API。通常情况下,对于实现相同功能的应用程序,MapReduce的代码量要比Spark多2~5倍。更重要的是,Spark提供了实时交互式编程反馈,可以方便地验证、调整算法。
3. Spark与Hadoop的关系
Spark 正以其结构一体化、功能多元化的优势,逐渐成为当今大数据领域最热门的大数据计算框架。目前,越来越多的企业放弃MapReduce,转而使用Spark开发企业应用。但是,需要指出的是,Spark作为计算框架,只能解决数据计算问题,无法解决数据存储问题,Spark只是取代了Hadoop生态系统中的计算框架MapReduce,而Hadoop中的其他组件依然在企业大数据系统中发挥着重要的作用。在许多企业实际应用中,Hadoop和Spark的统一部署是一种比较现实合理的选择。由于MapReduce、Storm和Spark等,都可以运行在资源管理框架YARN之上,因此,可以在YARN上统一部署各个计算框架。这些不同的计算框架统一运行在YARN中,可以带来如下好处。
(1)计算资源按需伸缩。
(2)不同负载应用混搭,集群利用率高。
(3)共享底层存储,避免数据跨集群迁移。
4.Spark生态系统:
在实际应用中,大数据处理主要包括以下3个情景。
(1)复杂的批量数据处理:时间跨度通常在数十分钟到数小时。
(2)基于历史数据的交互式查询:时间跨度通常在数十秒到数分钟。
(3)基于实时数据流的数据处理:时间跨度通常在数百毫秒到数秒。
Spark的设计遵循“一个软件栈满足不同应用场景”的理念,逐渐形成了一套完整的生态系统,既能够提供内存计算框架,也可以支持SQL即席查询、实时流式计算、机器学习和图计算等。Spark可以部署在资源管理器YARN之上,提供一站式的大数据解决方案。 Spark生态系统主要包含了Spark Core、Spark SQL、Spark Streaming、Structured Streaming、MLlib和GraphX等组件,各个组件的具体功能如下。
(1)Spark Core:Spark Core 包含Spark最基础和最核心的功能,如内存计算、任务调度、部署模式、故障恢复、存储管理等,主要面向批数据处理。
(3)Spark SQL:Spark SQL是Spark中用于结构化数据处理的组件,提供了一种通用的访问多种数据源的方式。 (3)Spark Streaming:Spark Streaming是一种流计算框架,可以支持高吞吐量、可容错处理的实时流数据处理。 (4)Structured Streaming:Structured Streaming是一种基于Spark SQL引擎构建的、可扩展且容错的流处理引擎。通过一致的API,Structured Streaming使得使用者可以像编写批处理程序一样编写流处理程序,降低了使用者的使用难度。
(5)MLlib(机器学习):MLlib提供了常用机器学习算法的实现,包括聚类、分类、回归、协同过滤等,降低了机器学习的门槛,开发者只要具备一定的理论知识就能进行机器学习的工作。
(6)GraphX(图计算):GraphX是Spark中用于图计算的API,可认为是Pregel在Spark上的重写及优化。
5.Spark运行架构:
Spark运行架构包括集群管理器、运行作业任务的工作节点、每个应用的任务控制节点和每个工作节点上负责具体任务的执行进程。其中,集群管理器可以是Spark自带的资源管理器,也可以是YARN或Mesos等资源管理框架。可以看出,就系统架构而言,Spark采用“主从架构”,包含一个Master(即Driver)和若干个Worker。
与Hadoop MapReduce计算框架相比,Spark所采用的Executor有两个优点。一是利用多线程来执行具体的任务(Hadoop MapReduce采用的是进程模型),减少任务的启动开销。二是Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为存储设备(默认使用内存,当内存不够时,会写到磁盘),当需要多轮迭代计算时,可以将中间结果存储到这个存储模块里,下次需要时,就可以直接读该存储模块里的数据,而不需要读写到HDFS等文件系统里,从而有效减少IO开销。
6.Spark的数据抽象RDD
RDD典型的执行过程如下:
(1)RDD读入外部数据源(或者内存中的集合)进行创建。
(2)RDD经过一系列的转换操作,每一次都会产生不同的RDD,供给下一个转换操作使用。
(3)最后一个RDD经行动操作进行处理,并输出到外部数据源(或者变成Scala集合或标量)。
7.Spark的部署方式:
目前,Spark支持5种不同类型的部署方式,包括Local、Standalone、Spark on Mesos、Sparkon YARN和Spark on Kubernetes。其中,Local模式属于单机部署模式,其他属于分布式部署模式, 具体如下。
(1)Standalone模式。属于分布式部署模式。
(2)Spark on Mesos模式。属于分布式部署模式。 (3)Spark on YARN模式,属于分布式部署模式。Spark可运行于YARN之上,与Hadoop进行统一部署,即“Spark on YARN”,资源管理和调度依赖于YARN,分布式存储则依赖于HDFS。
(4)Spark on Kubernetes模式,属于分布式部署模式。
8. Spark SQL
(1)从Shark说起
Hive是一个基于Hadoop的数据仓库工具,提供了类似于关系数据库SQL的查询语言——HiveQL。Shark提供了类似Hive的功能,与Hive不同的是,Shark把SQL语句转换成Spark作业,而不是MapReduce作业。为了实现与Hive兼容,Shark重用了Hive中的HiveQL解析、逻辑查询计划翻译、执行计划优化等逻辑(见图7-18)。可以近似认为,Shark仅将物理执行计划从MapReduce作业替换成了Spark作业,也就是通过Hive的HiveQL解析功能,把HiveQL翻译成Spark上的RDD。Shark的出现,使得SQL-on-Hadoop的性能比Hive有了10~100倍的提高。
(2)Spark SQL架构
Spark SQL增加了DataFrame(即带有Schema信息的RDD),使用户可以在Spark SQL中执行SQI语句,数据既可以来自RDD,也可以来自HDFS、Hive、Cassandra等外部数据源,数据格式既可以是HDFS、Hive、Cassandra,也可以是JSON格式。Spark。
(7)为什么推出Spark SQL
尽管数据库的事务和查询机制较好地满足了银行、电信等各类商业公司的业务数据管理需求,但是,关系数据库在大数据时代已经不能满足各种新增的用户需求。首先,用户需要从不同数据源执行各种操作,包括结构化和非结构化数据;其次,用户需要执行高级分析,比如机器学习和图像处理。在实际大数据应用中,经常需要融合关系查询和复杂分析算法(如机器学习或图像处理),但是,一直以来都缺少这样的系统。
9. Spark Streaming
Spark Streaming是构建在Spark上的实时计算框架,它扩展了Spark处理大规模流式数据的能力。Spark Streaming可结合批处理和交互查询,适合一些需要对历史数据和实时数据结合分析的应用场景。 Spark Streaming是Spark的核心组件之一,为Spark提供了可拓展、高吞吐量、容错的流计算能力。Spark Streaming实际上以一系列微小批处理来模拟流计算。Spark Streaming的基本原理是将实时输入数据流以时间片(秒级)为单位进行拆分,然后经Spark引擎以类似批处理的方式处理每个时间片数据。 10. Structured Streaming
(1)简介: Structured Streaming是一种基于Spark SQL引擎构建的、可扩展且容错的流处理引擎。提供端到端的完全一致性是Structured Streaming设计背后的关键同标之一。为了实现这一点,Spark设计了输入源、执行引擎和接收器,以便对处理的进度进行更可靠的跟踪,使之可以通过重启或重新处理,来处理任何类型的故障。
(2)Structured Streaming的关键思想 (无界表)
Structured Streaming的关键思想是将实时数据流视为一张正在不断添加数据的表,这种新的流处理模型与批处理模型非常类似。输入流输入的每一项数据项被原样添加到无界表,最终形成了一个新的无界表。
在无界表上对输入的查询将生成结果表,系统每隔一定的周期会触发对无界表的计算并更新结果表。
(3)Structured Streaming的两种处理模型
Structured Streaming包括微批处理和持续处理两种处理模型,默认使用微批处理模型。
①微批处理。
Structured Streaming默认使用微批处理执行模型,这意味着Spark流计算引擎会定期检查流数据源,并对上一批次结束后到达的新数据执行批量查询。
而Structured Streaming可以处理结构化的数据流。Spark Streaming只能实现秒级的实时响应,而Structured Streaming由于采用了全新的设计方式,采用微批处理模型时可以实现100ms级别的实时响应,采用持续处理模型时可以实现毫秒级的实时响应。
11.Spark MLlib
MLlib是Spark的机器学习库,旨在简化机器学习的工程实践,MLlib提供了主要的机器学习算法,分类、回归、聚类、关联规则、推荐、优化、算法的评估等。MLlib主要包括以下几方面的内容。
算法工具:常用的学习算法,如分类、回归、聚类和协同过滤。
特征化工具:特征抽取、转化、降维和选择工具。
流水线(Pipeline):用于构建、评估和调整机器学习工作流的工具。
持久性:保存和加载算法、模型和管道。
实用工具:线性代数、统计、数据处理等工具.
19.请将Structured Streaming 和 Spark SQL Spark Streaming进行对比分析。
答:Spark SQL在Shark原有的架构基础上重写了逻辑执行计划的优化部分,解决了Shark存在的问题。Spark SQL可以提供DataFrame API,可以对内部和外部各种数据源执行各种关系操作;其次,可以支持大量的数据源和数据分析算法,组合使用Spark SQL和Spark MLlib,可以融合传统关系数据库的结构化数据管理能力和机器学习算法的数据处理能力,有效满足各种复杂的应用需求。
Spark Streaming是构建在Spark上的实时计算框架,它扩展了Spark处理大规模流式数据的能力。Spark Streaming可结合批处理和交互查询,适合一些需要对历史数据和实时数据结合分析的应用场景。
Spark Streaming是Spark的核心组件之一,为Spark提供了可拓展、高吞吐量、容错的流计算能力。Spark Streaming可整合多种输入数据源。在Spark Streaming中,会有一个组件Receiver,作为一个长期运行的任务(Task)运行在一个Executor上,每个Receiver组件都会负责一个DStream输入流(如从文件中读取数据的文件流、套接字流,或者从Kafka 中读取的一个输入流等)。Receiver组件接收到数据源发来的数据后,会提交给Spark Streaming程序进行处理。处理后的结果,可以交给可视化组件进行可视化展示,也可以写入HDFS、HBase中。
Structured Streaming是一种基于Spark SQL引擎构建的、可扩展且容错的流处理引擎。通过一致的API,Structured Streaming使得使用者可以像编写批处理程序一样编写流处理程序,降低了使用者的使用难度。提供端到端的完全一致性是Structured Streaming设计背后的关键目标之一。Structured Streaming的关键思想是将实时数据流视为一张正在不断添加数据的表,这种新的流处理模型与批处理模型非常类似。可以把流计算等同于在一个静态表上的批处理查询,Spark会在不断添加数据的无界输入表上运行计算,并进行增量查询。
Structured Streaming和Spark SQL、Spark Streaming关系:
Structured Streaming与Spark Streaming一样,处理的也是源源不断的数据流,区别在于,SparkStreaming采用的数据抽象是DStream(本质上就是一系列RDD),而Structured Streaming采用的数据抽象是DataFrame。Structured Streaming 可以使用Spark SQL 的DataFrame/Dataset来处理数据流。虽然Spark SQL也采用DataFrame作为数据抽象,但是,Spark SQL只能处理静态的数据,
而Structured Streaming可以处理结构化的数据流。这样,Structured Streaming就将Spark SQL和Spark Streaming二者的特性结合了起来。Structured Streaming可以对DataFrame/Dataset应用各种操作,包括select、where、groupBy、map、filter、flatMap等。此外,Spark Streaming只能实现秒级的实时响应,而Structured Streaming由于采用了全新的设计方式,采用微批处理模型时可以实现100ms级别的实时响应,采用持续处理模型时可以实现毫秒级的实时响应。
20.试述Spark MLlib的功能以及它提供了哪些工具。
答: MLlib(Machine Learning Library)是Spark的机器学习库,旨在简化机器学习的工程实践,并能够方便地扩展到更大规模数据。MLlib提供了主要的机器学习算法,包括用于特征预处理的数理统计方法,特征提取、转换和选择,以及分类、回归、聚类、关联规则、推荐、优化、算法的评估等。MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时还包括底层的优化原语和高层的管道API。具体来说,MLlib主要包括以下几方面的内容。
· 算法工具:常用的学习算法,如分类、回归、聚类和协同过滤。
· 特征化工具:特征抽取、转化、降维和选择工具。
· 流水线(Pipeline):用于构建、评估和调整机器学习工作流的工具。
· 持久性:保存和加载算法、模型和管道。
· 实用工具:线性代数、统计、数据处理等工具。
Spark在机器学习方面的发展非常快,已经支持了主流的统计和机器学习算法。纵观所有基于分布式架构的开源机器学习库,MLlib以计算效率高著称。
24.请对Spark Streaming 和 Storm 进行简要对比。
答:Spark Streaming 和 Storm 最大的区别在于, Spark Streaming 无法实现毫秒级的流计算,而 Storm 可以实现毫秒级响应。
Spark Streaming 无法实现毫秒级的流计算,是因为其将流数据按批处理窗口大小(通常在0.5~2s)分解为一系列批处理作业,在这个过程中会产生多个 Spark 作业,且每一段数据的处理都会经过 Spark DAG 分解、任务调度过程,因此无法实现毫秒级响应。 Spark Streaming 难以满足对实时性要求非常高(如高频实时交易)的场景,但足以胜任其他流式准实时计算场景。相比之下, Storm 处理的单位为 Tuple ,只需要极小的延迟。
Spark Streaming 构建在 Spark 上,一方面是因为 Spark 的低延迟执行引擎可以用于实时计算,另一方面,相比于 Storm , RDD 数据集更容易做高效的容错处理。此外, Spark Streaming 采用的小批量处理的方式使得它可以同时兼容批量和实时数据处理的逻辑和算法,因此方便了一些需要历史数据和实时数据联合分析的特定应用场合。
25.试述为什么流计算场景比较适合采用Flink.
答: Flink所要处理的主要场景是流数据,批数据只是流数据的一个特例而已。也就是说,Flink会把所有任务当成流来处理。Flink可以支持本地的快速迭代计算和一些环形的迭代计算任务。
Flink以层级式系统形式组建其软件栈(见图7-33),不同层的栈建立在其下层的基础上。具体而言,Flink的典型特性如下。
(1)提供了面向流处理的DataStream API和面向批处理的DataSet API。DataSet API支持Java、Scala和Python,DataStream API支持Java和Scala。
(2)提供了多种候选部署方案,比如本地模式(Local)、集群模式(Cluster)和云模式(Cloud)。对于集群模式而言,可以采用独立模式(Standalone)或YARN。
(3)提供了一些类库,包括Table(处理逻辑表查询)、FlinkML(机器学习)、Gelly(图像处理)和CEP(复杂事件处理)。
(4)提供了较好的Hadoop兼容性,不仅可以支持YARN,还可以支持HDFS、HBase等数据源。
Flink和Spark一样,都是基于内存的计算框架,因此,都可以获得较好的实时计算性能。当两者都运行在Hadoop YARN之上时,Flink的性能甚至略好于Spark。因为,Flink支持增量迭代计算,具有对迭代计算进行自动优化的功能。Flink和Spark Streaming都支持流计算,二者的区别在于,Flink是一行一行地处理数据,而Spark Streaming是基于RDD的小批量处理数据,所以,Spark Streaming在流式处理方面,不可避免地会增加一些延迟,实时性没有Flink好。Flink的流计算性能和Storm差不多,可以支持毫秒级的响应,而Spark Streaming只能支持秒级响应。总体而言,Flink和Spark都是非常优秀的基于内存的分布式计算框架,但是,Spark的市场影响力和社区活跃度明显超过Flink,这在一定程度上限制了Flink的发展空间。
Flink是理想的流计算框架
流处理架构需要具备低延迟、高吞吐和高性能的特性,而目前从市场上已有的产品来看,只有Flink可以满足要求。Storm虽然可以做到低延迟,但是无法实现高吞吐,也不能在故障发生时准确地处理计算状态。Spark Streaming通过采用微批处理模型实现了高吞吐和容错性,但是牺牲了低延迟和实时处理能力。Structured Streaming采用持续处理模型可以支持毫秒级的实时响应,但是,这是以牺牲一致性为代价的,持续处理模型只能做到“至少一次”的一致性,而无法保证端到端的完全一致性。
Flink实现了Google Dataflow流计算模型,是一种兼具高吞吐、低延迟和高性能的实时流计算框架,并且同时支持批处理和流处理。此外,Flink支持高度容错的状态管理,防止状态在计算过程中因为系统异常而出现丢失。因此,Flink成为了能够满足流处理架构要求的理想的流计算框架。
第八章作业
1.试述数据可视化的概念:
答:数据通常是枯燥乏味的,利用数据可视化平台,枯燥乏味的数据可转变为丰富生动的视觉效果,不仅有助于简化人们的分析过程,还可在很大程度上提高分析数据的效率。
数据可视化是指将大型数据集中的数据以图形、图像形式表示,并利用数据分析和开发工具发现其中未知信息的处理过程。数据可视化技术的基本思想是将数据库中每一个数据项以单个图元素来表示,用大量的数据集构成数据图像,同时将数据的各个属性值以多维数据的形式表示,使人们可以从不同的维度观察数据,从而对数据进行更深入的观察和分析。
4.可视化工具主要包含哪些类型?各自的代表性产品有哪些(1-2个)?
答:(1)可视化工具主要有:
入门级工具,信息图表工具,地图工具,时间线工具和高级分析工具等。
(2)代表性作品:
入门级工具:Excel,office;
信息图表工具:D3; Echarts;
地图工具:Leaflet; Modest Maps;
时间线工具:Timetoast; Xtimeline;
高级分析工具:R; Python;
第九章:
1.试述大数据分析全流程主要包括哪些环节?
答:为了实现之前给出的系统设计方案,需要选择确定相关的实现技术。具体如下:
(1)数据集。通过网络爬虫从网络获得电影评分数据集,这里使用Scrapy爬虫。
(2)操作系统。在构建大数据分析系统时,一般建议采用Linux系统,Linux系统有许多发行版,这里选择Ubuntu。
(3)关系数据库。在电影推荐系统中,需要使用关系数据库来存储用户信息、电影信息、用户评分信息和电影推荐结果信息。目前,市场上有许多关系数据库产品,比如Oracle、SQL Server、DB2、MySQL等,这里选择开源数据库产品MySQL。
(4)分布式文件系统。用来保存大量的电影评分数据,这里选择Hadoop的HDFS。
(5)ETL。用来把通过网络爬虫得到的、保存在文本文件中的数据,经过数据清洗以后加载到分布式文件系统中,这里采用开源ETL工具Kettle。
(6)分布式计算框架。对于机器学习算法而言,传统的机器学习算法,由于技术和单机存储的限制,只能在少量数据上使用。在面对大规模数据集时,需要实现分布式机器学习算法,因此,这里采用机器学习框架Spark MLlib。MLlib提供了ALS算法的分布式实现,也就是说,开发人员不需要编写ALS算法的实现细节,只要调用MLlib提供的ALS算法的API,传入训练数据(电影评分数据集),MLlib就会自动完成模型训练,训练得到的模型就可以用于预测某个用户对某部电影的评分。
(7)编程语言。Spark MLlib支持Java、Scala和Python,教材里采用Scala语言(类Java语言),是为了和下面的网站开发环境Node.js对应 。但目前一般选择Python语言,网站开发环境Node.js 也支持Python。所以Scala或Python都可以。
(8)开发工具。调试Spark程序,需要一款高效的开发工具,这里选择IntelliJ IDEA (是java编程语言开发的集成环境)。
(9)网站。网站开发采用Node.js。Node.js是一个JavaScript运行环境,是一个基于Chrome JavaScript运行时建立的平台,用于方便地搭建响应速度快、易于扩展的网络应用。Node.js使用事件驱动、非阻塞I/O模型,具备轻量和高效的特点,非常适合在分布式设备上运行数据密集型的实时应用。
系统实现是一个比较复杂的过程,这里只简单介绍系统实现过程中所涉及到的一些任务,关于系统实现的详细细节可以参考《大数据实训案例之电影推荐系统(Scala版)》。系统实现涉及的主要任务如下:
(1)搭建环境。安装Linux系统、JDK、关系型数据库MySQL、大数据软件Hadoop、大数据软件Spark、开发工具IntelliJ IDEA、ETL工具Kettle和Node.js;
(2)采集数据。编写Scrapy爬虫从网络上获取电影评分数据;
(3)加载数据。使用ETL工具Kettle对数据进行清洗后加载到分布式文件系统HDFS中。
(4)存储和管理数据。使用分布式文件系统HDFS和关系数据库MySQL对数据进行存储和管理。
(5)处理和分析。使用Scala语言和开发工具IntelliJ IDEA,编写Spark MLlib程序,根据HDFS中的大量数据进行模型训练(即使用数据对ALS算法进行训练得到模型),然后,使用训练得到的模型进行电影评分预测,并为用户推荐评分高的电影。
(6)可视化。使用Node.js搭建网站,接受用户访问,并以可视化方式呈现电影推荐结果。
总体而言,要实现本案例,我们需要掌握以下知识:Linux操作系统、关系数据库、JDK基本知识、面向对象编程、Scala编程语言、网络爬虫、数据清洗、分布式文件系统、Spark、Spark SQL、Spark Mllib、JDBC、机器学习、数据挖掘、推荐系统、协同过滤算法、ASL算法、网页应用程序开发、HTML语言、数据可视化、系统设计等。
从专业技能的角度,我们需要掌握:Linux系统及相关软件的安装和使用方法、JDK的安装、Hadoop的安装和基本使用方法、Spark的安装和基本使用方法、MySQL数据库的安装和基本使用方法、开发工具InteliJ IDEA的安装和使用方法、Scala程序开发方法、软件项目管理工具Maven的使用方法、ETL工具Kettle的安装和使用方法、Spark SQL程序的开发方法、ALS算法的使用方法、Spark MLlib程序开发方法、Node.js的安装和使用Node.js开发动态网页的方法等。
4.请说明ALS算法是如何应用于电影推荐系统的
在本案例中,我们可以获得一个电影评分数据集,里面包含了大量用户对不同电影的评分,用户和商品的关系三元组<User,Item,Rating>中,User就是参与打分的电影观众,Item就是电影,Rating就是观众对电影的打分。在我们获取到的电影评分数据集中,只包含了大量用户对他已经看过的电影的评分,对于没有看过的电影,用户是无法评分的,因此,由这个数据集构建得到的矩阵肯定是一个稀疏矩阵。我们可以使用电影评分数据集对ALS算法进行训练,训练的过程就是寻找低秩矩阵P和Q、使P和Q尽可能地逼近R(即R=PQT)的过程。算法训练过程达到收敛以后,得到一个模型,然后,就可以使用这个模型进行评分预测,也就是给定一个用户和一部电影,该模型就会预测该用户可能给该电影打多少分。根据用户对电影评分高低来确定是否为推荐电影。