APP下载

大数据计算框架与平台分析

2019-12-24李兰凤马佳荣

网络安全技术与应用 2019年9期
关键词:批处理分布式框架

◆李兰凤 马佳荣

大数据计算框架与平台分析

◆李兰凤 马佳荣

(西安文理学院 陕西 710065)

随着互联网、物联网等技术得到越来越广泛的应用,数据规模不断增加,对数据的处理已无法由单台机器完成,只能由多台机器共同承担计算任务。本文对近几年来的大数据处理与分析的相关资料进行整理研究,讨论了批处理计算、流计算、交互分析和图计算四种大数据计算模式,分析了不同的大数据计算模式下常用的计算框架与平台。

大数据;批处理;流计算;交互分析;图计算

随着互联网和物联网等技术的出现,数据规模越来越大,数据类型多种多样,数据来源复杂多变,随之大数据概念被提出。近年来,企业、学术界和政府都对大数据的巨大潜力产生了兴趣,大数据也逐渐被熟知。本文对大数据进行简析,重点分析了几种常用的大数据计算框架与平台。

1 大数据概述

最早应用大数据的是美国的麦肯锡公司,该公司最先提出了大数据时代的到来。对于大数据至今没有公认的定义,麦肯锡公司在《大数据:创新、竞争和生产力的下一个前沿领域》报告中给出的大数据的定义是大小超出常规的数据库工具进行获取、存储、管理和分析能力的数据集。一般来说大数据可以用5V[1]模型来描述,它是从3V模型扩展而来的,5V模型指的是大数据的5个特征,即Volume,Velocity,Variety,Value,Veracity。

Volume指数据量大,随着海量数据的产生和收集,数据规模变得越来越大。目前企业的数据量已经跃升到PB级别。

Velocity指大数据的时效性,即必须快速、及时地进行数据的收集和分析,以最大限度地利用大数据的商业价值。

Variety指数据具有多样性,数据来源丰富,数据类型和格式多样,不仅包括传统的结构化数据,还包括如音频、视频、网页和文本等半结构化和非结构化数据。

Value指数据的价值,虽然数据从不同的渠道产生,但有一点很重要,即今天的数据蕴含价值。数据本身是一种“商品”,可以卖给第三方获得收入。此外,通过分析数据有助于预算决策,从而获取价值。

Veracity指数据的准确性,尽管数据是蕴含价值的,但只有真实准确的数据才能提供决策支持,体现数据的价值。高质量的数据能够影响决策的准确性和有效性。

2 大数据计算框架与平台分析

大数据计算框架负责对大数据系统中的数据进行计算,目前的大数据计算框架有很多,本文主要介绍批处理计算、流计算、交互式计算和图计算四种模式下的计算框架。

2.1 批处理计算框架与平台

批处理计算模式对存储的大规模静态数据进行计算,等到全部处理完成后返回有价值的结果。目前用于批处理计算的框架和平台主要有以下几种:

(1)MapReduce计算框架

MapReduce[2]是一种分布式并行计算框架,广泛用于大规模批处理计算中。MapReduce将并行计算过程抽象为map和reduce两个函数,存储在系统中的数据集被拆分成许多子集在多台机器上执行。其中,一台机器作为master负责作业和任务的调动,其他机器作为worker承担master指派的任务。master将拆分的数据片分配给空闲的worker,执行map任务的worker处理相应的分片,生成对,并将它们写到中间文件(磁盘上或内存中);master通知执行Reduce任务的worker自己所处理任务的存储位置,执行Reduce任务的worker读取中间数据,然后根据Reduce函数处理数据,最后将数据写入输出文件。

MapReduce以其良好的性能得到了学术界和工业界的广泛关注和应用。简单性、可伸缩性和容错性是MapReduce框架的三个主要显著特性。它允许一个没有经验的程序员开发并行程序,并创建一个能够在云中使用计算机的程序。可以通过增加机器来扩展其计算能力,处理大规模离线数据。当某个设备故障,可以转移任务至其他设备而保障任务执行不受影响。尽管MapReduce有着巨大的优势,但它也存在局限性。首先,MapReduce访问数据时延迟高,执行时间耗时长,不适合交互式处理和基于事件的实时在线流计算。其次,在迭代计算时,每次迭代都需要启动MapReduce作业,开销较大,计算时间显著增加,因此也不适用于迭代计算(图计算、机器学习等)。

(2)Hadoop数据处理平台

Hadoop是基于java的开源分布式计算平台,灵感来自谷歌的BigTable、文件系统(GFS)和MapReduce。它的核心部分包括一个MapReduce组件和一个可伸缩性存储组件Hadoop分布式文件系统(HDFS)。

HDFS[2]用于存储计算过程中的中间态结果和最终结果,支持海量数据和冗余数据的存储,具有较快的读写速度、较高的数据安全性、很好的容错性和可伸缩性。MapReduce是针对Google MapReduce的开源实现,用于大规模数据的并行计算。Hadoop中的MapReduce计算模型允许直接用Java、python、R、SQL等编程语言编写数据分析任务的程序。此外,Hadoop还具有较高的扩展性,hadoop的许多核心组件,如调度程序、存储子系统、压缩算法、缓存层和监控等均可进行定制和替换。

Hadoop以其高效性、可扩展性、可靠性、容错性、低成本以及支持多种编程语言而受到欢迎,成为公认的行业大数据标准开源软件,目前被广泛用于Web索引、推荐系统和日志分析以及某些大规模的信息提取和机器学习任务等方面。亚马逊、Facebook、淘宝和Twitter等领先的技术公司都在使用Hadoop。Hadoo虽然在各方面性能良好,但是其需要大量的Java专业知识来开发并行程序,缺乏强大的统计和可视化工具,数据访问延迟高,而且不支持多用户写入和修改文件。

(3)Dryad计算框架

Dryad[3]是微软的分布式并行计算平台。包括Dryad和DryadLINQ两个重要项目。Dryad是微软云计算基础设施的重要核心技术之一,它不仅是并行计算编程模型也是任务调度模型。Dryad的任务执行用有向无环图(DAG)来表述,图中的顶点表示程序,边表示通道,而任务就是图形生成器,可以合成任何有向无环图,这些图可以在执行过程中根据计算中发生的事件而改变。

DryadLINQ是分布式编程语言,它结合了Dryad和LINQ技术,将使用LINQ编写的程序转化为Dryad上的可运行程序,在延续了LINQ特性的同时,为更好适应分布式计算的需求,扩展了操作符以及数据类型。DryadLINQ允许程序员使用计算机集群或数据中心的资源来运行数据并行程序,而不需要程序员掌握高深的编程知识。Dryad具有良好的容错性和扩展性,底层的数据存储支持数据备份,但是仅适用于批处理计算,满足不了对实时任务的需求,其数据模型只适用于流式数据访问而不支持随机访问。

2.2 流计算框架与平台

流计算实时获取来自不同数据源的海量数据,经过实时分析,得出有价值的结果,目前用于流计算的框架和平台主要有Storm、S4和Spark等。

(1)Storm框架

Storm[4]是一个开源的分布式实时计算系统,它使得可靠地处理无界数据流变得很容易。就像Hadoop在批处理中的意义一样,Storm在实时处理中也有相同的意义。Storm运行在分布式集群上,与Hadoop相似也采用主从式架构,主控节点master上运行Nimbus程序,负责集群范围的资源分配、状态监控、故障检测并为worker进行任务分配,从节点worker有多个,其上运行supervisor程序,负责监听和接收Nimbus分配的任务,并根据其分配的任务选择启动或停止worker工作进程。Nimbus和Supervisor之间的协调工作是通过分布式协调组件zookeeper完成的,保证了Storm的可靠性。

Storm支持多种编程语言,配置和操作简单,处理速度快,具有较高的扩展性和容错性,常用于实时分析、连续计算、在线机器学习等领域。

(2)Apache S4框架

Apache S4[5]是Yahoo发布的一个通用的分布式流计算平台,它允许程序员轻松地用于开发处理连续无界数据流的应用程序。在S4中任务被分解为更多小的流事件,其计算由多个计算单元(PE)相互配合完成,S4采用的是对等架构,没有中心节点,所有节点都是等同的,节点主要任务是监听并分发接收到的事件,在接收到事件后调用合适的PE进行处理,PE之间通过消息形式传输。每个PE的状态是其他PE无法访问的;事件排放与消费是PE之间唯一的交互模式。S4中节点的对等特性使系统在某个节点失效的情况下仍能进行时间的处理,极大地提高了系统的性能,但是会造成数据的丢失,同时S4也不支持动态部署,缺乏自动均衡负载的能力。

(3)Spark框架

Apache Spark[6]是加州大学伯克利分校的AMPLab开发的基于内存计算的轻量型计算框架,目前主要运行垃圾邮件过滤和流量预测等大规模应用程序。Spark支持批处理、交互式分析、流计算和迭代计算等多种计算模式。Spark将数据存储在抽象的弹性分布式数据集(RDD)中,Spark 将RDD数据集的操作结果存到内存中,方便下次操作可以直接从内存中读取数据,减少了大量磁盘I/O操作,提升了集群的数据处理速度。Spark 还提供了内存中的集群计算和Scala、Java、Python等API,支持多种编程语言,对编程人员来说简单易用。但Spark分析目前仍大多依赖于Hadoop的HDFS。

2.3 交互式计算框架

交互式分析是指对数据进行处理,允许用户进行自己的信息分析,目前的交互式计算工具有Apache Drill、Apache Kylin、Impala、presto、Spago BI等,其中最具代表性的是Apache Drill。

Apache Drill是谷歌Dremel系统的开源实现,是一个可伸缩的交互式查询系统,用于对大规模数据集进行交互分析。Drill的核心是DrillBit服务,它主要负责接收来自客户端的请求,处理查询任务并将结果返回。Drill数据灵活、SQL查询延迟低、支持多数据源。Drill的设计方向是支持更多的查询语言、数据源和数据格式,能够扩展更多的服务器,能够在几秒钟内处理PB级的数据和数万亿的记录。

2.4 图计算框架

图计算主要对大规模图结构数据进行计算,能够非常好的表示数据之间的关联性。图计算平台有很多,如Pregel、Giraph、Hama、GiraphX、powerGiraph等,目前最常用的是GiraphX。

GiraphX[7]是一个分布式图计算框架,它是基于分布式平台Spark的,提供给你了丰富的接口,提高了分布式图处理的需求,同时GiraphX还对Spark RDD进行了扩展,它有Table和Graph两种视图,这两种视图共用一份物理存储,而且都有自己特有的操作符,这使得操作更加灵活、执行更加高效,也降低了平台中计算和存储的开销。

3 结束语

大数据分布式计算是大数据技术的核心,目前已经得到了迅猛的发展。不同的计算模式满足不同应用的需求,这些计算模式彼此之间可以相互配合,并不是完全独立的。特别是随着用户应用需求越来越多样化,要求越来越高以及新技术的不断出现,其所需要的计算模式也需要不断地变化,这迫使各种计算框架也在不断地改进,并相互竞争。这些问题都对各计算框架的吞吐量、系统开销、实时性以及响应速度等性能提出了更高的要求,也成为大数据计算框架需要改进的方向。因此,大数据计算框架依然是大数据今后研究的重点。

[1]Lomotey R K ,Deters R . Towards Knowledge Discovery in Big Data[C].IEEE International Symposium on Service Oriented System Engineering. IEEE Computer Society, 2014:181-191.

[2]林子雨.大数据技术原理与应用:概念、存储、处理、分析与应用[M].人民邮电出版社,2015.

[3]郑纬民.从系统角度审视大数据计算[J].大数据,2015, 1(1):10-19.

[4]赵娟,程国钟.基于Hadoop、Storm、Samza、Spark及Flink大数据处理框架的比较研究[J].信息系统工程,2017(6):117-117.

[5]赵晟,姜进磊.典型大数据计算框架分析[J].中兴通讯技术,2016,22(2):14-18.

[6]杨宁,黄婷婷.基于Spark的大数据分析工具Hive的研究[J].计算机时代,2018,317(11):35-39.

[7]米沃奇.大数据分析系统Hadoop的13个开源工具[J]. 电脑知识与技术(经验技巧),2018(07):107-109.

[8]孙海. Spark的图计算框架:GraphX[J].现代计算机, 2017(9):120-122.

猜你喜欢

批处理分布式框架
有机框架材料的后合成交换
框架
恶意批处理文件导致电脑黑屏、反复重启、无响应的原因分析及应对思路
浅析分布式发电对电力系统的影响
不装软件批处理为文件夹加锁
借助批处理 让Cortana变聪明
基于预处理MUSIC算法的分布式阵列DOA估计
关于原点对称的不规则Gabor框架的构造
分布式并联逆变器解耦电流下垂控制技术
我国在WYO框架下面对的贸易保护现状及应对