《循序渐进学Spark》一导读

Preface 前  言

Spark诞生于美国加州大学伯克利分校AMP实验室。随着大数据技术在互联网、金融等领域的突破式进展,Spark在近些年得到更为广泛的应用。这是一个核心贡献者超过一半为华人的大数据平台开源项目,且正处于飞速发展、快速成熟的阶段。

为什么写这本书

Spark已经成为大数据计算、分析领域新的热点和发展方向。相对于Hadoop传统的MapReduce计算模型,Spark提供更为高效的计算框架以及更为丰富的功能,因此在大数据生产应用领域中不断攻城略地,势如破竹。

与企业不断涌现的对大数据技术的需求相比,大数据人才还存在很大缺口,对大数据技术充满期许的新人正在源源不断地加入这个领域。在小象学院的教学实践过程中,我们发现,一本能完整系统地介绍Spark各模块原理并兼顾使用实战的书,对于初入大数据领域的技术人员至关重要。于是,我们根据日常积累的经验,著成本书。

Spark作为一个高速发展的开源项目,最近也发布了全新的Spark 2.0版本。对于Spark 2.0版本的新特性,我们也专门给予描述,以期将最前沿的Spark技术奉献给读者。

本书面向的读者

Spark初学者

Spark应用开发人员

Spark运维人员

大数据技术爱好者

如何阅读本书

本书共分8章:

第1章介绍了Spark大数据处理框架的基本概念、主要组成部分、基本架构,以及Spark集群环境搭建和Spark开发环境的构建方法。

第2章引入Spark编程中的核心——RDD弹性分布式数据集,以典型的编程范例,讲解基于RDD的算子操作。

第3章主要讲述了Spark的工作机制与原理,剖析了Spark的提交和执行时的具体机制,重点强调了Spark程序的宏观执行过程。此外,更深入地剖析了Spark的存储及IO、通信机制、容错机制和Shuffle机制。 

第4章对Spark的代码布局做了宏观介绍,并对Spark的执行主线进行详细剖析,从代码层面详细讲述RDD是如何落地到Worker上执行的。同时,本章从另一个角度分析了Client、Master与Worker之间的交互过程,深入讲述了Spark的两个重要功能点及Spark Shuffle与Spark存储机制。

第5章介绍了YARN的基本原理及基于YARN的Spark程序提交,并结合从程序提交到落地执行的过程,详细介绍了各个阶段的资源管理和调度职能。在本章的后半部分,主要从资源配置的角度对YARN及基于YARN的Spark做了较为详细的介绍。

第6章一一讲解了BDAS中的主要模块。由Spark SQL开始,介绍了Spark SQL及其编程模型和DataFrame。接着深入讲解Spark生态中用于流式计算的模块Spark Streaming。之后,讲解了Spark R的基本概念及操作。 最后针对机器学习的流行趋势,重点介绍了Spark MLlib的架构及编程应用,以及机器学习的基本概念和基本算法。

第7章首先详细叙述了Spark调优的几个重要方面,接着给出了工业实践中常见的一些问题,以及解决问题的常用策略,最后启发读者在此基础上进一步思考和探索。 

第8章描述了Spark 2.0.0发布之后,Spark Core、Spark SQL、MLlib、Spark Streaming、Spark R等模块API的变化以及新增的功能特性等。对于变化较大的Spark SQL,书中用实际的代码样例更详细地说明和讲解了SparkSession、结构化Streaming等新特性。

对于Spark的初学者或希望从零开始详细了解Spark技术的读者,请从第1章开始通读全书;对于有一定Spark基础的研究者,可从第4章开始阅读;如果只想了解Spark最基本的原理,阅读第1~3章即可。

资源和勘误

本书大量资源来源于小象学院专家团队在大数据项目开发以及Spark教学课程中的经验积累。本书内容的撰写也参考了大量官方文档(http://spark.apache.org/)。

由于Spark技术正在飞速发展,加之笔者水平有限,书中难免存在谬误,也可能存

在若干技术细节描述不详尽之处,恳请读者批评指正。欢迎大家关注微信服务号“小象学院”,把您的意见或者建议反馈给我们。

致谢

首先应该感谢Apache Spark的开源贡献者们,Spark是当今大数据领域伟大的开源项目之一,没有这一开源项目,便没有本书。

本书以小象学院git项目方式管理。感谢姜冰钰、陈超、冼茂源等每一位内容贡献者,感谢他们花费大量时间,将自己对Spark的理解加上在实际工作、学习过程中的体会,融汇成丰富的内容。

感谢本书的审阅者樊明璐、杨福川、李艺,他们对本书的内容和结构提供了非常宝贵的意见。

目  录 Contents

前 言

第1章 Spark架构与集群环境    

1.1 Spark概述与架构   

1.1.1 Spark概述    

1.1.2 Spark生态    

1.1.3 Spark架构    

1.2 在Linux集群上部署Spark    

1.2.1 安装OpenJDK    

1.2.2 安装Scala   

1.2.3 配置SSH免密码登录    

1.2.4 Hadoop的安装配置    

1.2.5 Spark的安装部署    

1.2.6 Hadoop与Spark的集群复制    

1.3 Spark 集群试运行   

1.4 Intellij IDEA的安装与配置   

1.4.1 Intellij的安装    

1.4.2 Intellij的配置    

1.5 Eclipse IDE的安装与配置   

1.6 使用Spark Shell开发运行Spark程序    

1.7 本章小结   

第2章 Spark 编程模型    

2.1 RDD弹性分布式数据集   

2.1.1 RDD简介    

2.1.2 深入理解RDD    

2.1.3 RDD特性总结    

2.2 Spark程序模型    

2.3 Spark算子    

2.3.1 算子简介    

2.3.2 Value型Transmation算子    

2.3.3 Key-Value型Transmation算子    

2.3.4 Action算子    

2.4 本章小结    

第3章 Spark机制原理    

3.1 Spark应用执行机制分析   

3.1.1 Spark应用的基本概念    

3.1.2 Spark应用执行机制概要    

3.1.3 应用提交与执行    

3.2 Spark调度机制    

3.2.1 Application的调度    

3.2.2 job的调度    

3.2.3 stage(调度阶段)和TasksetManager的调度    

3.2.4 task的调度    

3.3 Spark存储与I/O    

3.3.1 Spark存储系统概览    

3.3.2 BlockManager中的通信    

3.4 Spark通信机制    

3.4.1 分布式通信方式    

3.4.2 通信框架AKKA    

3.4.3 Client、Master和Worker之间的通信    

3.5 容错机制及依赖    

3.5.1 Lineage(血统)机制    

3.5.2 Checkpoint(检查点)机制    

3.6 Shuffle机制    

3.6.1 什么是Shuffle    

3.6.2 Shuffle历史及细节    

3.7 本章小结    

第4章 深入Spark内核    

4.1 Spark代码布局    

4.1.1 Spark源码布局简介    

4.1.2 Spark Core内模块概述    

4.1.3 Spark Core外模块概述    

4.2 Spark执行主线[RDD→Task]剖析    

4.2.1 从RDD到DAGScheduler    

4.2.2 从DAGScheduler到TaskScheduler    

4.2.3 从TaskScheduler到Worker节点    

4.3 Client、Master和Worker交互过程剖析    

4.3.1 交互流程概览  

4.3.2 交互过程调用   

4.4 Shuffle触发   

4.4.1 触发Shuffle Write   

4.4.2 触发Shuffle Read    

4.5 Spark存储策略    

4.5.1 CacheManager职能    

4.5.2 BlockManager职能    

4.5.3 DiskStore与DiskBlock--Manager类    

4.5.4 MemoryStore类    

4.6 本章小结    

第5章 Spark on YARN    

5.1 YARN概述    

5.2 Spark on YARN的部署模式    

5.3 Spark on YARN的配置重点    

5.3.1 YARN的自身内存配置    

5.3.2 Spark on YARN的重要配置    

5.4 本章小结    

第6章 BDAS 生态主要模块    

6.1 Spark SQL    

6.1.1 Spark SQL概述    

6.1.2 Spark SQL的架构分析    

6.1.3 Spark SQL如何使用    

6.2 Spark Streaming    

6.2.1 Spark Streaming概述    

6.2.2 Spark Streaming的架构分析    

6.2.3 Spark Streaming编程模型    

6.2.4 数据源Data Source    

6.2.5 DStream操作    

6.3 SparkR    

6.3.1 R语言概述    

6.3.2 SparkR简介    

6.3.3 DataFrame创建    

6.3.4 DataFrame操作    

6.4 MLlib on Spark    

6.4.1 机器学习概述    

6.4.2 机器学习的研究方向与问题    

6.4.3 机器学习的常见算法    

6.4.4 MLlib概述    

6.4.5 MLlib架构    

6.4.6 MLlib使用实例——电影推荐    

6.5 本章小结    

第7章 Spark调优    

7.1 参数配置    

7.2 调优技巧    

7.2.1 序列化优化    

7.2.2 内存优化    

7.2.3 数据本地化    

7.2.4 其他优化考虑    

7.3 实践中常见调优问题及思考    

7.4 本章小结    

第8章 Spark 2.0.0    

8.1 功能变化    

8.1.1 删除的功能    

8.1.2 Spark中发生变化的行为    

8.1.3 不再建议使用的功能    

8.2 Core以及Spark SQL的改变    

8.2.1 编程API    

8.2.2 多说些关于SparkSession    

8.2.3 SQL    

8.3 MLlib    

8.3.1 新功能    

8.3.2 速度/扩展性    

8.4 SparkR    

8.5 Streaming    

8.5.1 初识结构化Streaming    

8.5.2 结构化Streaming编程模型    

8.5.3 结果输出    

8.6 依赖、打包    

8.7 本章小结    

时间: 2024-09-09 05:13:03

《循序渐进学Spark》一导读的相关文章

《TCP/IP路由技术(第二卷)》一导读

前 言 TCP/IP路由技术(第二卷)自从出版了<TCP/IP路由技术(第一卷)>之后,虽然Cisco Press"CCIE职业发展系列"中增加了大量新书,而且CCIE计划本身也被扩展到多个专业领域,但IP路由协议仍然是所有准CCIE们的核心基础.因此,必须透彻地对其加以理解和掌握,否则基础不牢,大厦将倾. 我在<TCP/IP路由技术(第一卷)>的前言中曾经说过,"--随着互联网络规模和复杂性的不断增大,路由问题也随即变得庞大且错综复杂".由

《TCP/IP路由技术(第二卷)》一1.4 配置EGP

1.4 配置EGP TCP/IP路由技术(第二卷) 通过以下4个基本步骤即可完成路由器上的EGP配置. 第1步:利用命令autonomous-system指定路由器的AS. 第2步:利用命令router egp启动EGP进程并指定邻居的AS. 第3步:利用命令neighbor指定EGP邻居. 第4步:指定由EGP宣告的网络. 下面的第一个案例研究将详细解释前3个配置步骤,同时也给出了步骤4的多种实现方法. 1.4.1 案例研究:EGP末梢网关 图1-10给出了一台位于AS 65502的EGP末梢

《TCP/IP路由技术(第二卷)》一1.9 配置练习题

1.9 配置练习题 TCP/IP路由技术(第二卷) 本书附录E中提供了以下配置练习题的答案. (1)图1-14中的自治系统65531是一个核心AS,请在RTA和RTB上配置EGP,要求如下: 不要将AS内的数据链路宣告给任何外部邻居. RTA将连接在其S1接口上的网络宣告给RTB:另外,要求RTA和RTB之间不能宣告其他AS间链路. RTA和RTB向其外部邻居(除了从其他自治系统学习到的网络)宣告默认路由,而且这两个网关都不得将默认路由宣告给其内部邻居. (2)例1-26给出了图1-15中RTC

《TCP/IP路由技术(第二卷)》一1.1 EGP的起源

1.1 EGP的起源 TCP/IP路由技术(第二卷)在20世纪80年代早期,构成ARPANET(现代互联网的前身)的路由器(网关)设备上都运行了一种距离向量路由协议--GGP(Gateway-to-Gateway Protocol,网关到网关协议).但是随着ARPANET的不断发展,与当今许多负责管理日益增长的互联网络的网管员一样,ARPANET的架构师们也预见到了相同的问题:现在运行的路由协议没有很好的扩展性. Eric Rosen在RFC 827中阐述了以下扩展性问题. 由于所有的网关都要知

《TCP/IP路由技术(第二卷)》一1.6 附 注

1.6 附 注 TCP/IP路由技术(第二卷)1Eric Rosen,"RFC 827:外部网关协议(EGP)". 2Linda J. Seamonson和Eric C. Rosen"RFC 888:'末梢'外部网关协议". 3D.L. Mills,"RFC 904:外部网关协议正式规范". 4J. Rekhter,"RFC 1092:EGP和新NSFNET骨干网的策略路由".

《TCP/IP路由技术(第二卷)》一1.5 检测与排除EGP故障

1.5 检测与排除EGP故障 TCP/IP路由技术(第二卷)在1.3节中已经解释了EGP为何无法应用于复杂的AS间拓扑结构,而强制性的简单拓扑结构带来了一个意外的好处,那就是EGP的故障检测和排除变得非常简单. 与其他路由协议一样,检测与排除EGP故障的第一步工作就是查看路由表.如果所请求的路由缺失或路由表中存在一条非期望路由,通过查看路由表就可以检测到问题的根源.由于EGP的度量值几乎没有任何意义,因而与其他路由协议相比,利用路由表进行EGP故障的检测和排除工作可以得到大大简化. 需要注意的是

《TCP/IP路由技术(第二卷)》一第1章 外部网关协议

第1章 外部网关协议 TCP/IP路由技术(第二卷)本章将主要讨论以下主题. • EGP的起源:本节将讨论在RFC 827(1982)中定义的外部网关协议的发展历史. • EGP的操作:本节将讨论EGP的基本操作机制,重点是EGP拓扑结构.EGP功能及EGP消息格式. • EGP的不足:本节将探讨为什么EGP不再是一种可行的外部网关协议解决方案. • 配置EGP:本节将通过4个独立的案例研究--EGP末梢网关.EGP核心网关.间接邻居和默认路由,来说明不同类型的EGP配置方法. • 检测和排除E

《TCP/IP路由技术(第二卷)》一1.7 展 望

1.7 展 望 TCP/IP路由技术(第二卷)本章不但说明了AS间路由协议的发明驱动力,也解释了EGP难以胜任该角色的原因.第2章将简要描述EGP的替代协议--边界网关协议及其操作.表1-10汇总了本章用到的所有命令.

《TCP/IP路由技术(第一卷)(第二版)》一导读

前 言 TCP/IP路由技术(第一卷)(第二版)路由技术即使在最小的数据通信网络中也是基本的要素.在某种程度上,路由技术和路由器的配置是相当简单的.但是,当网络的规模越来越大,并且越来越复杂的时候,路由选择问题就变得比较突出和难以控制了.或许,有点不恰当地说,作为一名网络系统顾问,我应该感谢当前出现的大规模路由技术难题,这些问题给了我谋生的手段.假设没有它们,"你何以为生?"这句习语可能就会不幸地成为我每天生活词汇的一部分了. Cisco认证互联网专家(CCIE)在大型网络的设计.故障

《TCP/IP路由技术(第一卷)(第二版)》一第1章 TCP/IP回顾1.1 TCP/IP协议层

第1章 TCP/IP回顾 TCP/IP路由技术(第一卷)(第二版)本章包括以下主题: TCP/IP协议层: IP包头(IP Packet Header): IPv4地址: 地址解析协议(ARP): Internet控制消息协议(ICMP): 主机到主机层. 考虑到这本书的书名是<TCP/IP路由技术>,有必要从回顾TCP/IP的基本知识开始讲起,然后再讲述如何进行TCP/IP路由选择.如果读者正在准备Cisco认证互连网专家(Cisco Certified Internetwork Exper