大数据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源码研究。
目次
第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