您的位置:首页 > 大数据

闪亮的新星--Spark大数据处理平台

2017-06-27 12:14 447 查看
时下,大数据概念非常火热,相关处理技术也在各行各业中应用开来,并开始展露头角:如我国已建成的国家级大数据中心,在证券行业兴起的云投顾、交易所大数据监察等等。那作为一名技术人员,如何紧跟发展趋势,学习并掌握大数据处理技术呢? 本文将主要介绍什么是大数据及特点、发展历程、Hadoop简介、着重讲解Spark特点、体系结构、生态 、学习路线。(后续将陆续推出实战进阶内容,敬请期待)

一、何为“大数据”? 有哪些特点?

我们处在一个数据大爆炸的时代,数据无处不在,并且每年以惊人的速度递增,特别是近年来物联网的兴起:



上图中的数字不好直观理解,具体以百度公开的数据来举个例子:百度每天处理的数据量将近100个PB,1PB就等于100万个G,相当于5000个国家图书馆的信息量的总和。

数据之”大”, 那么大数据有哪些特征呢? 主要有以下四大特征(4V特征:容量Volume、速度Velocity、多样Variety、价值Value):



我们了解了大数据的”大”与特点, 接下来一起看看它的发展历程

二、大数据主要发展历程

下面整理了大数据的发展过程的主要事件:

1. 2005年Google Hadoop项目诞生;

2. 2008年末,业界组织计算社区联盟 (Computing Community Consortium)发表了一份有影响力的白皮书《大数据计算:在商务、科学和社会领域创建革命性突破》(最早提出大数据概念);

3. 2010年2月,肯尼斯ž库克尔在《经济学人》上发表了长达14页的大数据专题报告《数据,无所不在的数据》;

4. 2011年2月,IBM的沃森超级计算机每秒可扫描并分析4TB(约2亿页文字量)的数据量;

5. 2011年5月,全球知名咨询公司麦肯锡(McKinsey&Company)肯锡全球研究院(MGI)发布了一份报告——《大数据:创新、竞争和生产力的下一个新领域》,大数据开始备受关注;

6. 2012年4月,美国软件公司Splunk于19日在纳斯达克成功上市,成为第一家上市的大数据处理公司;

7. 2015年9月,国务院印发《促进大数据发展行动纲要》,到2020年,培育10家国际领先的大数据核心龙头企业,500家大数据应用、服务和产品制造企业;

8. 2016年5月,贵阳大数据交易所发布《2016年中国大数据交易产业白皮书》;

9. 2016年3月《中国人工智能创新发展的规划》出台;

10. 2017年4月1日IT领袖峰会,共话“智能新时代”。

从上面所列进程可以看出,我们国家在大数据方面也迈开了坚实的一步,从发展战略的角度用3年的时间建成了国家级大数据中心(三中心、八大节点)。

我们已经了解了大数据的”大”及特点与发展主要历程,接下来着重了解当前市场上的两大大数据平台:Hadoop和Spark。

三、大数据处理平台之Hadoop简介

前面我们已经提到Hadoop早在2005年由Google率先推出,成为

当时领先的大数据处理平台:



两大核心设计:HDFS(分布式文件系统)和 MapReduce



MapReduce处理流程:



MapReduce 是大规模数据(TB 级)计算的利器,Map 和Reduce 是它的主要思想,来源于函数式编程语言,它的原理如上图所示:Map负责将数据打散,Reduce负责对数据进行聚集,用户只需要实现map 和reduce 两个接口,即可完成TB级数据的计算,常见的应用包括:日志分析和数据挖掘等数据分析应用。另外,还可用于科学数据计算,如圆周率PI 的计算等。

举例解析: 假设要数图书馆中的所有书,你数1号书架,我数2号书架,这就是“Map”,人越多,数书就更快;把所有人的统计数加在一起这就是“Reduce”。

Hadoop因为MapReduce的设计需要多次读写文件系统(后面的比对)适合对速度要求不高的统计分析领域,但不太适合处理速度要求快的场合(比如访问日志近实时的统计)。所以在后续的发展过程中出现的Spark优势明显:它的批处理速度比MapReduce快近10倍,内存中的数据分析速度则快近100倍,迅速被一些大厂及创业公司所使用。接下来让我们来了解这颗闪亮的新星是如何做到10-100倍性能改善的?

四、大数据处理平台之Spark简介

Spark就是目前大数据处理领域众多平台脱颖而出的一颗新星: 2009年,Spark诞生于伯克利大学AMPLab,最开初属于伯克利大学的研究性项目。它于2010年正式开源,并于2013年成为了Apache基金项目,并于2014年成为Apache基金的顶级项目。它的整个发展过程中都烙上了学术研究的标记,发展动力源于数据科学学术基因,使得它从一开始就在大数据领域建立了一定优势。无论是性能,还是方案的统一性,对比传统的Hadoop,优势都非常明显(10-100提升)。

RDD是Spark的核心,也是整个Spark的架构基础。全称为Resilient Distributed Datasets,是一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。同时,RDD还提供了一组丰富的操作来操作这些数据。在这些操作中,诸如map、flatMap、filter等转换操作实现了monad模式(一种函数式编程模式),很好地契合了Scala的集合操作。除此之外,RDD还提供了诸如join、groupBy、reduceByKey等更为方便的操作(注意,reduceByKey是action,而非transformation),以支持常见的数据运算。通常来讲,针对数据处理有几种常见模型,包括:Iterative Algorithms,Relational Queries,MapReduce,Stream Processing。例如Hadoop MapReduce采用了MapReduces模型,Storm则采用了Stream Processing模型。RDD混合了这四种模型,使得Spark可以应用于各种大数据处理场景。

Spark提供的基于RDD(弹性数据集)的一体化解决方案,将MapReduce、Streaming、SQL、Machine Learning、Graph Processing等模型统一到一个平台下,并以一致的API公开,并提供相同的部署方案,使得Spark的工程应用领域变得更加广泛。

接下来我们来看看它是怎样的体系结构?

五、Spark体系结构

首先从与Hadoop比对开始:



从上图可以看出一个显著的特点:Spark主要是基于内存计算的,而且中间结果又可以作为下一步计算的输入,相反Hadoop依赖HDFS,每一步处理都要读写文件,这就是它处理慢的主要原因。我们再具体对比一下,如下图:



Spark基础架构之上支持四大模块,分别是SparkSQL、SparkStreaming、MLlib和GraphX:



如上图所示:

Spark Streaming: 基于微批量方式的计算和处理,可以用于处理实时的流数据。它使用DStream,简单来说就是一个弹性分布式数据集(RDD)系列,处理实时数据。

Spark SQL: 可以通过JDBC API将Spark数据集暴露出去,而且还可以用传统的BI和可视化工具在Spark数据上执行类似SQL的查询。用户还可以用Spark SQL对不同格式的数据(如JSON,Parquet列式存储格式以及数据库等)执行ETL,将其转化,然后暴露给特定的查询。

Spark MLlib: 是一个可扩展的Spark机器学习库,由通用的学习算法和工具组成,包括二元分类、线性回归、聚类、协同过滤、梯度下降以及底层优化原语。

Spark GraphX: GraphX是用于图计算和并行图计算的新的(alpha)Spark API。通过引入弹性分布式属性图(Resilient Distributed Property Graph),一种顶点和边都带有属性的有向多重图,扩展了Spark RDD。为了支持图计算,GraphX暴露了一个基础操作符集合(如subgraph,joinVertices和aggregateMessages)和一个经过优化的Pregel API变体。此外,GraphX还包括一个持续增长的用于简化图分析任务的图算法和构建器集合。

除了这些库以外,还有一些其他的库,如BlinkDB和Tachyon。BlinkDB是一个近似查询引擎,用于在海量数据上执行交互式SQL查询。


六、Spark生态

以下是Spark生态图,几乎支持目前市场上众多的组件,如消息队列Kafka、nosql Mongodb、Mysql、Hbase、elasticsearch等。



七、Spark学习路线

Spark优势在于分布式内存数据处理,建议主要从以下几方面学习、渐进:

1. 平台基础、体系结构

2. 编程语言,学习一到两种或All:Scala、Java、Python、R

3. 进阶实践:RDD、Sql、MLib、Streaming、GraphX

4. 通过以上的学习并应用到具体的工作中:挑战实践大容量日志存储、分析统计、1000w及以上账户的历史收益率计算、存储…
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息