全球首部全面介绍Spark及Spark生态圈相关技术的技术书籍
俯览未来大局,不失精细剖析,呈现一个现代大数据框架的架构原理和实现细节
透彻讲解Spark原理和架构,以及部署模式、调度框架、存储管理及应用监控等重要模块
Spark生态圈深度检阅:SQL处理Shark和Spark SQL、流式处理Spark Streaming、图计算Graphx及内存文件系统Tachyon

内容简介

书籍
计算机书籍
《Spark大数据处理技术》以Spark
0.9版本为基础进行编写,是一本全面介绍Spark及Spark生态圈相关技术的书籍,是国内首本深入介绍Spark原理和架构的技术书籍。主要内容有
Spark基础功能介绍及内部重要模块分析,包括部署模式、调度框架、存储管理以及应用监控;同时也详细介绍了Spark生态圈中其他的软件和模块,包括
SQL处理引擎Shark和Spark SQL、流式处理引擎Spark
Streaming、图计算框架Graphx以及分布式内存文件系统Tachyon。《Spark大数据处理技术》从概念和原理上对Spark核心框架和
生态圈做了详细的解读,并对Spark的应用现状和未来发展做了一定的介绍,旨在为大数据从业人员和Spark爱好者提供一个更深入学习的平台。

《Spark大数据处理技术》适合任何大数据、Spark领域的从业人员阅读,同时也为架构师、软件开发工程师和大数据爱好者展现了一个现代大数据框架的
架构原理和实现细节。相信通过学习《Spark大数据处理技术》,读者能够熟悉和掌握Spark这一当前流行的大数据框架,并将其投入到生产实践中去。

作译者

夏俊鸾 现任阿里巴巴数据平台部高级技术专家,Apache Spark项目Committer,曾就职于英特尔亚太研发中心,微博账号@Andrew-Xia。

刘旭晖 现任蘑菇街数据平台资深架构师(花名天火),曾就职于英特尔亚太研发中心大数据软件部,Spark/Hadoop/Hbase/Phoenix
等众多大数据相关开源项目的积极贡献者。乐于分享,著有CSDN博客 blog.csdn.net/colorant。

邵赛赛 英特尔亚太研发有限公司开发工程师,专注于大数据领域,开源爱好者,现从事Spark相关工作,Spark代码贡献者。

程浩 英特尔大数据技术团队软件工程师,Shark和Spark SQL活跃开发者,致力于SQL on Big Data的性能调优与优化。

史鸣飞 英特尔亚太研发有限公司大数据软件部工程师,专注于大数据领域,主要从事Spark及相关项目的开发及应用,Spark及Shark代码贡献者,现在主要投身于Tachyon项目的开发。

黄洁
目前就职于英特尔亚太研发中心大数据技术中心,担任高级软件工程师,致力于大数据技术的性能优化及开发工作,涉及Hadoop、Spark、HBase等
开源项目。在多年的工作过程中,积累了一定的分布式大数据框架性能调优经验,并且是Apache
Chukwa项目的PMC成员和Committer。在此之前,毕业于上海交通大学并获硕士及学士学位。

目录

《Spark大数据处理技术》


第1章 Spark系统概述 1


1.1 大数据处理框架 1


1.2 Spark大数据处理框架 3


1.2.1 RDD表达能力 3


1.2.2 Spark子系统 4


1.3 小结 7


第2章 Spark RDD及编程接口 9


2.1 Spark程序“Hello World” 9


2.2 Spark RDD 12


2.2.1 RDD分区(partitions) 13


2.2.2 RDD优先位置(preferredLocations) 13


2.2.3 RDD依赖关系(dependencies) 15


2.2.4 RDD分区计算(compute) 19


2.2.5 RDD分区函数(partitioner) 20


2.3 创建操作 23


2.3.1 集合创建操作 23


2.3.2 存储创建操作 23


2.4 转换操作 26


2.4.1 RDD基本转换操作 26

2.4.2 键值RDD转换操作 35


2.4.3 再论RDD依赖关系 43


2.5 控制操作(control operation) 46


2.6 行动操作(action operation) 47


2.6.1 集合标量行动操作 47


2.6.2 存储行动操作 52


2.7 小结 56


第3章 Spark运行模式及原理 57


3.1 Spark运行模式概述 57


3.1.1 Spark运行模式列表 57


3.1.2 Spark基本工作流程 58


3.1.3 相关基本类 59


3.2 Local模式 62


3.2.1 部署及程序运行 62


3.2.2 内部实现原理 63


3.3 Standalone模式 64


3.3.1 部署及程序运行 64


3.3.2 内部实现原理 67


3.4 Local cluster模式 68


3.4.1 部署及程序运行 68


3.4.2 内部实现原理 69


3.5 Mesos模式 69


3.5.1 部署及程序运行 69


3.5.2 内部实现原理 70


3.6 YARN standalone / YARN cluster模式 72


3.6.1 部署及程序运行 72


3.6.2 内部实现原理 75


3.7 YARN client模式 76


3.7.1 部署及程序运行 76


3.7.2 内部实现原理 77


3.8 各种模式的实现细节比较 78


3.8.1 环境变量的传递 78


3.8.2 JAR包和各种依赖文件的分发 80


3.8.3 任务管理和序列化 82


3.8.4 用户参数配置 83


3.8.5 用户及权限控制 84


3.9 Spark 1.0版本之后的变化 85


3.10 小结 86


第4章 Spark调度管理原理 87


4.1 Spark作业调度管理概述 87


4.2 Spark调度相关基本概念 88


4.3 作业调度模块顶层逻辑概述 89


4.4 作业调度具体工作流程 92


4.4.1 调度阶段的拆分 94


4.4.2 调度阶段的提交 97


4.4.3 任务集的提交 99


4.4.4 完成状态的监控 99


4.4.5 任务结果的获取 101


4.5 任务集管理模块详解 102


4.6 调度池和调度模式分析 104


4.7 其他调度相关内容 106


4.7.1 Spark应用之间的调度关系 106


4.7.2 调度过程中的数据本地性问题 106


4.8 小结 107


第5章 Spark的存储管理 109


5.1 存储管理模块整体架构 109


5.1.1 通信层架构 110


5.1.2 通信层消息传递 112


5.1.3 注册存储管理模块 113


5.1.4 存储层架构 114


5.1.5 数据块 (Block) 116


5.2 RDD 持久化 116


5.2.1 RDD分区和数据块的关系 117


5.2.2 内存缓存 118


5.2.3 磁盘缓存 119


5.2.4 持久化选项 120


5.2.5 如何选择不同的持久化选项 122


5.3 Shuffle数据持久化 122


5.4 广播(Broadcast)变量持久化 125


5.5 小结 126


第6章 Spark监控管理 127


6.1 UI管理 127


6.1.1 实时UI管理 128


6.1.2 历史UI管理 132


6.2 Metrics管理 133


6.2.1 Metrics系统架构 133


6.2.2 Metrics系统配置 135


6.2.3 输入源(Metrics Source)介绍 136


6.2.4 输出方式(Metrics Sink)介绍 138


6.3 小结 139


第7章 Shark架构与安装配置 141


7.1 Shark架构浅析 142


7.2 Hive/Shark各功能组件对比 143


7.2.1 MetaStore 143


7.2.2 CLI/ Beeline 143


7.2.3 JDBC/ODBC 144


7.2.4 Hive Server/2 与 Shark Server/2 144


7.2.5 Driver 145


7.2.6 SQL Parser 146


7.2.7 查询优化器(Query Optimizer) 147


7.2.8 物理计划与执行 147


7.3 Shark安装配置与使用 148


7.3.1 安装前准备工作 149


7.3.2 在不同运行模式下安装Shark 149


7.4 Shark SQL命令行工具(CLI) 152


7.5 使用Shark Shell命令 155


7.6 启动Shark Server 155


7.7 Shark Server2配置与启动 156


7.8 缓存数据表 157


7.8.1 数据缓存级别 158


7.8.2 创建不同缓存级别的Shark数据表 158


7.8.3 指定数据表缓存策略 159


7.8.4 使用Tachyon 160


7.9 常见问题分析 160


7.9.1 OutOfMemory异常 160


7.9.2 数据处理吞吐量低 161


7.9.3 Shark查询比Hive慢 161


7.10 小结 162


第8章 SQL程序扩展 163


8.1 程序扩展并行运行模式 164


8.2 Evaluator和ObjectInspector 164


8.3 自定义函数扩展 168


8.3.1 自定义函数扩展分类 168


8.3.2 CLI中的用户自定义函数扩展相关命令 170


8.3.3 用户自定义函数(UDF) 171


8.3.4 通用用户自定义函数(Generic UDF) 175


8.3.5 用户自定义聚合函数(UDAF) 178


8.3.6 通用用户自定义聚合函数(Generic UDAF) 182


8.3.7 通用用户自定义表函数(Generic UDTF) 186


8.4 自定义数据存取格式 190


8.4.1 SerDe 190


8.4.2 StorageHandler 197


8.5 小结 198


第9章 Spark SQL 199


9.1 Spark SQL逻辑架构 199


9.1.1 Catalyst功能边界 200


9.1.2 SQL解析阶段 201


9.1.3 逻辑计划元数据绑定和语义分析阶段 202


9.1.4 逻辑计划优化阶段 202


9.1.5 物理计划生成阶段 202


9.1.6 Shark和Spark SQL对比 203


9.2 Catalyst上下文(Context) 204


9.2.1 SQLContext 204


9.2.2 HiveContext 205


9.3 SQL DSL API 206


9.3.1 数据源管理 206


9.3.2 SchemaRDD 208


9.3.3 Row API 210


9.3.4 数据类型 211


9.3.5 DSL API举例 213


9.3.6 表达式计算 214


9.3.7 Parquet列式存储文件 218


9.3.8 代码演示 218


9.4 Java API 221


9.5 Python API 224


9.6 Spark SQL CLI 225


9.7 Thrift服务 225


9.8 小结 225


第10章 Spark Streaming流数据处理框架 227


10.1 快速入门 227


10.2 Spark Streaming基本概念 229


10.2.1 链接和初始化 229


10.2.2 时间和窗口概念 231


10.2.3 DStream原理 232


10.2.4 DStream输入源 234


10.2.5 DStream 操作 235


10.2.6 DStream持久化 237


10.3 性能调优 238


10.3.1 运行时间优化 238


10.3.2 内存使用优化 238


10.4 容错处理 239


10.4.1 工作节点失效 239


10.4.2 驱动节点失效 240


10.5 DStream作业的产生和调度 242


10.5.1 作业产生 242


10.5.2 作业调度 243


10.5.3 Streaming作业与Spark作业之间的关系 244


10.6 DStream与RDD关系 246


10.7 数据接收原理 248


10.8 自定义数据输入源 251


10.9 自定义监控接口(StreamingListener) 253


10.10 Spark Streaming案例分析 254


10.11 小结 256


第11章 GraphX计算框架 259


11.1 图并行计算 259


11.1.1 数据并行与图并行计算 259


11.1.2 图并行计算框架简介 260


11.1.3 GraphX简介 264


11.2 GraphX模型设计 264


11.2.1 数据模型 264


11.2.2 图计算接口 265


11.3 GraphX模型实现 269


11.3.1 图的分布式存储 269


11.3.2 图操作执行策略 278


11.3.3 图操作执行优化 280


11.3.4 序列化和反序列化 283


11.3.5 GraphX内置算法库 284


11.4 GraphX应用 285


11.4.1 Pregel模型 285


11.4.2 N维邻接关系计算 288


11.5 小结 291


第12章 Tachyon存储系统 293


12.1 设计原理 294


12.1.1 高效的内存读写 294


12.1.2 无副本的可靠性实现——Lineage 297


12.2 框架设计 299


12.2.1 主节点 300


12.2.2 工作节点 304


12.2.3 客户端 306


12.2.4 读写工作流程 307


12.3 Tachyon的部署 313


12.3.1 单机部署 313


12.3.2 分布式部署 316


12.3.3 Tachyon的配置 317


12.4 Tachyon应用 321


12.4.1 Shark原始表(RawTable) 321


12.4.2 Spark的堆外RDD 325


12.4.3 Tachyon用户接口(API) 327


12.5 相关项目讨论 335


12.6 小结 336

Spark大数据处理技术的更多相关文章

  1. 《Spark大数据处理:技术、应用与性能优化 》

    基本信息 作者: 高彦杰 丛书名:大数据技术丛书 出版社:机械工业出版社 ISBN:9787111483861 上架时间:2014-11-5 出版日期:2014 年11月 开本:16开 页码:255 ...

  2. 《Spark大数据处理:技术、应用与性能优化》【PDF】 下载

    内容简介 <Spark大数据处理:技术.应用与性能优化>根据最新技术版本,系统.全面.详细讲解Spark的各项功能使用.原理机制.技术细节.应用方法.性能优化,以及BDAS生态系统的相关技 ...

  3. 《Spark大数据处理:技术、应用与性能优化》【PDF】

    内容简介 <Spark大数据处理:技术.应用与性能优化>根据最新技术版本,系统.全面.详细讲解Spark的各项功能使用.原理机制.技术细节.应用方法.性能优化,以及BDAS生态系统的相关技 ...

  4. Spark大数据处理 之 从WordCount看Spark大数据处理的核心机制(1)

    大数据处理肯定是分布式的了,那就面临着几个核心问题:可扩展性,负载均衡,容错处理.Spark是如何处理这些问题的呢?接着上一篇的"动手写WordCount",今天要做的就是透过这个 ...

  5. Spark大数据处理 之 动手写WordCount

    Spark是主流的大数据处理框架,具体有啥能耐,相信不需要多说.我们开门见山,直接动手写大数据界的HelloWorld:WordCount. 先上完整代码,看看咋样能入门. import org.ap ...

  6. Spark大数据处理 之 从WordCount看Spark大数据处理的核心机制(2)

    在上一篇文章中,我们讲了Spark大数据处理的可扩展性和负载均衡,今天要讲的是更为重点的容错处理,这涉及到Spark的应用场景和RDD的设计来源. Spark的应用场景 Spark主要针对两种场景: ...

  7. Spark大数据处理 之 RDD粗粒度转换的威力

    在从WordCount看Spark大数据处理的核心机制(2)中我们看到Spark为了支持迭代和交互式数据挖掘,而明确提出了内存中可重用的数据集RDD.RDD的只读特性,再加上粗粒度转换操作形成的Lin ...

  8. Spark大数据处理框架入门(单机版)

    导读 引言 环境准备 安装步骤 1.下载地址 2.开始下载 3.解压spark 4.配置环境变量 5.配置 spark-env.sh 6.启动spark服务 7.测试spark stay hungry ...

  9. ceph hadoop spark 大数据处理

    http://docs.ceph.com/docs/giant/cephfs/hadoop/ https://indico.cern.ch/event/524549/contributions/218 ...

随机推荐

  1. ns2出现Client: Handoff Attempt的情况解决

    找到mac/mac-802_11.cc,这是系统本身一个bug,对于adhoc网络无需进行切换尝试. > if (*rcount == 3 && handoff == 0) {& ...

  2. Objective-C 成员变量的访问修饰即成员变量可见性解析

    总体来说Objective-C的访问成员变量可见性和C++基本一样,只是多了个@package. 以下是详细说明: 例子: @interface CTPerson : NSObject { @priv ...

  3. UIImagePickerController显示中文界面

    iOS开发中,我们经常遇到获取拍照.相册中图片的功能,就必然少不了UIImagePickerController,但是我们发现当我们使用它的时候,它的页面是英文的,看着很别扭,国人还是比较喜欢看中文界 ...

  4. Xamarin.iOS - 利用Settings插件与EAIntroView制作App的欢迎界面

    Xamarin.iOS - 利用Settings插件与EAIntroView制作App的欢迎界面 关于欢迎界面 很多App第一次启动都会有一个欢迎界面,欢迎界面往往决定这用户对App的第一映像,所以欢 ...

  5. Poj 3259 Wormholes(spfa判负环)

    Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 42366 Accepted: 15560 传送门 Descr ...

  6. IniParse解析类

    说明 iniParse这个类是一个解析ini文件的类,他的功能和Windows下GetPrivateProfileString的功能一样,可以很方便的保存读取配置. 当然他不是只有GetPrivate ...

  7. java实现qq邮箱每天定时发送邮件

    本周四的时候去学校的某机构值班,主要工作是帮老师送文件,干一些杂活.那天没有什么活儿,于是想起用Java实现发送邮件和接收邮件的功能.前几天接触过一点quartz框架,用来实现定时开始任务的功能.于是 ...

  8. MySQL的基本使用

    SQL     DDL:数据定义语言  CREATE DROP ALTER     DML:数据操作语言  SELECT INSERT UPDATE DELETE     DCL:数据控制语言  GR ...

  9. 如何在WCF中集成unity

    第一种是代码方式: 点击打开链接http://blogs.microsoft.co.il/gadib/2010/11/30/wcf-and-unity-20/ 还有一种方式可以扩展成配置文件,有时间再 ...

  10. 如何设置 font-family 比较好以及字体的中英文名

    如何设置 font-family 比较好? 如果设置为font-family: Arial, "微软雅黑","宋体"; 是不是英文都会使用Arial字体,而中文 ...