大数据分析师为什么需要学习Spark?

作者 CDA 数据分析师

Spark这套速度极快的内存分析引擎与以往的大数据处理框架相比具有诸多优势,从而能够轻松地为大数据应用企业带来理想的投资回报。Spark项目将一系列创新型思维带入了大数据处理市场,并且表现出极为强劲的发展势头。近年来,CDA大数据团队针对Spark框架开展了广泛深入的研究,并融入到大数据分析师的培训课程中,整个课程体系变得更加完善,我们相信,随着整个团队的不断努力,我们的大数据分析师培训项目将日臻完美。

一、Spark的发展

Spark是伯克利大学2009年开始研发的一个项目,于2010年开源。自从2013年Spark进入Apache的孵化器项目后,发生了翻天覆地的变化。2014年初,Spark成为了Apache排名第三的顶级项目,其发展势头更加迅猛。Spark通常一个多月就会发布一个小版本,两三个月左右会发布一个大版本,目前最新版本为1.5.2。2014年,Hadoop的四大商业机构均宣称全力支持Spark,今后将全面接收基于Spark编写的数据挖掘与分析算法,多家世界顶级的数据企业例如Google,Facebook等现已纷纷转向Spark框架。目前参与贡献的公司也超过50家;代码库也由原来的63000行增加到175000行。

近两年,Spark在中国的发展达到了一个前所未有的状态和高度。其中阿里巴巴的搜索和广告业务,最初使用Mahout和MapReduce来解决复杂的机器学习问题,但是在效率和代码维护方面并不理想,现已转向Spark框架。淘宝技术团队使用Spark实现了多次迭代的机器学习算法和一些高计算复杂度的算法,并将其运用在推荐系统上;同时还利用Spark中的一系列组件解决了基于最大连通图的社区发现、基于三角形计数的关系衡量、基于随机游走的用户属性传播等许多生产问题。此外,腾讯也是最早使用Spark的应用之一,借助Spark快速迭代的优势,腾讯提出了大数据精准推荐,并采用“数据+算法+系统”这套技术方案支持每天上百亿的请求量。

二、Spark四大特性

特性一:快速

相同的实验环境与数据下,在内存中运行相同的程序,Spark比MapReduce快约100倍;在磁盘中运行相同的程序,Spark要MapReduce快约10倍。例如图2所示,Spark和MapReduce进行逻辑回归运算后的实验数据。

针对于非常考验系统性能的排序问题,图3是Spark与MapReduce对100TB数据样本排序的实验结果:MapReduce用了2100台机器,花费72分钟;而Spark仅用207台机器,不到前者的1/10,花费23分钟,接近前者的1/3。

此外,众多实验表明,在处理迭代式应用上Spark比MapReduce快20多倍;计算数据分析类报表的性能提高了40多倍;Spark能够在5-7秒的延时内交互式扫描1TB数据集。

Spark运行速度如此之快,主要得益于以下两方面:一方面,Spark中的运算大多是基于内存的。Spark提出了一种分布式的内存抽象,称为弹性分布式数据集(RDD,Resilient DistributedDatasets)。RDD支持基于工作集的应用,同时具有数据流模型的特点:自动容错、位置感知调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。另一方面,Spark从稳定的物理存储(如分布式文件系统)中加载记录,记录被传入由一组确定性操作构成的DAG,然后写回稳定存储。DAG数据流图能够在运行时自动实现任务调度和故障恢复。尽管非循环数据流是一种很强大的抽象方法,但仍然有些应用无法使用这种方式描述。Spark能够在多个并行操作之间重用工作数据集,适用于非循环数据流模型难以处理的应用。

特性二:易用

Spark编程非常高效、简洁,支持多种语言的API,如Java, Scala, Python等,而且代码非常简洁。例如在基于MapReduce开发的WordCount示例程序中,用户需要重写Map类和Reduce类,虽然MapReduce类似八股文的程序编写模式极大地简化了并行程序开发过程,但是程序代码至少几十行。若基于Spark开发同样的WordCount程序,仅需下面短短的几行代码,例如下面程序是对存储在HDFS上的wc.input中的单词个数进行统计:

sc.textFile("hdfs://master:8020/user/dong/spark/wc.input").flatMap(_.split("")).map((_,1)).reduceByKey(_+ _).collect

由此可见,Spark编程非常简洁。这主要是因为Spark是基于Scala开发,其对数据处理提供了丰富的操作,极大地提高了用户的程序开发效率。

目前基于Spark的实际项目开发中约70%采用Scala语言,这是因为Spark本身就是基于Scala开发的;其次是JAVA,约占20%;此外还有Python等。

特性三:通用

相对与第一代的大数据生态系统Hadoop中的MapReduce,Spark 无论是在性能还是在方案的统一性方面,都有着极大的优越性,虽然MapReduce在此方面也在做积极的努力,但Spark的优势还是明显的。Spark框架通常涉及到五个最核心的组件。如图4所示,位于下面的Apache Spark又称为Spark Core。在Spark Core的基础上,针对一些特殊的需求,Spark开发了一系列组件:Spark SQL(在Spark上建立是SQL,类似于Hive);Spark Streaming(实时流处理系统);MLlib(用户友好的机器学习库);GraphX(图处理组件),此外还有一个BlinkDB(基于海量数据的交互式查询引擎,能够在设定的误差范围内或响应时间内进行SQL查询)。将这些组件放在一起,就构成了一个Spark的软件栈。基于这个软件栈Spark提出并实现了一种理念“one stack to rule them all”,即Spark可以对大数据进行综合处理:实时数据流处理、批处理和交互式查询。这一软件栈就体现了Spark的通用性。

特性四:多种运行模式

在运行方面,Spark的运行无处不在。Spark既可以运行本地local模式,也可以以Standalone、cluster等多种模式运行在Yarn、Mesos上,还可以运行在云端例如EC2。此外,Spark的数据来源非常广泛,可以处理来自HDFS、HBase、 Hive、Cassandra、Tachyon上的各种类型的数据。

借助Spark快速迭代的优势,CDA大数据分析师3个月就业班课程着重学习Spark内容,通过案例分析实战,解决工作应用中的难题。

原文发布于微信公众号 - CDA数据分析师(cdacdacda)

原文发表时间:2017-08-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏祝威廉

用机器学习流程去建模我们的平台架构

spark.ml 在一开始就提出了五个概念。这五个概念也完全可以对一个通用的service platform进行建模和抽象。我们来看看。

831
来自专栏腾讯大数据的专栏

飞起来的大象-Hadoop从离线到在线

时代在变迁,市场在变化,周边的软硬件环境也突飞猛进般的发展,同时企业的业务需求也不断升级,从规模到成本都有较高的要求,这刺激Hadoop生态圈的变革。据AMR研...

2778
来自专栏PPV课数据科学社区

【学习】如何从菜鸟成长为Spark大数据高手?

Spark采用一个统一的技术堆栈解决了云计算大数据的如流处理、图技术、机器学习、NoSQL查询等方面的所有核心问题,具有完善的生态系统,这直接奠定了其一统云计算...

36210
来自专栏加米谷大数据

Spark适用场景以及与Hadoop MapReduce优势对比

3333
来自专栏陈湘玲的专栏

生儿育女的算法应用

有没有设想过,生活中突然多了个孩子会是什么体验? 如何更好Handle新身份,用科学的理论武装自己? 不妨看一下这篇不像攻略的攻略,探索新领域带来的乐趣。

1.7K6
来自专栏CDA数据分析师

嫌弃Hadoop?可能是你的打开方式有问题

原作者 Andrew Brust 编译 CDA 编译团队 本文为 CDA 数据分析师原创作品,转载需授权 关于 Hadoop 所谓的消亡,以及它跌落神坛的报...

2069
来自专栏大数据技术学习

大数据学习过程中需要看些什么书?学习路线

很多朋友对大数据行业心向往之,却苦于不知道该如何下手。作为一个零基础大数据入门学习者该看哪些书?今天给大家推荐一位知乎网友挖矿老司机的指导贴,作为参考。

4223
来自专栏SAP最佳业务实践

从SAP最佳业务实践看企业管理(182)-作业成本要素与核算模型

作业成本核算模型是实施作业成本法(Activity-Based Costing)的基础,是对作业成本法核算体系的描述,因此作业成本核算模型在作业成本法的实施过程...

2997
来自专栏钱塘大数据

【推荐阅读】系统性解读大数据处理框架

微信后台回复:“框架”,获取高清图片 前言 说起大数据处理,一切都起源于Google公司的经典论文:《MapReduce:Simplied Data Proce...

3628
来自专栏大数据和云计算技术

hadoop发行商介绍:Cloudera

‍‍‍‍在Hadoop生态系统中,规模最大、知名度最高的公司则是Cloudera。现在国内很多公司也都选用他们的发行版本(CDH)。‍‍ ‍‍Cloudera由...

3048

扫码关注云+社区

领取腾讯云代金券