大数据技术原理与应用作业十
大数据技术原理与应用作业十
1. 试述流数据的概念。
流数据,即数据以大量、快速、时变的流形式持续到达。
2. 试述流数据的特点。
流数据具有如下特征:
- 数据快速持续到达,潜在大小也许是无穷无尽的
- 数据来源众多,格式复杂
- 数据量大,但是不十分关注存储,一旦经过处理,要么被丢弃,要么被归档存储
- 注重数据的整体价值,不过分关注个别数据
- 数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序
3. 在流计算的理念中,数据的价值与时间具备怎样的关系?
数据的价值随着时间的流失而降低
4. 试述流计算的需求。
对于一个流计算系统来说,它应达到如下需求:
- 高性能:处理大数据的基本要求,如每秒处理几十万条数据
- 海量式:支持TB级甚至是PB级的数据规模
- 实时性:保证较低的延迟时间,达到秒级别,甚至是毫秒级别
- 分布式:支持大数据的基本架构,必须能够平滑扩展
- 易用性:能够快速进行开发和部署
- 可靠性:能可靠地处理流数据
5. 试述MapReduce框架为何不适合用于处理流数据。
Hadoop 设计的初衷是面向大规模数据的批量处理,在使用MapReduce处理大规模文件时,一个大文件会被分解成许多个块分发到不同的机器上,每台机器并行运行MapReduce任务,最后对结果进行汇总输出。有时候,完成一个任务甚至要经过多轮的迭代。很显然,这种批量任务处理方式在时间延迟方面是无法满足流计算的实时响应需求的。
6. 将基于MapReduce的批量处理转为小批量处理,每隔一个周期就启动一次MapReduce作业,通过这样的方式来处理流数据是否可行?为什么?
不可行。
- 切分成小的片段,虽然可以降低延迟,但是也增加了任务处理的附加开销,而且还要处理片段之间的依赖关系,因为一一个片段可能需要用到前一一个片段的计算结果。
- 需要对MapReduce进行改造以支持流式处理,Reduce 阶段的结果不能直接输出,而是保存在内存中。这种做法会大大增加MapReduce框架的复杂度,导致系统难以维护和扩展。
- 降低了用户程序的可伸缩性,因为用户必须要使用MapReduce接口来定义流式作业。
总之,流数据处理和批量数据处理是两种截然不同的数据处理模式,MapReduce是专门面向静态数据的批量处理的,内部各种实现机制都为批处理做了高度优化,不适合用于处理持续到达的动态数据。正所谓“鱼和熊掌不可兼”,想设计一个既适合流计算又适合批处理的通用平台,虽然想法很好,但是实际上是很难实现的。因此,当前业界诞生了许多专门的流数据实时计算系统来满足各自需求。
7. 列举几个常见的流计算框架。
目前有三类常见的流计算框架和平台:商业级的流计算平台、开源流计算框架、公司为支持自身业务开发的流计算框架
- 商业级:
- IBM InfoSphere Streams
- IBM StreamBase
- 较为常见的是开源流计算框架,代表如下:
- Twitter Storm:免费、开源的分布式实时计算系统,可简单、高效、可靠地处理大量的流数据
- Yahoo! S4(Simple Scalable Streaming System):开源流计算平台,是通用的、分布式的、可扩展的、分区容错的、可插拔的流式系统
- 公司为支持自身业务开发的流计算框架:
- Facebook Puma
- Dstream(百度)
- 银河流数据处理平台(淘宝)
- Super Mario
8. 试述流计算的一般处理流程。
流计算的处理流程一般包含三个阶段:数据实时采集、数据实时计算、实时查询服务
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-otoO8mv7-1631693777310)(C:\Users\张昊\AppData\Roaming\Typora\typora-user-images\image-20201118190758916.png)]
9. 试述流计算流程与传统的数据处理流程之间的主要区别。
传统的数据处理流程如下图所示,需要先采集数据并存储在关系数据库等数据管理系统中,之后用户便可以通过查询操作和数据管理系统进行交互,最终得到查询结果。但是,这样一个流程隐含了两个前提。
- 存储的数据是旧的。当对数据做查询的时候,存储的静态数据已经是过去某一时刻的快照,这些数据在查询时可能已不具备时效性了。
- 需要用户主动发出查询。也就是说,用户是主动发出查询来获取结果。
流计算的处理流程如上题图所示,一般包含3个阶段:数据实时采集、数据实时计算、实时查询服务。
10. 试述数据实时采集系统的一般组成部分。
数据采集系统的基本架构一般有3个部分。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ycdf85MG-1631693777312)(C:\Users\张昊\AppData\Roaming\Typora\typora-user-images\image-20201118191321823.png)]
- Agent:主动采集数据,并把数据推送到Collector部分。
- Collector:接收多个Agent的数据,并实现有序、可靠、高性能的转发。
- Store:存储Collector转发过来的数据。
11. 试述流计算系统与传统的数据处理系统对所采集数据的处理方式有什么不同。
对于流计算,一般在Store 部分不进行数据的存储,而是将采集的数据直接发送给流计算平台进行实时计算。传统的数据处理系统采集到数据以后会存储到数据库中后续进行处理。
12. 试列举几个流计算的应用领域。
- 实时分析
- 实时交通
13. 流计算适用于具备怎样特点的场景?
流计算适合于需要处理持续到达的流数据、对数据处理有较高实时性要求的场景。
14. 试述流计算为业务分析带来了怎样的改变。
随着分析业务对实时性要求的提升,离线分析模式已不适合用于流数据的分析,也不适合用于要求实时响应的互联网应用场景。通过流计算,能在秒级别内得到实时的分析结果,有利于根据当前得到的分析结果及时地作出决策。例如,购物网站的广告推荐、社交网站的个性化推荐等,都是基于对用户行为的分析来实现的,基于实时分析,推荐的效果将得到有效提升。
15. 除了实时分析和实时交通,试再列举一个适合采用流计算的应用场景,并描述流计算可带来怎样的改变。
金融行业。
- 欺诈探测:实时分析用户行为,并及时辨识到可疑欺诈行为。
- 客户营销:根据用户即时的行为记录,实时为客户推荐个性化的金融产品。
- 数据运营:根据业务需求灵活组合使用和业务集成,实现“数据驱动业务”。
16. 试述Storm框架如何改变开发人员开发实时应用的方式。
S4系统和Storm框架的开源也改变了开发人员开发实时应用的方式。以往开发人员在开发一个实时应用的时候,除了要关注处理逻辑,还要为实时数据的获取、传输、存储大伤脑筋,但是现在情况却大为不同。开发人员可以基于开源流处理框架Storm, 快速地搭建一套健壮、易用的实时流处理系统,并配合Hadoop等平台,就可以低成本地做出很多以前很难想象的实时产品。
17. 为什么说使用Storm流处理框架开发实时应用,其开发成本较低?
以往除了要关注处理逻辑,还要为实时数据的 获取、传输、存储大伤脑筋,但是现在开发人员基于开源流处理框架Storm,可以快速搭建一套健壮、易用的实时流处理系统。
18. 试述Twitter采用的分层数据处理框架。
实时系统和 批处理系统组成的分层数据处理架构。
19. 试列举几个Storm框架的主要特点。
- 整合性:简易的API;
- 可扩展性:容错性;
- 可靠的消息处理:支持各种编程语言;
- 快速部署:免费、开源。
20. 试列举几个Storm框架的应用领域。
实时分析、在线机器学习、持续计算、远程RPC等。
21. Storm 的主要术语包括Streams、Spouts、 Bolts 、Topology 和Stream Groupings,请分别简要描述这几个术语。
- Streams:是一个无限的Tuple序列。
- Spouts:Stream的源头抽象。
- Bolts:Streams的状态转换过程。
- Topology:Spouts和Bolts组成的网络。
- Stream Groupings:用于告知Topology如何在两个组件间进行Tuple的传送。
22. 试述Tuple的概念。
Tuple即元组,是元素的有序列表。
23. 一个Topology由哪些组件组成?
Spouts和Bolts。
24. 不同的Bolt之间如何传输Tuple?
通过Grouping()系列方法定义了Tuple的发送方式。
25. 试列举几种Stream Groupings的方式。
ShuffleGropuing、FieldsGrouping、AllGrouping、GlobalGrouping、NonGrouping、DirectGrouping。
26. 试述MapReduce Job和Storm Topology的区别与联系。
在Haoop上运行的是MapReduce作业,而在Storm上运行的是“Topology”。但两者的任务大不相同,其中主要的不同是一个MapReduce作业最终会完成计算并结束运行,而一个Topology将持续处理信息。
27. Storm 集群中的Master节点和Worker节点各自运行什么后台进程?这些进程又分别负责什么工作?
master运行Nimbus,worker运行Supervisor
Nimbus:负责在集群范围内分发代码、为Worker分配任务和检测障碍。
Supervisor:负责监听分配给它所在机器的工作。
28. 试述Zookeeper在Storm框架中的作用。
Storm使用Zookeeper来作为分布式协调组件,负责Nimbus和多个Supervisor之间的所有协调工作。借助于Zookeeper,若Nimbus进程或Supervisor进程意外终止,重启时也能读取、恢复之前的状态并继续工作,使得Storm极其稳定。
29. Nimbus 进程和Supervisor进程都是快速失败( Fail-fast )和无状态( Stateless)的,这样的设计有什么优点?
一旦重启,两个进程借助Zookeeper将状态信息存放在Zookeeper中或本地磁盘中进行恢复并继续工作。
这样做使Storm很稳定。
30. Nimbus进程或Supervisor进程意外终止后,重启时能否恢复到终止之前的状态?为什么?
能,因为有Zookeeper,一旦重启,两个进程借助Zookeeper将状态信息存放在Zookeeper中或本地磁盘中进行恢复并继续工作。
31. 试述Storm框架的工作流程。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vkmHsGN4-1631693777314)(C:\Users\张昊\AppData\Roaming\Typora\typora-user-images\image-20201118192419205.png)]
- 所有Topology任务的提交必须在Storm客户端节点上进行,提交后,由Nimbus节点分配给其他Supervisor节点进行处理
- Nimbus节点首先将提交的Topology进行分片,分成一个个Task,分配给相应的Supervisor,并将Task和Supervisor相关的信息提交到Zookeeper集群上
- Supervisor会去Zookeeper集群上认领自己的Task,通知自己的Worker进程进行Task的处理
32. 试述Storm框架实现单词统计的一般流程。
从Spout中发送Stream;
用于分割单词的Bolts将接受的句子分解为独立的单词,将单词作为Tuple的字段名发送出去;
用于计数的Bolts接受表示单词的Tuple,并对其进行统计;
输出每个单词以及单词出现过的次数。
33. 试述采用MapReduce框架进行单词统计与采用Storm框架进行单词统计有什么区别。
MapReduce使用的是Map和Reduce的抽象,而Storm使用的是Spout和Bolts的抽象。
34. Storm 框架中的单词统计Topology定义如下,其中定义了两个Bolt,试述两个Bolt各自完成的功能,以及中间结果如何在两个Bolt 之间传输。
TopologyBuilder builder = new TopologyBuilder() ;
builder . setSpout (“sentences”, new RandomSentenceSpout(), 5);
builder. setBolt (“split”, new SplitSentence(), 8).shuffleGrouping (“sentences”) ;
builder.setBolt (“count”, new WoraCount(), 12).fieldsGrouping(“split”,new Fields (“word”));
在该Topology中,首先新建了一个Topology Builder,接着通过builder.setSpout0方法对Spout数据源进行定义,该方法中有3个参数:第1个参数表示Stream的名称;第2个参数表示Stream的具体处理函数;第3个参数则表示并发数,即同时运行多少个任务来处理Stream。Topology中包含了两个Bolt处理器,使用了builder.setBolt()方 法进行定义,该方法的参数含义与builder.setSpout0方法相似。同时,每个Bolt使用了Groupings()系列方法定义了Tuple的发送方式。通过这两个Bolt的定义我们可以看出:
- 第一个Bolt用于单词的分割,该Bolt中的任务随机接收Spout发送的句子,并从接收的句子中提取出单词;
- 第二个Bolt接收第一个 Bolt发送的Tuple进行处理( Bolt是通过订阅Tuple的名称来接收相应的数据,第1个Bolt 声明其输出Stream的名称为“split", 而第二个Bolt声明其订阅的Stream为“split" ,因此第二个Bolt可以接收到第一个Bolt发送的Tuple ),即统计分割后的单词出现的次数。
35. 在Storm的单词统计实例中,为何需要使用fieldsGrouping()方法保证相同单词发送到同一个任务上进行处理?
通过fieldsGroupings()方法,在“word"上具有相同字段值的所有Tuple (在本例中即单词相同的Tuple )将发送到同一个任务中进行统计,从而保证了统计的准确性。
大数据技术原理与应用作业十相关推荐
- 大数据技术原理与应用作业四
大数据技术原理与应用作业四 1. 试述在Hadoop体系架构中HBase与其他组成部分的相互关系. HBase利用Hadoop MapReduce来处理HBase中的海量数据,实现高性能计算: 利用Z ...
- 大数据技术原理与应用作业七
大数据技术原理与应用作业七 1. 试述MapReduce和Hadoop的关系. Google公司最先提出了分布式并行编程模型MapRedece,Hadoop MapReduce是它的开源实现.Goog ...
- 大数据技术原理与应用作业一
大数据技术原理与应用作业一 1.试述信息技术发展史上的3次信息化浪潮及其具体内容. 第一次信息化浪潮发生在1980年前后,具体标志是个人计算机的出现,PC开始普及,使得计算机走入企业和千家万户,大 ...
- [渝粤教育] 厦门大学 大数据技术原理与应用 参考 资料
教育 -大数据技术原理与应用-章节资料考试资料-厦门大学[] 第1章 大数据概述 单元测验 1.[单选题]第三次信息化浪潮的标志是: A.个人电脑的普及 B.互联网的普及 C.云计算.大数据.物联网技 ...
- 大数据技术原理与应用课后题(林子雨)
大数据技术原理与应用(林子雨) 第1章 大数据概述 1单选(2分) 第三次信息化浪潮的标志是: A.个人电脑的普及 B.云计算.大数据.物联网技术的普及 C.虚拟现实技术的普及 D.互联网的普及 正确 ...
- 林子雨试卷《大数据技术原理与应用》试题与答案
<大数据技术原理与应用>试题与答案 问答题(100分): (问答题,共13道题目,第1题4分,第2题6分,第3题10分,第4题10分,第5题16分,第6题6分,第7题12分,第8题6分,第 ...
- 大数据技术原理与应用课程建设经验分享
大数据技术原理与应用课程 建设经验分享 林子雨 厦门大学信息科学与技术学院, 福建 厦门 361005 摘要:大数据专业人才的培养是世界各国新一轮科技较量的基础,高等院校承担着大数据人才培养的重任 ...
- 关于大数据技术原理与应用的学习(1)
学习目标: 大数据技术原理与应用 学习内容: 大数据概述 1.1大数据时代 1.2大数据的概念和影响 1.3大数据的应用 1.4大数据的关键技术 1.5大数据与云计算.物联网的关系 学习时间: 202 ...
- 大数据技术原理与应用——NoSQL数据库
大数据技术原理与应用--NoSQL数据库 5.1 NoSQL 简介 特点 1.灵活的可扩展性 传统的关系型数据库由于自身设计机理的原因,通常很难实现"横向扩展",在面对数据库负载大 ...
最新文章
- Linux-LAMP-访问控制Directory
- 弹框--更新下载--安装
- linux 查看某一个进程的socket连接数
- redis 6379端口telnet不通的解决办法
- 史上最冤!美国原子弹之父被骂了9年!最后他上台领奖,竟一把推开了总统.........
- 【渝粤教育】国家开放大学2019年春季 0320-22T学前教育学 参考试题
- 海量数据(数据量比较大时)的处理分析
- 从物理空间到数字世界,数字孪生打造智能化基础设施
- 持续集成部署Jenkins工作笔记0014---curl命令触发构建
- 给iOS库添加Cocoapods支持
- java中有哪几种访问修饰符_Java语言中有4种访问修饰符
- EF架构~对AutoMapper实体映射的扩展
- MongoDB管理工具studio 3t ,解决到期问题
- QComboBox使用讲解
- Qt QWidget视频上叠加文字
- mysql 文本类型的长度
- SteamVR自定义手部抓取姿势
- LCD1602液晶屏
- hazy的leetcode刷题笔记(五)
- WEB 请求处理二:Nginx 请求 反向代理
热门文章
- NVR DVR前世今生
- 中投系证券公司待整合
- 项目计划书模板,案例
- 苹果11触屏不灵敏_苹果11刚买没多久总感觉触摸不灵敏怎么回事?
- 【我的电赛日记(完结)---2021全国大学生电子设计竞赛全国一等奖】A题:信号失真度测量装置
- 【装机】来装机吧!超详细的装机教程
- android 大富翁,安卓玩大富翁2和大富翁3
- 分享16个经典的免费UI素材网站
- 【去雾论文阅读】A Novel Fast Single Image Dehazing Algorithm Based on Artificial Multiexposure Image Fusion
- 固态硬盘M.2与SATA3.0的区别