公众号建设成小说网站,php网站内容管理系统,网站已备案下一步怎么做,小红书广告投放平台现实世界中#xff0c;所有的数据都是以流式的形态产生的#xff0c;不管是哪里产生的数据#xff0c;在产生的过程中都是一条条地生成#xff0c;最后经过了存储和转换处理#xff0c;形成了各种类型的数据集。如下图所示#xff0c;根据现实的数据产生方式和数据产生是…现实世界中所有的数据都是以流式的形态产生的不管是哪里产生的数据在产生的过程中都是一条条地生成最后经过了存储和转换处理形成了各种类型的数据集。如下图所示根据现实的数据产生方式和数据产生是否含有边界具有起始点和终止点角度将数据分为两种类型的数据集一种是有界数据集另外一种是无界数据集。
有界数据集
有界数据集具有时间边界在处理过程中数据一定会在某个时间范围内起始和结束有可能是一分钟也有可能是一天内的交易数据。对有界数据集的数据处理方式被称为批计算Batch Processing例如将数据从RDBMS或文件系统等系统中读取出来然后在分布式系统内处理最后再将处理结果写入存储介质中整个过程就被称为批处理过程。而针对批数据处理目前业界比较流行的分布式批处理框架有Apache Hadoop和 Apache Spark等。
无界数据集
对于无界数据集数据从开始生成就一直持续不断地产生新的数据因此数据是没有边界的例如服务器的日志、传感器信号数据等。和批量数据处理方式对应对无界数据集的数据处理方式被称为流式数据处理简称为流处理Streaming Process。可以看出流式数据处理过程实现复杂度会更高因为需要考虑处理过程中数据的顺序错乱以及系统容错等方面的问题因此流处理需要借助专门的流数据处理技术。目前业界的Apache Storm、Spark Streaming、Apache Flink等分布式计算引擎都能不同程度地支持处理流式数据。
统一数据处理
有界数据集和无界数据集只是一个相对的概念主要根据时间的范围而定可以认为一段时间内的无界数据集其实就是有界数据集同时有界数据也可以通过一些方法转换为无界数据。例如系统一年的订单交易数据其本质上应该是有界的数据集可是当我们把它一条一条按照产生的顺序发送到流式系统通过流式系统对数据进行处理在这种情况下可以认为数据是相对无界的。对于无界数据也可以拆分成有界数据进行处理例如将系统产生的数据接入到存储系统按照年或月进行切割切分成不同时间长度的有界数据集然后就可以通过批处理方式对数据进行处理。从以上分析我们可以得出结论有界数据和无界数据其实是可以相互转换的。有了这样的理论基础对于不同的数据类型业界也提出了不同的能够统一数据处理的计算框架。 目前在业界比较熟知的开源大数据处理框架中能够同时支持流式计算和批量计算比较典型的代表分别为Apache Spark和Apache Flink两套框架。其中Spark通过批处理模式来统一处理不同类型的数据集对于流数据是将数据按照批次切分成微批有界数据集来进行处理。Flink则从另外一个角度出发通过流处理模式来统一处理不同类型的数据集。Flink用比较符合数据产生的规律方式处理流式数据对于有界数据可以转换成无界数据统一进行流式最终将批处理和流处理统一在一套流式引擎中这样用户就可以使用一套引擎进行批计算和流计算的任务。 前面已经提到用户可能需要通过将多种计算框架并行使用来解决不同类型的数据处理例如用户可能使用Flink作为流计算的引擎使用 Spark或者MapReduce作为批计算的引擎这样不仅增加了系统的复杂度也增加了用户学习和运维的成本。而Flink作为一套新兴的分布式计算引擎能够在统一平台中很好地处理流式任务和批量任务同时使用流计算模式更符合数据产生的规律相信Flink会在未来成为众多大数据处理引擎的一颗明星。