7×24小时服务热线:4006-371-371
当前位置:371数据中心 - 行业动态 -正文

大数据处理框架的类型、比较和选择

更新时间:17/9/6

“大数据”一词的确切定义其实是很难给出的,因为不同的人(供应商、从业者、商业公司等)对它的理解也并不完全一致。通常来讲,大数据是:

1) 大数据集

2) 用于处理大数据集的某类技术

此处的“大数据集”是指一个数据集的数据量太大以至于无法使用传统工具或单机方式来处理和存储,而处理技术包括数据接入、数据持久化存储、数据计算和分析、数据展示(可视化)等等。

2. 大数据的特征

大数据系统的基本需求与传统系统并没有本质上的不同。但大数据系统虽然具有海量的数据规模,但是对数据的接入和处理速度上也有较高的要求,而且在每个阶段都要对数据进行处理。这些特点还是为设计解决方案时提供了新的挑战。

在2001年,美国Gartner公司的Doug Laney首先提出了“3V”模型来描述大数据处理系统与传统数据处理系统的不同:

Volume

待处理数据的规模在很大程度决定了系统是否为大数据系统。大数据系统中的数据规模可能比传统处理系统中的数据集大几个数量级,这也为数据处理和存储带来了更多的挑战。由于数据处理和存储等工作超出了单台计算机所能达到的性能极限,所以大数据系统通常采用集群方式。集群方式更加考验资源的分配和协调,集群管理和任务分配算法变得越来越重要。

Velocity

大数据与其他数据系统另一个显著的差异体现在数据的“流动”速度。在大数据系统中,数据经常从多种数据源流入系统,并且以一种近实时的方式进行处理。数据被持续不断的接入、修改、处理和分析以便能够跟得上新数据的接入速度。由于近实时处理可以尽早的提供有价值的信息,目前很多商业公司更加青睐于实时处理系统而不是传统的批处理系统。

Variety

大数据系统的问题通常是其他系统所不具备的,因为它所处理的数据来源广泛。数据源可以是应用程序的日志信息,也可以是社交媒体的用户信息,甚至是物理设备传感器的采集数据。不论何种数据,大数据系统的目标都是在海量数据中寻找有用的数据。

3. 大数据处理流程

那么大数据系统实际上是如何处理数据的呢?虽然不同公司的架构设计不尽相同,但我们可以总结出一个基本的流程。下面介绍的流程虽然不是适用于所有情况,但它们确实被广泛使用。大数据处理的基本流程是:

接入数据到系统中 将数据持久化到存储系统 计算和分析数据 展示结果(可视化)

4. 大数据处理框架的定义

说完了大数据,我们来说说本文的重点——大数据处理框架。大数据处理框架负责对大数据系统中的数据进行计算。数据包括从持久存储中读取的数据或通过消息队列等方式接入到系统中的数据,而计算则是从数据中提取信息的过程。除了大数据处理框架,有些同学可能还听到过“大数据计算框架”、“大数据框架”,这些术语没有严格的区分,但基本可以理解为是一种东西,只不过是对“big data processing framework”不同的翻译(大数据框架是“big data framework”的翻译)。

还有一个名词是“大数据处理引擎”,那么这个“引擎”和我们说的“框架”又有什么关系呢?其实并没有区分他们的权威的定义,但一般来说,前者是实际负责处理操作的组件,而后者可以理解为用来完成同样工作的一系列组件。比如Apache Hadoop可以看做是以MapReduce为默认处理引擎的处理框架。

二、数据处理框架分类

不论是系统中存在的历史数据,还是持续不断接入系统中的实时数据,只要数据是可访问的,我们就可以对数据进行处理。按照对所处理的数据形式和得到结果的时效性分类,数据处理框架可以分为两类:

1、批处理系统

2、流处理系统

批处理是一种用来计算大规模数据集的方法。批处理的过程包括将任务分解为较小的任务,分别在集群中的每个计算机上进行计算,根据中间结果重新组合数据,然后计算和组合最终结果。当处理非常巨大的数据集时,批处理系统是最有效的。

典型的批处理系统就是Apache Hadoop。而流处理则对由连续不断的单条数据项组成的数据流进行操作,注重数据处理结果的时效性。典型的流处理系统有Apache Storm,Apache Samza。还有一种系统,同时具备批处理与流处理的能力,这种称为混合处理系统,比如Apache Spark,Apache Flink。接下来我们来详细介绍这三种处理系统。

三、批处理系统

批处理系统在大数据世界中有着悠久的历史。批处理系统主要操作大量的、静态的数据,并且等到全部处理完成后才能得到返回的结果。批处理系统中的数据集一般符合以下特征:

有限: 数据集中的数据必须是有限的(无限的数据一批就处理不完了啊。连续不断的数据一般会使用流处理系统来进行处理,我们后面会讲到)

持久: 批处理系统处理的数据一般存储在持久存储系统上(比如硬盘上、数据库中)

海量: 极海量的数据通常只能使用批处理系统来处理。批处理系统在设计之初就充分的考虑了数据量巨大的问题,实际上批处理系统也是为此而生的。

由于批处理系统在处理海量的持久数据方面表现出色,所以它通常被用来处理历史数据,很多OLAP(在线分析处理)系统的底层计算框架就是使用的批处理系统。但是由于海量数据的处理需要耗费很多时间,所以批处理系统一般不适合用于对延时要求较高的场景。

豫公网安备 41010502002682号

豫公网安备 41010502002683号