分类:IT>数据库
本节课主要解决以下问题:
什么是流数据?
介绍流数据分析与处理的典型系统?
如何理解流数据管理与分析处理系统?
通过对流数据管理系统与传统数据管理系统的对比,以及流数据分析与批处理方式的数据分析对比,加深对流数据管理与分析处理系统所针对的应用和系统上的理解。
1.什么是流数据?
流数据是连续的、没有边界的、快速的、随时间不断变化的系列数据项(如为结构化数据就是元组,如图片文档也可以构成流数据)
2.流数据产生于哪些应用领域?
(1)网络监控,流量监控
(2)传感器网络,RFID
(3)电信呼叫记录,通讯记录
(4)金融应用,欺诈识别
(5)网络日志,点击流
(6)制造过程,对制造安全性质量进行监控
数据流管理系统DSMS
3.为什么需要对流数据进行分析?
规律:数据用于决策的价值随着时间递减,批处理:针对一天及以上,价值没有那么大了
4.传统的数据分析处理与流数据分析处理技术的差别是什么?
主要是查询和处理的方式不同:传统数据分析处理技术,相对比较静态,一般在系统不繁忙的时候,将数据批量的导入到数据仓库中,所以是“store first, query later”的方式;而流数据是不断的流入系统当中,系统要处理这些数据,用在线的处理方式“On-the-Fly”,通过数据不断的来,不断的处理,处理完的结果也不断的交付给用户来分析决策,它是一个流动方式来处理的,是动态的来处理数据的方式。
5.流数据处理模型是什么?
一个数据流是持续不断没有边界的数据集,一个表是给定记录的集合,SQL语句是作用在表上的。通过时间窗口将流转换成表,每个时间窗口内的数据变成一个表,通过改变时间窗口而改变表,并重复应用SQL,结果不断追加到输出流中。
重点:时间窗口
6.时间窗口如何截取表?
时间窗口截取表有不同的方式
(1)滑动窗口,相邻时间片会有重叠,不是完全隔离开的,是一种滑动的方式,不断往前推动的
(2)非重叠式切片窗口,相邻时间片没有重叠
(3)起始位置固定,结束位置根据情况变化,这种不太常见
7.传统的数据管理系统如何处理流数据?
传统流数据管理系统对于流数据需要解决的问题:及时数据处理,SQL语义支持,处理流数据的质量问题,预测,实时数据与历史数据的融合,保障数据的可获得性,数据划分并获得好的可扩展性,实时处理能力
8.DBMS与DSMS的对比有什么区别?
主要可以根据以下指标,进行对比:
(1)数据类型:DBMS是持久化的数据,DSMS是挥发性流数据
(2)访问模式:DBMS是随机读取,DSMS是连续读取
(3)查询特点:DBMS是一次性查询,DSMS是连续查询
(4)存储假设:DBMS是外存空间无限,DSMS是有限内存
(5)更新频率:DBMS是低更新速度,DSMS是高更新频率
(6)数据质量:DBMS是高质量数据,DSMS是过期、不精确、错位数据
(7)查询处理:DBMS是一次性查询计划,DSMS是计划需要随数据特征变化
9.形成的典型流数据处理系统(略)
10.流式分析处理VS批处理系统之间的区别与联系是什么?
11.典型大数据批处理系统架构是什么样的?
通过数据采集工具,我们将数据库或日志的一些数据导到大数据平台上,比如说HDFS,这样的数据在数据库系统中,然后,在这个集群环境下,我们需要一些离线的查询处理的引擎,MapReduce,Spark,需要一些资源调度工具,Resoure manager,node manger,在这样的集群环境下做大规模分析处理,通常消耗时间比较长。
12.什么是YARN?
Apache HadoopYARN(Yet another resource negotiator,另一种资源协调者),是一种新的Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群再利用率、资源统一管理和数据共享方面带来了巨大的好处。
YARN的基本思想是将JobTracker的两个主要功能(资源管理和作业调度/监控)分离。
13.典型流式分析大数据系统架构是什么样的?
典型流式分析大数据也是来自不同途径的数据源,一般来讲会首先汇聚在一个消息队列中,类似Kafka这样的系统中去,使消息或或者流数据本身有一个持久化的功能,在此之上,处理端有这个流数据处理引擎,比如说Spark Steaming, Flink这样的系统,把这个数据从kafka里拉出来,进行一些流式的计算
另外一种方式,因为这个数据还需要进行一些持续化的堆积,形成一个大数据,它会也通过kafka这样的消息队列,导到这样的大数据平台上,在这个平台上既可以做一些离线的分析处理,同时也可以支持一些小批量的方式,甚至是近实时的一些这样的处理方式。
也就是两种不同途径,来做这个流数据计算引擎。
14.数据流分析与数据流处理的关系是什么?
(1)数据流分析
典型的数据流分析是以时间窗口为基础的,基于SQL的数据统计和分析
例如监控一段时间内采集数据的平均值、最大值等
(2)数据流处理
以单元组处理为主,用并行化来解决元组处理的复杂性
串行化处理数据,形成多步处理流水线
例如对微博/博文的预处理,信息抽取,分类、聚类等。Storm是流数据处理代表。
15.Storm的构成?
Storm由Spouts和Bolts节点构成有向图
Spout是流数据产生的源,通常是从数据库/爬虫等地方获得的数据
Bolt:用于处理数据流,输出数据流给其他Bolt节点
16. Bolt计算节点上的常见操作有什么?
(1)过滤:只继续传播满足一定过滤条件的元组
(2)连接:接收两个流A和B,输出满足一定条件的(A,B)对
(3)转换:根据函数,修改每个tuple的值
(4)其他很多操作,如自然语言处理,多媒体数据处理,ETL数据处理等
17.Bolt的技术关键是什么?如何解决?
由于Bolt是计算节点,需要处理大量数据,所以如何算的快是关键。
可以通过并行化处理,对数据流进行划分,不同Bolt之间任务的协调,以及容错的支持来解决。
18.Flink是有状态的流处理,其特点是什么?
有状态,容错,高可扩展,低延迟
Flink兼具流数据分析和流数据处理的功能
19.复杂事件处理(CEP),流数据的复杂数据处理是loT场景中常见的数据分析需求。复杂事件通常具有一定的时间跨度,流数据中具有时间跨度的模式发现是一种典型的CEP分析处理任务。你认为哪类流数据分析和处理系统更适合做海量loT数据的复杂事件处理?
Flink是有状态的流数据处理,具有容错、高可扩展、低延迟的特性,并兼具流数据分析和流数据处理功能。
20.什么是复杂事件处理?
复杂事件处理(CEP, Complex Event Processing),在事物动作过程中,可以构造三个事件信息,事物初始状态事件、作用于事物的动作的事件、事物结果状态事件。事件的关系主要有五种,时间顺序关系、聚合关系、层次关系、依赖关系、因果关系。事件处理实现的功能的几类模式是推断、查因、决策
小结:
大数据通常是以流数据的形式不断堆积的
如果需要较为实时的从大数据中获得洞察,就需要流数据分析和处理技术。
典型应用:
传感器网络、M2M数据中心
互联网舆情监控
入侵检测
实时商业智能
参考资料:
MOOC中国人民大学《数据库系统概论(新技术篇)》
第14讲流数据分析与处理/流数据分析与处理陈跃国