
随着互联网、移动互联网和物联网的发展,我们已经切实地迎来了一个大数据的时代。大数据是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合,对大数据的实时分析已经成为一个非常重要且紧迫的需求。目前对大数据的实时分析工具,业界公认最佳为Spark。Spark是一个开源集群运算框架,最初是由加州大学柏克利分校AMPLab所开发,Spark使用了内存内运算技术,在内存上的运算速度比HadoopMapReduce的运算速度快上100倍,即便是在磁盘上运行也能快10倍。那么,关于北京大讲台spark培训为什么如此之火?下面我们一起来一下吧。
近两年,Spark在中国的发展达到了一个前所未有的状态和高度。其中阿里巴巴的搜索和广告业务,最初使用Mahout和MapReduce来解决复杂的机器学习问题,但是在效率和代码维护方面并不理想,现已转向Spark框架。

1、Spark四大特性之特性一:快速
相同的实验环境与数据下,在内存中运行相同的程序,Spark比MapReduce快约100倍;在磁盘中运行相同的程序,Spark要MapReduce快约10倍,Spark和MapReduce进行逻辑回归运算后的实验数据。
针对于非常考验系统性能的排序问题,解释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,ResilientDistributedDatasets)。RDD支持基于工作集的应用,同时具有数据流模型的特点:自动容错、位置感知调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。另一方面,Spark从稳定的物理存储(如分布式文件系统)中加载记录,记录被传入由一组确定性操作构成的DAG,然后写回稳定存储。DAG数据流图能够在运行时自动实现任务调度和故障恢复。尽管非循环数据流是一种很强大的抽象方法,但仍然有些应用无法使用这种方式描述。Spark能够在多个并行操作之间重用工作数据集,适用于非循环数据流模型难以处理的应用。
2、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等。
3、Spark四大特性之特性三:通用
相对与第一代的大数据生态系统Hadoop中的MapReduce,Spark无论是在性能还是在方案的统一性方面,都有着极大的优越性,虽然MapReduce在此方面也在做积极的努力,但Spark的优势还是明显的。Spark框架通常涉及到五个最核心的组件。位于下面的ApacheSpark又称为SparkCore。在SparkCore的基础上,针对一些特殊的需求,Spark开发了一系列组件:SparkSQL(在Spark上建立是SQL,类似于Hive);SparkStreaming(实时流处理系统);MLlib(用户友好的机器学习库);GraphX(图处理组件),此外还有一个BlinkDB(基于海量数据的交互式查询引擎,能够在设定的误差范围内或响应时间内进行SQL查询)。将这些组件放在一起,就构成了一个Spark的软件栈。基于这个软件栈Spark提出并实现了一种理念“onestacktorulethemall”,即Spark可以对大数据进行综合处理:实时数据流处理、批处理和交互式查询。这一软件栈就体现了Spark的通用性。
4、Spark四大特性之特性四:多种运行模式
在运行方面,Spark的运行无处不在。Spark既可以运行本地local模式,也可以以Standalone、cluster等多种模式运行在Yarn、Mesos上,还可以运行在云端例如EC2。此外,Spark的数据来源非常广泛,可以处理来自HDFS、HBase、Hive、Cassandra、Tachyon上的各种类型的数据。
最后想要了解更多关于Spark的新闻资讯,请关注大讲台官网、微信等平台,大讲台IT职业在线学习教育平台为您提供权威的大数据Spark培训视频课程系统,通过大讲台金牌讲师在线录制的第一套自适应Spark在线视频课程系统,让你快速掌握Spark从入门到精通大数据开发实战技能。