具体描述
《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 。在此之前,毕业于上海交通大学并获硕士及学士学位。
目录信息
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亚太研究院王家林的《大数据spark企业级实战》内容更详实(虽然印刷质量不太好),推荐有兴趣的同学可以买那本,或者直接看官方文档。
总体来说,内容很粗糙,基本没法看,觉得作者没有用心。 还是spark亚太研究院王家林的《大数据spark企业级实战》内容更详实(虽然印刷质量不太好),推荐有兴趣的同学可以买那本,或者直接看官方文档。
总体来说,内容很粗糙,基本没法看,觉得作者没有用心。 还是spark亚太研究院王家林的《大数据spark企业级实战》内容更详实(虽然印刷质量不太好),推荐有兴趣的同学可以买那本,或者直接看官方文档。
总体来说,内容很粗糙,基本没法看,觉得作者没有用心。 还是spark亚太研究院王家林的《大数据spark企业级实战》内容更详实(虽然印刷质量不太好),推荐有兴趣的同学可以买那本,或者直接看官方文档。
总体来说,内容很粗糙,基本没法看,觉得作者没有用心。 还是spark亚太研究院王家林的《大数据spark企业级实战》内容更详实(虽然印刷质量不太好),推荐有兴趣的同学可以买那本,或者直接看官方文档。
用户评价
更让我惊喜的是,作者在全书的结尾部分,并未草草收场,而是提供了一个极具前瞻性的视野。这部分内容,更像是对未来大数据技术发展趋势的一次深度预判。它讨论了诸如内存计算的潜力、湖仓一体架构的演进方向,以及Serverless在大数据领域的应用前景。这让这本书的价值超越了一本“工具书”的范畴,更像是一份“职业发展路线图”。它不仅教会了我如何“做”当下的项目,更引导我去思考“应该”往哪个方向发展,这对于处在技术爬坡期的工程师来说,是极其宝贵的指引。阅读完最后一个章节,我感觉自己不仅掌握了一套实用的技能,更重要的是,我的技术视野被极大地拓宽了,对整个大数据生态的脉络有了更宏大、更深刻的理解。这本书无疑是我近几年技术阅读体验中,最令人振奋的一部作品。
这本书的排版和图示设计,简直是业界良心。很多技术书籍,为了节省成本,排版拥挤不堪,公式和代码块挤在一起,阅读体验极差。但这本书的排版疏朗有致,关键概念使用粗体或颜色区分,代码块规范对齐,即便是在学习一些非常细微的配置参数时,眼睛也不会感到疲劳。特别要点赞的是那些架构图。很多技术书籍的图示要么过于简单,看不出细节;要么就是复杂到让人头晕。这本书的图示恰到好处,它们精准地勾勒出了组件间的交互流程,比如数据Shuffle的过程,图示的动态感极强,仿佛能看到数据在集群中高效流转的景象。我个人有个习惯,在理解一个新框架时,一定会先看它的架构图。这本书的架构图,甚至比我之前参考的官方白皮书还要清晰明了,极大地缩短了我建立宏观认知的路径。可以说,光是这些高质量的可视化内容,就值回了购书的费用。
这本书的叙事节奏掌握得非常到位,有一种行云流水的阅读快感,完全没有传统技术书籍那种干巴巴的枯燥感。它采用了一种“问题导向”的结构,每引入一个新的技术点,都会先抛出一个实际场景中可能遇到的痛点,然后顺理成章地引出该技术是如何优雅地解决这个痛点的。比如,在介绍流式计算那一章,作者没有一上来就讲解Spark Streaming的DStream模型,而是先描绘了一个电商网站实时推荐系统对延迟的极致要求,以及传统批处理无法满足的困境,这样一来,读者就带着强烈的需求去理解流处理的原理,吸收效率自然大大提高。这种“欲扬先抑”的写作手法,使得枯燥的底层原理学习过程变得充满探索的乐趣。更难能可贵的是,书中对不同技术栈的比较分析极其客观公正,它不会盲目推崇某一种框架,而是清晰地阐述了每种工具在特定场景下的优劣势,帮助读者建立起正确的“技术选型观”,而不是人云亦云。
坦白讲,市面上介绍大数据技术的书籍汗牛充栋,但很多都停留在理论的空中楼阁,要么过于偏重某一个工具的API讲解,让人学完后依然抓不住全局;要么就是堆砌概念,读起来晦涩难懂,像是直接从官方文档里复制粘贴出来的。然而,这本书的独特之处在于,它成功地架起了一座连接理论与工程实践的坚实桥梁。它并未沉溺于任何单一技术的“炫技”,而是始终将“如何高效、稳定地处理海量数据”作为核心目标。我特别欣赏其中关于数据治理和质量控制的章节。在实际工作中,数据ETL(抽取、转换、加载)环节往往是项目成败的关键瓶颈,这本书深入探讨了如何利用Spark的高级API进行复杂的数据清洗和标准化操作,并给出了应对“脏数据”的实战方案。那些关于幂等性设计、容错机制的讨论,显示出作者深厚的实战功底,这些内容是教科书里鲜少会详细提及的“血泪经验”。读完这一部分,我立刻在手头的工作中应用了其中介绍的几种错误处理模式,效率立竿见影地提升了至少三成。
这本书的封面设计着实吸引眼球,那种深邃的蓝色调,配上充满科技感的字体,让人一眼就能感受到它蕴含的巨大能量。我本来对大数据处理只有一些模糊的概念,知道它很重要,但具体怎么操作,有哪些核心技术,完全是一头雾水。拿到书后,我立刻被书中对Hadoop生态系统的全面梳理所折服。它不仅仅是罗列了一堆术语,而是通过生动的比喻和清晰的架构图,将MapReduce、HDFS这些复杂的概念讲得透彻明白。特别是关于数据分区和并行计算的部分,作者似乎有一种魔力,能把最烧脑的算法原理,转化成我们日常生活中能理解的流程。比如,讲解数据倾斜问题时,它没有直接抛出复杂的公式,而是通过一个“物流中心货物分配不均”的例子,形象地展示了问题所在,以及对应的优化策略。对于初学者而言,这种循序渐进、注重实践的讲解方式,简直是福音。我感觉自己不是在啃一本技术教材,而是在听一位经验丰富的大咖,手把手地教我如何构建一个稳定可靠的大数据处理流水线。书中的代码示例也极其精准,往往只用寥寥数行,就能解决过去需要耗费数小时调试的难题。
没有实用价值
入个门,缺少一个总体的介绍,缺乏条理。
我当时怎么就买的这本,写的这是个什么几把玩意儿,堆代码,内容混乱,国人写书就这逼德行,负无穷滚粗!!!
我当时怎么就买的这本,写的这是个什么几把玩意儿,堆代码,内容混乱,国人写书就这逼德行,负无穷滚粗!!!
作为一名大数据新手,表示看得好累,感觉看不到一个全景图,然后就掉进了某个不知到是什么的章节里面,然后细看吧又看不懂,粗看吧,内心又很不安。总之,从第一页到最后一页扫完了。累计不到半天的时间。收获也是有的,对spark整体有了一个大致的印象了。嗯,也有可能是我太菜,辜负了作者的书。就这样吧,继续下一本。