首页 技术 正文
技术 2022年11月14日
0 收藏 628 点赞 4,516 浏览 5151 个字

Spark大数据处理技术

全球首部全面介绍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 RDD12

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 MetaStore143

7.2.2 CLI/ Beeline143

7.2.3 JDBC/ODBC144

7.2.4 Hive Server/2 与 Shark Server/2144

7.2.5 Driver145

7.2.6 SQL Parser146

7.2.7 查询优化器(Query Optimizer)147

7.2.8 物理计划与执行147

7.3 Shark安装配置与使用148

7.3.1 安装前准备工作149

7.3.2 在不同运行模式下安装Shark149

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

7.5 使用Shark Shell命令155

7.6 启动Shark Server155

7.7 Shark Server2配置与启动156

7.8 缓存数据表157

7.8.1 数据缓存级别158

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

7.8.3 指定数据表缓存策略159

7.8.4 使用Tachyon160

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和ObjectInspector164

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 SerDe190

8.4.2 StorageHandler197

8.5 小结198

第9章 Spark SQL199

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 SQLContext204

9.2.2 HiveContext205

9.3 SQL DSL API206

9.3.1 数据源管理206

9.3.2 SchemaRDD208

9.3.3 Row API210

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 API221

9.5 Python API224

9.6 Spark SQL CLI225

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 无副本的可靠性实现——Lineage297

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的堆外RDD325

12.4.3 Tachyon用户接口(API)327

12.5 相关项目讨论335

12.6 小结336

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,086
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,561
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,410
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,183
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,820
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,903