yyyyyyyyyyyyyyyyyyyy

博客园 首页 新随笔 联系 订阅 管理

基本信息

编辑推荐

 

Life is short, you need Spark!
Spark是当今大数据领域最活跃最热门的高效的大数据通用计算平台。基于RDD,Spark成功地构建起了一体化、多元化的大数据处理体系。
雅虎、Conviva、淘宝、网易、大众点评、优酷土豆、腾讯、华为等公司均在生产环境中部署了大规模的Spark。
本书完全从企业处理大数据业务场景的角度出发,完全基于实战代码来组织内容,从零起步,不许任何基础,完全无痛地掌握Spark大数据处理实战技术,源码解析:
Spark集群的动手构建
Spark架构
Spark内核的深入解析
Spark四大子框架的细致剖析和实战
Tachyon文件系统揭秘
Spark多语言编程
SparkR
Spark性能调优和最佳实践
一站式实现Spark企业级开发实战!

内容简介

    书籍
    计算机书籍
Spark是当今大数据领域最活跃、最热门、最高效的大数据通用计算平台,是Apache软件基金会下所有开源项目中三大顶级开源项目之一。
在"One Stack to rule them all"理念的指引下,Spark基于RDD成功地构建起了大数据处理的一体化解决方案,将MapReduce、Streaming、SQL、 Machine Learning、Graph Processing等大数据计算模型统一到一个技术堆栈中,开发者使用一致的API操作Spark中的所有功能;更为重要的是Spark的Spark SQL、MLLib、GraphX、Spark Streaming等四大子框架之间可以在内存中完美的无缝集成并可以互相操作彼此的数据,这不仅打造了Spark在当今大数据计算领域其他任何计算框架 都无可匹敌的优势,更使得Spark正在加速成为大数据处理中心首选的和唯一的计算平台。
《大数据Spark企业级实战》详细解析了企业级Spark开发所需的几乎所有技术内容,涵盖Spark的架构设计、Spark的集群搭建、Spark内 核的解析、Spark SQL、MLLib、GraphX、Spark Streaming、Tachyon、SparkR、Spark多语言编程、Spark常见问题及调优等,并且结合Spark源码细致的解析了Spark 内核和四大子框架,最后在附录中提供了的Spark的开发语言Scala快速入门实战内容,学习完此书即可胜任绝大多数的企业级Spark开发需要。
《大数据Spark企业级实战》从零起步,完全从企业处理大数据业务场景的角度出发,基于实战代码来组织内容,对于一名大数据爱好者来说,《大数据Spark企业级实战》内容可以帮助您一站式地完成从零起步到进行Spark企业级开发所需要的全部核心内容和实战需要。

作译者

Spark亚太研究院首席专家,中国移动互联网和云计算大数据集大成者。在Spark、Hadoop、Android等方面有丰富的源码、实务和性能优化 经验。彻底研究了Spark从0.5.0到0.9.1共13个版本的Spark源码,并已完成2014年5月31日发布的Spark1.0源码研究。
Hadoop源码级专家,曾负责某知名公司的类Hadoop框架开发工作,专注于Hadoop一站式解决方案的提供,同时也是云计算分布式大数据处理的最早实践者之一。
Android架构师、高级工程师、咨询顾问、培训专家。
通晓Spark、Hadoop、Android、HTML5,迷恋英语播音和健美。

目录

第1章 Spark编程模型
1
1.1 Spark:一体化、多元化的高速
大数据通用计算平台和库
1
1.1.1 为什么需要使用Spark
5
1.1.2 Spark技术生态系统简介
9
1.2 Spark大数据处理框架
20
1.2.1 Spark速度为何如此之快
20
1.2.2 RDD:分布式函数式编程
24
1.3 Spark子框架解析
28
1.3.1 图计算框架Spark GraphX
28
1.3.2 实时流处理框架(Spark Streaming)
41
1.3.3 交互式SQL处理框架Spark SQL
46
1.3.4 机器学习框架(Spark MLlib)
49
第2章 构建Spark分布式集群
55
2.1 搭建Hadoop单机版本和伪分布式开发环境
55
2.1.1 开发Hadoop需要的基本软件
56
2.1.2 安装每个软件
58
2.1.3 配置Hadoop单机模式并运行Wordcount示例
76
2.1.3 配置Hadoop伪分布模式并运行Wordcount示例
84
2. 2 搭建 Hadoop分布式集群的
92
2.2.1 在VMWare 中准备第二、第三台运行Ubuntu系统的机器
92
2.2.2 按照配置伪分布式模式的方式配置新创建运行Ubuntu系统的机器
93
2.2.3 配置Hadoop分布式集群环境
94
2.2.4 测试Hadoop分布式集群环境
105
2.3 Spark集群的动手搭建
108
2.3.1 Spark集群需要的软件
108
2.3.2 安装每个软件
110
2.3.3 启动并查看集群的状况
116
2.4 构建Hadoop单机版本和伪分布式环境
120
2.4.1 通过Spark的shell测试Spark的工作
121
2.4.2 使用Spark的cache机制观察一下效率的提升
125
第3章 Spark开发环境及其测试
129
3.1 搭建和设置IDEA开发环境
129
3.1.1 构建Spark的IDE开发环境
129
3.1.2 配置Spark的IDE开发环境
132
3.2 测试IDEA环境
146
3.3 实战:在IDEA中开发代码,并运行在Spark集群中
148
第4章 Spark RDD与编程API实战
159
4.1 深度解析Spark RDD
159
4.2 Transformation Operations动手实战
165
4.3 Action Operations动手实战
175
4.4 Spark API综合实战
179
第5章 Spark运行模式深入解析
191
5.1 Spark运行模式概述
192
5.1.1 Spark的运行模式列表
196
5.1.2 Spark的基本工作流程
197
5.2 Standalone模式
201
5.2.1 部署及程序运行
202
5.2.2 内部实现原理
206
5.3 Yarn-Cluster模式
234
5.3.1 部署及程序运行
235
5.3.2 内部实现原理
237
5.4 Yarn-Client模式
243
5.4.1 部署及运行程序
243
5.4.2 内部实现原理
244
第6章 Spark内核解析
247
6.1 Spark内核初探
247
6.1.1 Spark内核核心术语解析
247
6.1.2 Spark集群概览
250
6.1.3 Spark核心组件
251
6.1.4 Spark任务调度系统初见
252
6.2 Spark内核核心源码解读
256
6.2.1 SparkContext核心源码解析初体验
256
6.2.2 TaskSceduler启动源码解析初体验
260
6.2.3 DAGScheduler源码解读初体验
261
6.2.4 Spark的Web监控页面
262
6.3 以RDD的count操作为例触发Job全生命周期源码研究
263
6.4 Akka驱动下的Driver、Master、Worker
276
6.4.1 Driver中的AppClient源码解析
276
6.4.2 AppClient注册Master
279
6.4.3 Worker中Executor启动过程源代码解析
282
第7章 GraphX大规模图计算与图挖掘实战
287
7.1 Spark GraphX概览
288
7.2 Spark GraphX设计实现的核心原理
291
7.3 Table operator和Graph Operator
295
7.4 Vertices、edges、triplets
296
7.5 以最原始的方式构建graph
299
7.6 动手编写第一个Graph代码实例并进行Vertices、edges、triplets操作
299
7.7 在Spark集群上使用文件中的数据加载成为graph并进行操作
310
7.8 在Spark集群上掌握比较重要的图操作
320
7.9 Spark GraphX图算法
342
7.10 淘宝对Spark GraphX的大规模使用
347
第8章 Spark SQL原理与实战
349
8.1 为什么使用Spark SQL
349
8.1.1 Spark SQL的发展历程
349
8.1.2 Spark SQL的性能
351
8.2 Spark SQL运行架构
355
8.2.1 Tree和Rule
357
8.2.2 sqlContext的运行过程
360
8.2.3 hiveContext的运行过程
362
8.2.4 catalyst优化器
365
8.3 解析Spark SQL组件
367
8.3.1 LogicalPlan
367
8.3.2 SqlParser
370
8.3.3 Analyzer
378
8.3.4 Optimizer
381
8.4 深入了解Spark SQL运行的计划
383
8.4.1 hive/console的安装过程和原理
383
8.4.2 常用操作
386
8.4.3 不同数据源的运行计划
388
8.4.4 不同查询的运行计划
391
8.4.5 查询的优化
393
8.5 搭建测试环境
396
8.5.1 搭建虚拟集群(Hadoop1、Hadoop2、Hadoop3)
397
8.5.2 搭建客户端
398
8.5.3 文件数据的准备工作
399
8.5.4 Hive数据的准备工作
399
8.6 Spark SQL之基础应用
400
8.6.1 sqlContext的基础应用
402
8.6.2 hiveContext的基础应用
405
8.6.3 混合使用
408
8.6.4 缓存的使用
409
8.6.5 DSL的使用
410
8.7 ThriftServer和CLI
411
8.7.1 令人惊讶的CLI
411
8.7.2 ThriftServer
414
8.8 Spark SQL之综合应用
418
8.8.1 店铺分类
419
8.8.2 PageRank
421
8.9 Spark SQL之调优
424
8.9.1 并行性
424
8.9.2 高效的数据格式
425
8.9.3 内存的使用
427
8.9.4 合适的Task
428
8.9.5 其他的一些建议
428
第9章 Machine Learning on Spark
431
9.1 Spark MLlib机器学习
431
9.1.1 机器学习快速入门
432
9.1.2 Spark MLlib介绍
442
9.1.3 Spark MLlib架构解析
447
9.1.4 Spark Mllib核心解析
458
9.2 MLlib经典算法解析和案例实战
462
9.2.1 Linear Regression解析和实战
462
9.2.2 K-Means解析和实战
484
9.2.3 协同过滤算法分析和案例实战
502
9.3 MLLib其他常用算法解析和代码实战
552
9.3.1 Basic Statics解析和实战
553
9.3.2 MLlib朴素贝叶斯解析和实战
560
9.3.3 MLlib决策树解析和实战
562
第10章 Tachyon文件系统
565
10.1 Tachyon文件系统概述
565
10.1.1 Tachyon文件系统简介
565
10.1.2 HDFS与Tachyon
566
10.1.3 Tachyon设计原理
568
10.2 Tachyon入门
568
10.2.1 Tachyon部署
568
10.2.2 Tachyon API的使用
570
10.2.3 在MapReduce、Spark上使用Tachyon
572
10.3 Tachyon深度解析
573
10.3.1 Tachyon整体设计概述
573
10.3.2 Tachyon Master启动流程分析
574
10.3.3 Tachyon Worker启动流程分析
577
10.3.4 客户端读写文件源码分析
577
10.4 Tachyon配置参数一览
579
10.5 小结
580
第11章 Spark Streaming原理与实战
581
11.1 Spark Streaming原理
581
11.1.1 原理和运行场景
581
11.1.2 编程模型DStream
584
11.1.3 持久化、容错和优化
588
11.2 Spark Streaming实战
589
11.2.1 源码解析
589
11.2.2 Spark Streaming实战案例
600
第12章 Spark多语言编程
605
12.1 Spark多语言编程的特点
605
12.2 Spark编程模型
609
12.3 深入Spark多语言编程
611
12.4 Spark多语言编程综合实例
622
第13章 R语言的分布式编程之SparkR
627
13.1 R语言快速入门
627
13.1.1 R语言是什么
627
13.1.2 R语言的特点
629
13.1.3 R语言的安装
630
13.1.4 R的核心概念
630
13.1.5 R动手实战
631
13.2 使用SparkR
661
13.2.1 SparkR的安装
661
13.2.2 使用SparkR编写WordCount
662
13.2.3 使用SparkR的更多代码示例
662
第14章 Spark性能调优和最佳实践
665
14.1 Spark性能调优
665
14.1.1 Spark性能优化的12大问题及其解决方法
665
14.1.2 Spark内存优化
669
14.1.3 RDD分区
672
14.1.4 Spark性能优化实例
674
14.2 Spark性能调优细节
675
14.2.1 broadcast和accumulator
675
14.2.2 reduce 和 reduceByKey
676
14.2.3 深入reduceByKey
677
第15章 Spark源码解析
679
15.1 BlockManager源码解析
679
15.2 Cache源码解析
707
15.3 Checkpoint源码解析
725
附录A 动手实战Scala三部曲
733
第一部动手体验Scala
735
第二部 动手实战Scala面向对象编程
746
第三部动手实战Scala函数式编程
761
 

前言

  诞生于伯克利大学AMPLab的Spark是当今大数据领域最活跃、最热门、最高效的大数据通用计算平台。基于RDD,Spark成功地构建起了一体 化、多元化的大数据处理体系。在任何规模的数据计算中,Spark在性能和扩展性上都更具优势。携带先天学术基因优势的Spark在整个发展过程中都深深 的打上了学术研究的烙印,在"One Stack to rule them all"思想的引领下,Spark成功地使用Spark SQL、Spark Streaming、MLLib、GraphX近乎完美地解决了大数据中的Batch Processing、Streaming Processing、Ad-hoc Query等三大核心问题。在"Full Stack"理想的指引下,Spark中的Spark SQL、Spark Streaming、MLLib、GraphX四大子框架和库之间可以无缝地共享数据和操作,这不仅打造了Spark在当今大数据计算领域其他计算框架都 无可匹敌的优势,而且使得Spark正在加速成为大数据处理中心首选计算平台。
  为什么写作本书
  Spark + Hadoop = A Winning Combination !
  Hadoop和Spark联合构成了当今的大数据世界,而这个世界正在悄悄发生变化,这种变化是Hadoop负责数据存储和资源管理,Spark负责一体化、多元化的不同规模的数据计算,而计算正是大数据的精髓之所在!
  在Spark官方公布的世界上明确在实际生产环境中使用Spark的公司可见https://cwiki. apache.org/confluence/display/SPARK/Powered+By+Spark。在实际的生产环境中世界上已经出现很多一 千个以上节点的Spark集群,以eBay为例,eBay的Spark集群节点已经超过2000个,Yahoo!等公司也在大规模地使用Spark,国内 的淘宝、腾讯、百度、网易、京东、华为、大众点评、优酷土豆等也在生产环境下深度使用Spark。2014 Spark Summit上的信息显示,Spark已经获得世界20家顶级公司的支持,这些公司中包括Intel、IBM等,同时更重要的是,最大的4个Hadoop 发行商都提供了对Spark非常强有力的支持。
  不得不提的是, DataBricks和AWS联合所做的Sort Benchmark测试表明,Spark在只用Hadoop 1/10的计算资源且基于磁盘计算的情况下却只用了1/3时间,彻底颠覆了Hadoop保持的排序记录,成为开源软件领域在TB和PB数量级别排序最快的 计算引擎。这表明在任意大小的数据规模下,Spark在性能和扩展性上都更具优势。
  与Spark火爆程度形成鲜明对比的是Spark人才的严重稀缺,这一情况在中国尤其严重,这种人才的稀缺一方面是由于Spark技术在2013、 2014年才在国内流行,另一方面是由于匮乏Spark相关的中文资料和系统化的培训。为此,Spark亚太研究院和51CTO联合推出了"Spark亚 太研究院决胜大数据时代100期公益大讲堂",共同推动Spark技术的普及。具体视频信息请参考http://edu.51cto.com /course/course_id-1659.html。
  与此同时,为了更好地满足广大大数据爱好者系统学习Spark的迫切需求,我们基于最新的Spark 1.1版本编写了《大数据Spark企业级实战》一书,本着从企业级实际开发需要的Spark技能的角度出发,《大数据Spark企业级实战》一书全面覆 盖了Spark集群的动手构建、Spark架构、内核的深入解析、Spark四大子框架的细致剖析和实战、Tachyon文件系统揭秘、Spark多语言 编程、SparkR、Spark性能调优和最佳实践、Spark核心源码解析等内容。考虑到Spark框架和开发语言使用Scala,而很多朋友可能对 Scala不是太熟悉,所以在本书的附录中加入了动手实战Scala三部曲来帮助没有使用过Scala语言的学习者快速掌握Scala编程。对于一名大数 据爱好者来说,本书内容可以帮助他们一站式地完成从零起步到进行Spark企业级开发所需要的全部核心内容和实战方法。
  关于本书作者
  本书作者王家林是Spark亚太研究院首席专家,中国移动互联网和云计算大数据技术领域的集大成者。在Spark、Hadoop、Android等方面有丰富的源码、实务和性能优化经验,彻底研究了Spark从0.5到1.1共18个版本的Spark源码。
  作者是Hadoop源码级专家,曾负责某知名公司的类Hadoop框架开发工作,专注于提供Hadoop一站式解决方案,同时也是云计算分布式大数据处理的最早实践者之一。
  作者是Android架构师、高级工程师、咨询顾问、培训专家,为超过50家公司提供了基于Linux和Android的软/硬整合解决方案。
  本书主要内容
  本书共包括14章,每章的主要内容如下。
  第1章回答了Spark为何是大数据处理平台的必然选择?Spark速度如此之快的原因是什么?Spark的理论基石是什么?Spark具体是如何仅仅使用一个技术堆栈解决多元化的大数据处理的需求的?
  第2章回答了如何从零起步构建Hadoop集群?如何在Hadoop集群的基础上构建Spark集群?如何测试Spark集群?
  第3章回答了如何在IDEA集成开发环境中开发并运行Spark程序?如何在IDA中开发Spark代码并进行测试?
  第4章在细致解析RDD的基础上会动手实战RDD中的Transformation类型的RDD、Action类型的RDD,并伴有Spark API的综合实战案例。
  第5章详细分析了Spark Standalone模式、Spark Yarn-Cluster模式、Spark-Client模式的设计和实现。
  第6章首先介绍Spark内核,接着分享通过源码分析Spark内核及源码,细致解析Spark作业的全生命周期,最后分享Spark性能优化的内容。
.  第7章通过大约30个动手实践的案例循序渐进地展示Spark GraphX框架方方面面的功能和使用方法,并对Spark GraphX的源码进行解析。
  第8章基于Spark SQL动手编程实践章节,从零起步,细致而深入地介绍了Spark SQL方方面面的内容。
  第9章从快速入门机器学习开始,详细解析MLlib框架,通过对线性回归、聚类、协同过滤的算法解析、源码解析和案例实战,循序渐进地揭秘 MLLib,最后通过对MLlib中Basic Statics、朴素贝叶斯算法、决策树的解析和实战,进一步提升掌握Spark机器学习的技能。
  第10章细致解析了Tachyon这个分布式内存文件系统的架构设计、具体实现、部署以及Spark对Tachyon的使用等内容。
  第11章循序渐进地介绍Spark Streaming的原理、源码和实战案例等内容。
  第12章介绍了Spark多语言编程的特点,并通过代码实例循序渐进地介绍Spark多语言编程,最后通过一个综合实例来实践Spark多语言编程。
  第13章从R语言的基础介绍和动手实战入手,介绍SparkR的使用和代码实战,助您快速上手R语言和Spark两大大数据处理的利器。
  第14章循序渐进地介绍了Spark常见的问题及其调优方式。首先介绍Spark性能优化的14大问题及其解决方法,然后从内存优化、RDD分区、Spark对象和操作的性能调优等角度解决常见的性能调优问题,最后讲解Spark最佳实践方案。
  第15章聚焦于Spark源码中的BlockManager、Cache和Checkpoint等核心源码解析,BlockManager、 Cache和Checkpoint是每个Spark学习者都必须掌握的核心内容。本章循序渐进地解析了这三部分的源码,包括通过源码说明其用途、实现机 制、内部细节和实际Spark生产环境下的最佳实践等,通过本章即可轻松驾驭BlockManager、Cache和Checkpoint,从而对 Spark精髓的领悟也必将更上层楼!
  附录主要是从Spark的角度来讲解Scala,以动手实战为核心,从零开始,循序渐进地讲解Scala函数式编程和面向对象编程。
  如何阅读本书
  这是一本内容详实的大数据Spark企业级实战图书,按照以下建议阅读可能会取得更好的效果:
  ?
  如果你以前没有接触过Scala,建议先从附录中的"动手实战Scala三部曲"开始阅读,边阅读边编写代码,快速掌握Scala。
  ?
  在阅读完第1章的基础上,强烈建议按照书中第2章和第3章的内容搭建起Spark的集群和IDE开发环境,后续主要内容都要在第2章和第3章构建的环境基础上进行讲解。
  ?
  其他内容按照章节循序渐进地学习,建议多动手实践。
  ?
  强烈建议对于每一个Spark中知识点的学习应多阅读源码。
  最终所有的内容都要回归到框架源码以及对源码的阅读和修改上,源码是一切问题的来源和答案,恭祝各位早日成为Spark源码级高手。
  致谢
  本书得以顺利出版是团队协作的结晶。在此特别感谢博文视点郭总的大力支持,优秀编辑孙学瑛的认真和专业以及其他相关人员的支持。同时也感谢Spark亚太研究院各位同事的大力支持!尤其感谢佳佳在本书出版工作中的全力配合!
  王家林
  2014年12月

posted on 2015-03-26 14:13  xxxxxxxx1x2xxxxxxx  阅读(653)  评论(0编辑  收藏  举报