详解数据计算能力的四种类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解数据计算能力的四种类型相关的知识,希望对你有一定的参考价值。

我们将计算能力根据场景抽象分成四大类:批计算、流计算、在线查询和即席分析。不同场景配合不同的存储和计算框架来实现,以满足业务的复杂需求。

1、批计算

随着数据量的不断增加,原有的计算框架已经无法支撑TB、PB甚至EB级规模的数据处理,在这种大数据场景下,提供成本低廉且可水平扩容的计算能力,采用分而治之的方法是必然的。传统的数据处理方式通常是将数据导入至专门的数据分析工具中,这样会面临两个问题:

  • 源数据非常大时,往往数据的移动就要花费较长时间。
  • 传统的数据处理工具往往是单机的,或系统架构无法快速扩容,面对海量数据时,数据处理的时间也是一个很大的问题。

MapReduce是一种分布式编程模型,采用“分而治之”的思想,将一个大规模数据集分解为多个小规模数据,然后分发给集群中多个节点共同完成计算。这样可以有效降低每一部分的运算复杂度,达到提高运算效率的目的。

MapReduce模型将计算分为两个阶段:Map阶段和Reduce阶段。Hadoop将MapReduce的输入数据划分为等长的数据块,称为输入分片(Input Split),为每一个分片构建一个Map任务,并且由该任务来运行用户自定义的Map函数,以处理分片中的每条记录。Map任务输出时要按照Reduce任务的数量进行分区,即为每一个Reduce任务新建一个分区,同时对每个分区进行排序。Reduce任务启动后,会向所有Map任务拉取数据并在Reduce端合并,Map任务和Reduce任务之间的数据流称为混洗(Shuffle)。最后由用户自定义的Reduce函数处理,其输出通常存储在HDFS上,以实现可靠存储。

MapReduce由于设计上的一些限制,导致处理性能较慢,针对这个问题,业界也有很多优化方案及替代产品,但真正发展起来的,目前主要有Spark。Spark也是一个批量计算框架,它将数据抽象成RDD、DataFrame,这是一种分布式的内存抽象,允许在大型集群上执行基于内存的计算,大大减少了迭代计算所需的开销。相比MapReduce,Spark在以下几方面具有优势:

  • 数据处理技术:Spark将执行模型抽象为通用的有向无环图(DAG)执行计划,这可以将多个Stage串联或者并行执行,而无须将Stage的中间结果输出到HDFS中。
  • 数据格式和内存布局:Spark RDD能支持粗粒度写操作,而对于读操作,RDD可以精确到每条记录,这使得RDD可以用来作为分布式索引。
  • 执行策略:MapReduce在数据Shuffle之前花费了大量的时间来排序,Spark支持基于Hash的分布式聚合,调度中采用更为通用的任务执行DAG,每一轮的输出结果都可以缓存在内存中。

2、流计算

批计算已经能满足多数大数据计算场景,然而要更快速、高效地获取数据中的价值,批计算已经无法满足需求。此时,一些优秀的实时处理框架,如Storm、Flink、Spark Streaming等逐渐发展起来,被广泛使用。 流计算的常见应用场景如下:

  • 流式ETL:集成流计算现有的诸多数据通道和SQL灵活的加工能力,对流式数据进行实时清洗、归并、结构化处理。同时,对离线数仓进行有效补充和优化,为数据的实时传输提供可计算通道。
  • 流式报表:实时采集、加工流式数据,实时监控和展现业务和客户的各类指标,让数据化运营实时化。
  • 监控预警:对系统和用户的行为进行实时检测和分析,实时监测和发现危险行为。
  • 在线系统:实时计算各类数据指标,并利用实时结果及时调整在线系统的相关策略,在内容投放、无线智能推送等领域有大量的应用。

3、在线查询

在线查询需要处理大规模的数据结果集,同时又需要提供一些快速计算的能力,如条件过滤筛选、在线检索等能力,快速从大规模结果中筛选和检索出结果信息,并且支持高并发、低延迟的快速响应。这种能力批计算、流计算都不具备,因此需要提供在线查询的能力,常见的在线计算框架有Elasticsearch、Redis等,其主要应用场景是OLTP类的简单的增、删、改、查、全文检索等相关操作。

在线查询的常见应用场景如下:

  • 画像服务:根据对象标识提供具体的查询服务,如通过Redis可以提供低延迟、高并发的查询服务能力;通过HBase可以提供大规模数据的查询服务能力,征信查询就是类似的服务。
  • 搜索的应用场景:提供搜索引擎的能力,为用户提供模糊匹配、意图识别检索等能力,快速检索需要的内容,如常见的文档搜索、商品搜索等。
  • 圈人场景:通过一些特定的条件规则,可以快速筛选出业务所需要的群体,为后续的运营、营销等工作的开展提供支撑。

4、即席分析

即席分析是指面对大规模的数据集,如何快速进行数据的多维交叉分析,其大部分是聚合型操作,如group by、sum、avg、count等。批计算有足够的灵活性,但耗时比较久,一些传统的关系型数据库以及数仓架构,在一定维度的场景下可以满足响应要求,但数据量受限。在数据应用中,分析类应用的占比一直不低,因此一些优秀的处理框架(如Impala、Kylin、ClickHouse和AnalyticDB等即席计算框架)逐渐发展起来。针对即席分析的复杂场景,通过对时间、空间的权衡,即席分析常见的实现方式有两种: ·

  • ROLAP:以关系数据库为核心,以关系型结构进行多维数据的表示和存储,结合星型模式和雪花模式实现。
  • MOLAP:基于多维数据组织的实现,以多维数据组织为核心,形成“立方块”的结构,通过对“立方块”进行各类处理来产生多维数据报表。

即席分析的常见应用场景如下:

  • 交互式数据分析:企业运营人员在日常工作中经常需要通过SQL从各个维度对当前业务进行分析,提供分析结果以便开展后续工作。离线计算的场景等待时间较久,用户体验不好,即席分析可以比较好地规避这个问题。
  • 群体对比分析场景:在业务中经常会有A/B测试场景,针对不同的群体,从各个维度对比分析也是即席分析经常支撑的场景。

以上是关于详解数据计算能力的四种类型的主要内容,如果未能解决你的问题,请参考以下文章

详解数据类型检测的四种方式

SQL语言的四种类型和ORACLE运算符

数据导入自治数据仓库ADW的四种方式

详解Java解析XML的四种方法

Java线程同步的四种方式详解

数据仓库的四种类型为