编辑推荐
Spark被称为大数据处理王者技术Hadoop的真正挑战者。本书以丰富示例介绍Spark程序和数据挖掘算法设计,更好地帮助Spark开发者提高学习效率。
内容简介
本书以时下流行的Hadoop所存在的缺陷为出发点,深入浅出地介绍了下一代大数据处理核心技术Spark的优势和必要性,并以简洁的指引步骤展示了如何在10分钟内建立一个Spark大数据处理环境。在此基础上,本书以图文并茂和丰富的示例代码讲解的形式系统性地揭示了Spark的运行原理、算子使用、算法设计和优化手段,为读者提供了一个快速由浅入深掌握Spark基础能力和高级技巧的参考书籍。
本书共六章,涉及的主题主要包括大数据处理技术从Hadoop发展到Spark的必然性、快速体验Spark的指引、Spark架构和原理、RDD算子使用方法和示例、Spark算法设计实例、Spark程序优化方法。
本书适合需要使用Spark进行大数据处理的程序员、架构师和产品经理作为技术参考和培训资料,亦可作为高校研究生和本科生教材。
作者简介
刘军,男,1976年生人,博士,副教授,硕士生导师,北京邮电大学数据科学中心主任。
2003年至2007年任职于IBM中国研究院,担任高级研究员及部门经理,建立IBM中国研究院电信融合网络管理研究方向,主持研发Websphere及Tivoli电信产品线中多项关键技术,期间发表多篇国际会议及刊物论文,并申请获得多项美国专利。
2007年至2012年创办欢城(北京)科技有限公司,开创中国无端网络游戏产业,并担任中国软件协会网页游戏专业委员会委员。公司产品多次荣获国内互联网业界奖项,2008年获中国互联网协会“十分具运营价值Webgame”奖项,
2012年至今在北京邮电大学信息与通信工程学院任教,研究方向为电信及互联网大数据分析、高速数据流挖掘算法,并牵头组建北京邮电大学数据科学中心。开设研究生课程《海量数据处理中的云计算》,发表大数据分析相关SCI/EI检索论文十余篇,并独著《Hadoop大数据处理》一书,该书被哈工大、中南大学等多所高校的相关课程作为教材使用。
内页插图
目录
第1章从Hadoop到Spark
1.1Hadoop——大数据时代的火种
1.1.1大数据的由来
1.1.2Google解决大数据计算问题的方法
1.1.3Hadoop的由来与发展
1.2Hadoop的局限性
1.2.1Hadoop运行机制
1.2.2Hadoop的性能问题
1.2.3针对Hadoop的改进
1.3大数据技术新星——Spark
1.3.1Spark的出现与发展
1.3.2Spark协议族
1.3.3Spark的应用及优势
第2章体验Spark
2.1安装和使用Spark
2.1.1安装Spark
2.1.2了解Spark目录结构
2.1.3使用Spark Shell
2.2编写和运行Spark程序
2.2.1安装Scala插件
2.2.2编写Spark程序
2.2.3运行Spark程序
2.3Spark Web UI
2.3.1访问实时Web UI
2.3.2从实时UI查看作业信息
第3章Spark原理
3.1Spark工作原理
3.2Spark架构及运行机制
3.2.1Spark系统架构与节点角色
3.2.2Spark作业执行过程
3.2.3应用初始化
3.2.4构建RDD有向无环图
3.2.5RDD有向无环图拆分
3.2.6Task调度
3.2.7Task执行
第4章RDD算子
4.1创建算子
4.1.1基于集合类型数据创建RDD
4.1.2基于外部数据创建RDD
4.2变换算子
4.2.1对Value型RDD进行变换
4.2.2对Key/ Value型RDD进行变换
4.3行动算子
4.3.1数据运算类行动算子
4.3.2存储型行动算子
4.4缓存算子
第5章Spark算法设计
5.1过滤
5.2去重计数
5.3相关计数
5.4相关系数
5.5数据联结
5.6Top�睰
5.7K�瞞eans
5.8关联规则挖掘
5.9kNN
5.10朴素贝叶斯分类
第6章善用Spark
6.1合理分配资源
6.2控制并行度
6.3利用持久化
6.4选择恰当的算子
6.5利用共享变量
6.5.1累加器变量
6.5.2广播变量
6.6利用序列化技术
6.7关注数据本地性
6.8内存优化策略
6.9集成外部工具
参考文献
精彩书摘
第1章从Hadoop到Spark
说起Spark,就不得不提到可以说是Spark“前任”的Hadoop技术。同为目前最为炙手可热的两个大数据计算框架,Hadoop与Spark经常被放在一起进行比较。受Google大数据计算框架启发而产生的Hadoop由于出现时间较早,并且由于其大幅降低了编写分布式并行计算程序的难度,同时具备优秀的低成本和可扩展特性,从2008年成为Apache顶级项目起,Hadoop用不到10年的时间颠覆了历史悠久的大数据处理技术格局,成为当之无愧的大数据处理技术“无冕之王”。然而,由于Hadoop的设计重点是解决大数据量情况下的批量运算问题,因此在计算模式多元化(例如迭代和图计算)和实时性要求更高(流式计算和实时计算)的新环境下显得有点“老态龙钟”。于是,强调迭代计算下的性能以及兼容多种计算模式的Spark技术应运而生,并在很短的时间内形成了全面取代Hadoop之势。为了理清两者的关系以更好地理解Spark,在本书的开篇我们就从大数据的出现和Hadoop的产生说起,通过简要剖析Hadoop的原理以说明其局限性,并用一个简单的常用算法实例的运行性能对比,为大家展示Spark的强大能力。
1.1Hadoop——大数据时代的火种
1.1Hadoop——大数据时代的火种
1.1.1大数据的由来
1965年4月19日,时任仙童半导体公司工程师,后来创建英特尔公司的戈登·摩尔在著名的《电子学》杂志(Electronics Magazine)发表文章,预言半导体芯片上集成的晶体管和电阻数量将每年增加1倍。10年后,摩尔在IEEE国际电子组件大会上将他的预言修正为半导体芯片上集成的晶体管和电阻数量将每两年增加1倍,这就是著名的“摩尔定律”[1](如图1��1所示)。谁也想不到,这个预言犹如一只看不见的大手推动着半导体行业在半个世纪里的飞速发展,并见证了以此为基础的IT产业的蓬勃发展。然而,不是所有人都能有摩尔这样的洞察力和幸运。在变幻莫测的科技界,更多自信满满的预言者被无情的现实击败。下面,就让我们一起来回顾一下科技史上最为著名的6个失败预言,并见证随着这些预言逐一破灭而到来的大数据时代。
图1��1摩尔和摩尔定理
�r 最失败预言一: “我找不到普通家庭也需要计算机的理由。”
——肯·奥尔森(Ken Olsen),数字设备公司(DEC)创始人
1977年,美国数字设备公司(DEC)创始人肯·奥尔森认为,普通的家庭是不会花费巨资来购买一台计算机的。他认为普通家庭既承担不起计算机那昂贵的价格,也不需要计算机如此强大的计算能力。当然,后来的故事我们已经知道,随着Apple、IBM等推出价廉物美的个人计算机,PC迅速普及到普通家庭。早在2011年在美国进行的一次关于PC拥有量的调查就显示,仅拥有一台PC的家庭就占到14%,而约60%的家庭拥有3台或者3台以上PC。在中国市场,2014年全国家庭电脑普及率已超过50%,在经济较为发达的城市中,家庭电脑普及率已超过80%。很多家庭不仅拥有供家庭娱乐或办公用的台式机,还会购买一些出门旅行或者移动工作时需要的便携式电脑,包括笔记本、上网本、平板电脑等,甚至还有少数人会拥有自己的服务器。毫无疑问,计算机已成为我们日常生活的一部分。通过计算机,我们每个人都能够以前人所无法想象的速度产生、处理和消费数据。
�r 最失败预言二: “很多人预测1996年互联网产业将大规模增长。但我的预测是,1996年互联网产业由于增长过于快速,将像超新星一样爆炸后而走向崩溃。”
——罗伯特·迈特卡尔夫(Robert Metcalfe),3Com公司创始人
1995年,美国公共电视网(Public Broadcasting Service,PBS)推出了一档电视节目,名为《计算机记事》(Computer Chronicles)。这个节目介绍了当时还只是少数极客玩具的互联网相关技术、软件和服务。由此,互联网正式开始进入美国公众视野,随之而来的是快速增长的互联网用户并给当时有限的网络带宽带来了极大的压力。在这一背景下,网络设备制造商3Com创始人罗伯特·迈特卡尔夫在InfoWorld发文作出了悲观的预测。他预测1996年互联网产业将由于增长过于快速而走向崩溃,并表示如果事实情况证明自己该预测有误,将当众“自食其果”。显然,互联网并没有如他预测的那样走向衰败,反而日益繁荣。因此,在1999年举行的国际互联网大会上,迈特卡尔夫在众目睽睽之下,把印有这一预测文字的纸张搅拌到一杯水中,然后一饮而尽。到了21世纪的今天,互联网已经渗透到经济社会各领域,给每个人的生活带来了前所未有的改变。Google、Facebook、Youtube、Twitter、QQ、微博、微信等丰富多彩的互联网服务,为每个人打开了一扇从网络了解世界、向世界分享自我的窗口,在互联网中自由平等地交换数据与信息。
�r 最失败预言三: “全球垃圾邮件问题将在今后两年内得到解决。”
——比尔·盖茨(Bill Gates),微软创始人
随着20世纪90年代互联网的出现和发展,由于互联网及相关服务的高度开放性和交互性,任何一个网站或个人都能生产和发布信息,这为所有信息的传播开辟了一个几乎不受限制的空间。在此之前,全球的数据量基本是每20个月增加1倍。而在互联网出现之后,数据量则呈现出几何级数增长的趋势。然而,在暴涨的数据中,并不完全是对用户有益,其中还充斥着大量垃圾数据,垃圾邮件就是其中最臭名昭著的一类。比尔·盖茨,微软帝国的缔造者,毫无疑问是一位“技术控”,他坚信随着技术的发展垃圾邮件必然会得到有效控制,并且这一目标将很快实现,互联网会因此变得更加安全。因此,2004年11月在马德里举行的一次互联网大会上,比尔·盖茨表示: “目前垃圾邮件已成为全球非常严重的安全问题,业界还没有找到有效遏制措施,但我们希望这一现象在两年之内得到控制。”遗憾的是,现实比他预言的要残酷得多,直到今天垃圾邮件仍然是困扰全球互联网用户的顽疾。就在笔者编写本段文字的时候,在屏幕的右上角就在弹出邮件软件收到的垃圾邮件提示信息。
�r 最失败预言四: “电视节目的流行时间不会超过半年,公众每晚会面对着一个小盒子,他们将对此感到厌烦。”
——达里尔·扎努克(Darryl Zanuck),20世纪福克斯公司高管
在20世纪中期,电视机虽然已经开始走入普通家庭,开启了影音娱乐时代。但早期的电视机可以说只是一个简陋的黑白图像接收器,在这样的设备上观看娱乐节目的体验可想而知。因此,虽然像20世纪福克斯这样的传统电影制作和发行公司感觉到了电视所带来的挑战,但他们仍然认为这种简陋的娱乐形式很快会随着人们对电视机新鲜劲的过去而被淘汰,这也是为什么达里尔·扎努克会预言电视节目的寿命会非常短暂的原因。然而,扎努克严重低估了人们对即时影音媒介的强烈需求以及技术所带来的变化。随着彩色电视、无线技术和光通信技术的发展,电视节目从模拟信号发展为数字信号。同时,电视节目的传输媒介已经不仅仅局限在无线电波和有线电视线缆,人们可以通过PC、手机、平板电脑等多种终端收看电视节目。收看电视节目已经不仅仅是为了人们每晚的休闲娱乐,更是人们认识世界、了解世界的途径。人们对富媒体的需求不但没有减退,反而与日俱增。同时,人们对电视节目的视觉效果也提出了更高的要求,从标清到高清再到超高清,人们不断提出着对视觉效果的更高要求并得到满足。清晰度的不断提升,意味着在画面大小不变的情况下,需要有更多的像素点,这也带来了在网络中传输数据的快速膨胀。
……
前言/序言
自2012年回归校园开始电信与互联网大数据分析科研生涯,我与Hadoop那头黄色小象就结下了不解之缘。感谢Google的论文、Yahoo的资助、Doug Cutting无与伦比的聪明才智,以及Hadoop开源社区无私奉献的参与者,让成千上万跟我们一样的中小开发者团队拥有了低成本处理大规模数据的能力。HDFS、MapReduce、Pig、Hive、HBase这些技术组件,帮助我们完成了一个又一个TB甚至PB级数据集的分析任务。那头可爱的黄色小象,陪伴我度过了一个又一个美好的日子。多么希望这种只用一个技术族就能解决各种大数据处理问题的美好日子能一直持续下去,相信这也是很多开发者梦寐以求的理想国度。然而,梦想终归是梦想。在两年前的某一天,无意中从网络上的一篇技术文章中看到了Spark这一新兴技术,文中宣称Spark性能和功能均优于Hadoop。将信将疑的我按照文章中的线索找到了Spark官网,下载解压后经过短暂试用,我就被Spark的简洁、高效、灵活的特性彻底迷住了。从那时起我就知道,Hadoop,我心目中大数据处理王者技术上的真正挑战者到来了。Spark以分布式内存对象架构为基础,以RDD转换模式为核心,并辅以丰富的RDD算子,不仅解决了大数据处理迭代任务的性能问题,还将开发者从简陋的Map/Reduce编程模式中解放出来,以更加灵活的方式控制数据的计算过程,并激发无穷的创意。因此,我们的团队逐渐将数据处理技术栈由Hadoop转向Spark。在这个过程中,我们发现目前已有的Spark相关书籍大多集中在介绍Spark技术的基础原理以及Spark相关工具(例如SparkSQL、SparkR等)的基本使用方法上。而要学习如何使用Spark中提供的丰富算子进行算法设计时,只能以大浪淘沙的方式从网络中零散的资料中寻找参考。因此,我们觉得如果有一本能以丰富示例介绍Spark程序和数据挖掘算法设计的书籍,应当能更好地帮助Spark开发者提高学习效率,这也就是我们撰写本书的原动力。
基于这一原动力,本书突出以实例的方式介绍和展示Spark程序和算法设计的方法。第1章以科技史上最为著名的6个失败预言引出了大数据时代以及Hadoop技术出现的必然性,然后通过Hadoop与Spark的对比揭示了Hadoop的局限性和Spark的优势。第2章以简洁明了的方式说明了如何以最快的方式搭建一个Spark运行环境,并通过Shell环境体验Spark的强大功能。第3章以图文并茂的形式讲解了Spark的工作原理、架构与运行机制,并着重介绍了Spark的核心RDD的变换过程。第4章以大量示例代码的形式详细说明了Spark丰富的算子,包括创建算子、变换算子、行动算子和缓存算子。为了帮助读者掌握使用Spark设计和实现复杂算法的方法,第5章以10个常见算法实例展示了Spark处理复杂数据处理工作的能力。第6章从合理分配资源、控制并行度等9个方面介绍了优化Spark性能、拓展Spark功能的方法。
与市面上大部分Spark书籍不同,除原理性文字外,本书还提供了大量的Spark代码实例,完成这些代码是一项艰巨的工作。因此,除本书的作者外,我们必须要感谢为文中代码编写和测试作出了巨大贡献的参与者,他们是来自北京邮电大学数据科学中心的研究生梁阳、林澍荣、王蒙、秦超、邱德扬等同学,以及北京浩瀚深度信息技术股份有限公司大数据专家张硕、宋若宁。
由于作者水平有限,加之开源社区的高度活跃性,Spark技术仍在快速发展中。因此,书中难免会存在不足之处,还请读者见谅并批评指正。意见、建议或交流请发电子邮件至liujun@bupt.edu.cn。
北京邮电大学 数据科学中心 刘军
2016年8月
Spark大数据处理: 原理、算法与实例 下载 mobi epub pdf txt 电子书 格式