大数据分析特点?
500
2024-04-23
高级API层:包含机器学习及Flink SQL API等库。对批处理和流处理进行了统一。
API层:主要包含 Flink 的流处理API 和批处理API
执行引擎:Flink 的执行处理,Flink 的执行引擎基于流处理实现。
资源层:Flink 任务执行的物理资源,主要有 本地(JVM) , 集群(yarn),云端(GCE/EC2)等,flink1.11以上版本也支持k8s部署。
一、架构
Flink以层级式系统形式组件其软件栈,不同层的栈建立在其下层基础上,并且各层接受程序不同层的抽象形式。
运行时层以JobGraph形式接收程序。JobGraph即为一个一般化的并行数据流图(data flow),它拥有任意数量的Task来接收和产生data stream。
DataStream API和DataSet API都会使用单独编译的处理方式生成JobGraph。DataSet API使用optimizer来决定针对程序的优化方法,而DataStream API则使用stream builder来完成该任务。
在执行JobGraph时,Flink提供了多种候选部署方案(如local,remote,YARN等)。
Flink附随了一些产生DataSet或DataStream API程序的的类库和API:处理逻辑表查询的Table,机器学习的FlinkML,图像处理的Gelly,复杂事件处理的CEP。
二、原理
1. 流、转换、操作符
Flink程序是由Stream和Transformation这两个基本构建块组成,其中Stream是一个中间结果数据,而Transformation是一个操作,它对一个或多个输入Stream进行计算处理,输出一个或多个结果Stream。
Flink程序被执行的时候,它会被映射为Streaming Dataflow。一个Streaming Dataflow是由一组Stream和Transformation Operator组成,它类似于一个DAG图,在启动的时候从一个或多个Source Operator开始,结束于一个或多个Sink Operator。
2. 并行数据流
一个Stream可以被分成多个Stream分区(Stream Partitions),一个Operator可以被分成多个Operator Subtask,每一个Operator Subtask是在不同的线程中独立执行的。一个Operator的并行度,等于Operator Subtask的个数,一个Stream的并行度总是等于生成它的Operator的并行度。
One-to-one模式
比如从Source[1]到map()[1],它保持了Source的分区特性(Partitioning)和分区内元素处理的有序性,也就是说map()[
flink table数据保存36小时。
实时计算 Flink数据的状态保存在36小时之内,超过36小时没有数据流入的情况下,之前的状态以及数据会被清掉。
存储数据的SSD设备的环境温度对数据的稳定性影响较大。例如,在40°C的活动温度和30°C的关机温度下,SSD可以存储52周的数据,即大约一年。械硬盘的数据可以存储10年以上而不丢失。
可以处理业务数据。1.flink是一款大数据处理引擎,因此可以处理业务数据。2.flink提供流数据流式计算的能力,可在处理大规模数据时实现高效、分布式、可扩展的计算。通过优秀的状态管理以及低延迟的计算,处理任意类型的业务数据变得更加可行。3.除了能够处理业务数据,flink还支持丰富的数据处理和计算任务,包括实时数据处理、批处理、网络处理、机器学习等领域。这使得flink在企业级别上得到广泛的应用和推广,如支付宝、美团等知名大型互联网公司均已使用flink作为大数据处理框架。
Apache Flink 是一个开源的分布式,高性能,高可用,准确的流处理框架。支持实时流处理和批处理。
flink特性:
支持批处理和数据流程序处理
优雅流畅的支持java和scala api
同时支持高吞吐量和低延迟
支持事件处理和无序处理通过SataStream API,基于DataFlow数据流模型
在不同的时间语义(时间时间,处理时间)下支持灵活的窗口(时间,技术,会话,自定义触发器)
仅处理一次的容错担保
自动反压机制
图处理(批) 机器学习(批) 复杂事件处理(流)
在dataSet(批处理)API中内置支持迭代程序(BSP)
高效的自定义内存管理,和健壮的切换能力在in-memory和out-of-core中
兼容hadoop的mapreduce和storm
集成YARN,HDFS,Hbase 和其它hadoop生态系统的组件
flink的应用场景:
优化电子商务的实时搜索结果:阿里巴巴的所有基础设施团队使用flink实时更新产品细节和库存信息,为用户提供更高的关联性。
针对数据分析团队提供实时流处理服务:king通过flink-powered数据分析平台提供实时数据分析,从游戏数据中大幅缩短了观察时间
网络/传感器检测和错误检测:Bouygues电信公司,是法国最大的电信供应商之一,使用flin监控其有线和无线网络,实现快速故障响应。
商业智能分析ETL:Zalando使用flink转换数据以便于加载到数据仓库,将复杂的转换操作转化为相对简单的并确保分析终端用户可以更快的访问数据。
基于上面的案例分析,Flink非常适合于:
多种数据源(有时不可靠):当数据是由数以百万计的不同用户或设备产生的,它是安全的假设数据会按照事件产生的顺序到达,和在上游数据失败的情况下,一些事件可能会比他们晚几个小时,迟到的数据也需要计算,这样的结果是准确的。
应用程序状态管理:当程序变得更加的复杂,比简单的过滤或者增强的数据结构,这个时候管理这些应用的状态将会变得比较难(例如:计数器,过去数据的窗口,状态机,内置数据库)。flink提供了工具,这些状态是有效的,容错的,和可控的,所以你不需要自己构建这些功能。
数据的快速处理:有一个焦点在实时或近实时用例场景中,从数据生成的那个时刻,数据就应该是可达的。在必要的时候,flink完全有能力满足这些延迟。
海量数据处理:这些程序需要分布在很多节点运行来支持所需的规模。flink可以在大型的集群中无缝运行,就像是在一个小集群一样。
Flink中处理乱序数据的三种方式
加水印Flink中的时间语意WaterMark,以事件时间减去所允许的最大乱序时间作为水印,原理相当于多给了数据一定的时间,然后关闭窗口,触发计算。
允许迟到allowedLateness原理是在水印的基础上在多给数据一定的可以迟到的时间,当水印到达窗口大小时触发计算,但是不关闭窗口,到达所允许的迟到时间后真正关闭窗口。
侧输出流当数据迟到的时间非常久,前两种都失效时使用,相当于迟到数据归放入一个分支流中进行单独计算。此外,侧输出流还可以对数据进行分流操作。
flink通过交叉验证的方式保证数据准确性
flink处理的数据可以放到不同的地方,具体取决于数据的用途和需求。1. 一种常见的方式是将数据存储在分布式文件系统或对象存储中,如HDFS、Amazon S3等。这样可以保证数据的可靠性和扩展性,方便后续的数据分析和处理。2. 另一种选择是将数据存储在数据库中,如MySQL、PostgreSQL等。这样可以方便地进行数据的查询和更新,适用于需要频繁访问和修改数据的场景。3. 还可以将数据发送到消息队列或流处理系统中,如Kafka、RabbitMQ、Apache Pulsar等。这样可以实现实时的数据处理和流式计算,适用于需要实时响应和处理数据的应用。总之,flink处理的数据可以根据具体的需求来选择合适的存储方式,以满足数据处理和分析的要求。
大屏数据可视化系统是一种基于数据分析和可视化技术的监控、分析和管理工具。其架构主要包括以下几个部分:
1. 数据采集层:负责从各个数据源采集数据,并将采集的数据进行清洗、处理、转换和存储。常见的数据源包括数据库、API接口、文件、第三方服务等。
2. 数据处理层:负责将采集的数据进行加工处理、计算和分析,并将分析结果存储到数据存储层中。数据处理层通常也包括数据预处理、数据挖掘、数据建模等功能模块。
3. 数据存储层:负责存储采集的数据和处理后的结果。数据存储层可以采用关系型数据库、非关系型数据库、数据仓库等技术。
4. 可视化展示层:负责将处理后的数据通过可视化手段展示出来,供用户进行数据分析和决策。可视化展示层包括大屏幕展示、Web界面、移动端应用等。
5. 用户管理和数据权限控制:负责对用户进行权限管理,确保用户只能看到其有权限查看的数据。用户管理和数据权限控制可以基于角色、用户、数据分类等进行授权管理。
针对大屏数据可视化系统,一般采用分布式架构可以加强系统的可扩展性和性能。同时,为了保证系统的稳定性,还需要考虑高可用性和容灾备份。
数据中心编程(CDC)实现了实时数据同步的功能,其主要的做法是通过CDC读取源数据库的更新日志(binlog)中的变更,然后将这些变更数据同步到目标数据库。CDC的实现原理如下:
1. Flink从源数据库的日志中检测出变更,并以JSON格式输出。
2. Flink将变更日志以及变更内容发布到Kafka消息队列,消息中包含要复制的数据以及变更类型(插入、更新、删除)。
3. 目标数据库的消费者程序从Kafka消息队列中读取变更日志,并根据变更类型决定如何处理,从而实现实时数据同步。
通常情况下,Flink CDC实时数据同步可以有效地实现即时数据同步,从而满足实时分析、实时报表等复杂分析应用场景的需求。