Spark的优势不仅体现性能的提升,Spark框架为批处理(Spark Core)、SQL查询(Spark SQL)、流式计算(Spark Streaming)、机器学习(MLlib)、图计算(GraphX)提供一个统一的数据处理平台,这相对于使用Hadoop有很大优势。已经成功应用Spark的典型案例如下:
9.4.2.1 腾讯
为了满足挖掘分析与交互式实时查询的计算需求,腾讯大数据使用了Spark平台来支持挖掘分析类计算、交互式实时查询计算以及允许误差范围的快速查询计算,目前腾讯大数据拥有超过200台的Spark集群。
腾讯大数据精准推荐借助Spark快速迭代的优势,围绕“数据+算法+系统”这套技术方案,实现了在“数据实时采集、算法实时训练、系统实时预测”的全流程实时并行高维算法,最终成功应用于广点通上,支持每天上百亿的请求量。
9.4.2.2 Yahoo
在Spark技术的研究与应用方面,Yahoo始终处于领先地位,它将Spark应用于公司的各种产品之中。移动App、网站、广告服务、图片服务等服务的后端实时处理框架均采用了Spark的架构。
Yahoo选择Spark基于以下几点进行考虑:
(1)进行交互式SQL分析的应用需求。
(2)RAM和SSD价格不断下降,数据分析实时性的需求越来越多,大数据急需一个内存计算框架进行处理。
(3)程序员熟悉Scala开发,学习Spark速度快。
(4)Spark的社区活跃度高,开源系统的Bug能够更快地解决。
(5)可以无缝地将Spark集成进现有的Hadoop处理架构。
9.4.2.3 淘宝
淘宝技术团队使用了Spark来解决多次迭代的机器学习算法、高计算复杂度的算法等。将Spark运用于淘宝的推荐相关算法上,同时还利用GraphX解决了许多生产问题。
(1)Spark Streaming。淘宝在云梯构建基于Spark Streaming的实时流处理框架。Spark Streaming适合处理历史数据和实时数据混合的应用需求,能够显著提高流数据处理的吞吐量。其对交易数据、用户浏览数据等流数据进行处理和分析,能够更加精准、快速地发现问题和进行预测。
(2)GraphX。淘宝将交易记录中的物品和人组成大规模图。使用GraphX对这个大图进行处理(上亿个节点,几十亿条边)。GraphX能够和现有的Spark平台无缝集成,减少多平台的开发代价。
9.4.2.4 优酷土豆
优酷土豆作为国内最大的视频网站,和国内其他互联网巨头一样,率先看到大数据对公司业务的价值,早在2009年就开始使用Hadoop集群,随着这些年业务迅猛发展,优酷土豆又率先尝试了仍处于大数据前沿领域的Spark内存计算框架,很好地解决了机器学习和图计算多次迭代的瓶颈问题,使得公司大数据分析更加完善。
据了解,优酷土豆采用Spark大数据计算框架得到了英特尔公司的帮助,起初优酷土豆并不熟悉Spark以及Scala语言,英特尔帮助优酷土豆设计出具体符合业务需求的解决方案,并协助优酷土豆实现了该方案。此外,英特尔还给优酷土豆的大数据团队进行了Scala语言、Spark的培训等。
本章介绍了Spark大数据处理框架。通过本章的学习了解Spark的概念与国内外研究现状;掌握Spark有哪些优点(对比Hadoop);掌握Spark速度比Hadoop快的原因;掌握Spark生态系统的组成;了解Spark生态系统中的Runtime,Spark SQL,MLlib,GraphX,Spark Streaming的概念与应用;了解Spark的应用场景与成功应用Spark的典型案例。
【注释】(www.xing528.com)
1.迭代。是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。
2.流数据。流数据是一组顺序、大量、快速、连续到达的数据序列。一般情况下,数据流可被视为一个随时间延续而无限增长的动态数据集合。应用于网络监控、传感器网络、航空航天、气象测控和金融服务等领域。
3.R语言。用于统计分析、绘图的语言和操作环境。R语言是一个自由、免费、源代码开放的软件,是一个用于统计计算和统计制图的优秀工具。
4.机器学习。是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
5.序列化。序列化将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
6.逻辑回归。是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。
7.Python语言。是一种面向对象、解释型计算机程序设计语言。Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。
8.JVM。是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
9.sc.textFile。默认是从HDFS读取文件,也可以指定路径,在路径前面加上HDFS://表示从HDFS文件系统上读取。
10.flatMap。类似于map。map是对RDD中的每个元素都执行一个指定的函数来产生一个新的RDD。任何原RDD中的元素在新RDD中都有且只有一个元素与之对应。而flatMap是原RDD中的元素经处理后可生成多个元素来构建新RDD。
11.reduceByKey。就是对元素为KV对的RDD中Key相同的元素的Value进行Reduce,因此,Key相同的多个元素的值被Reduce为一个值,然后与原RDD中的Key组成一个新的KV对。
12.API。应用程序编程接口是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无须访问源码,或理解内部工作机制的细节。
13.JSON。是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java,JavaScript,Perl,Python等)。这些特性使JSON成为理想的数据交换语言。
14.JDBC。Java数据库连接。是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
15.ODBC。开放数据库连接。是微软公司开放服务结构中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。
16.持久化。把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等。
17.iter。迭代器,有时又称游标,是程序设计的软件设计模式,可在容器(例如链表或阵列)上遍访的接口,设计人员无须关心容器的内容。
18.广点通。是一个依托优质流量资源,可提供给广告主多种广告形式投放,并利用专业数据处理算法实现成本可控、效益可观、智能定位的广告投放系统。
19.Bug。漏洞,是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。