具体描述
本书是Spark实战指南,全书共分8章。前4章介绍Spark的部署、工作机制和内核,后4章分别通过实战项目介绍Spark SQL、Spark Streaming、Spark GraphX和Spark MLib功能模块。此外,本书详细介绍了常见的实战问题,比如大数据环境下的配置设置、程序调优等。本书附带的一键安装脚本,更能为初学者提供很大帮助。
作者简介
陈欢
腾讯资深程序员,15年编码经验,曾任职网络安全、互联网金融等部门,亲手从零建设了财付通业务的Spark集群,并使之同时支持SQL、实时计算、机器学习等多种数据计算场景。他目前就职于腾讯社交与效果广告部,从事大数据分析工作。
林世飞
腾讯资深研究员,2005年加入腾讯,先后在无线产品、安全中心、搜索平台、开放平台、社交与效果广告部等部门从事开发和团队管理工作。他对网络安全、搜索引擎、数据挖掘、机器学习有一定了解,热衷知识传播和分享,曾获腾讯学院2009年年度优秀讲师。目前,他就职于社交与效果广告部,负责广告系统相关的研发工作。
目录信息
1.1 大数据的发展及现状 1
1.1.1 大数据时代所面临的问题 1
1.1.2 谷歌的大数据解决方案 2
1.1.3 Hadoop生态系统 3
1.2 Spark应时而生 4
1.2.1 Spark的起源 4
1.2.2 Spark的特点 5
1.2.3 Spark的未来发展 6
第2章 Spark基础 8
2.1 Spark本地单机模式体验 8
2.1.1 安装虚拟机 8
2.1.2 安装JDK 19
2.1.3 下载Spark预编译包 21
2.1.4 本地体验Spark 22
2.2 高可用Spark分布式集群部署 25
2.2.1 集群总览 26
2.2.2 集群机器的型号选择 28
2.2.3 初始化集群机器环境 29
2.2.4 部署ZooKeeper集群 33
2.2.5 编译Spark 35
2.2.6 部署Spark Standalone集群 37
2.2.7 高可用Hadoop集群 40
2.2.8 让Spark运行在YARN上 40
2.2.9 一键部署高可用Hadoop +Spark集群 42
2.3 Spark编程指南 43
2.3.1 交互式编程 43
2.3.2 RDD创建 44
2.3.3 RDD操作 47
2.3.4 使用其他语言开发Spark程序 54
2.4 打包和提交 54
2.4.1 编译、链接、打包 54
2.4.2 提交 56
第3章 Spark工作机制 58
3.1 调度管理 58
3.1.1 集群概述及名词解释 58
3.1.2 Spark程序之间的调度 60
3.1.3 Spark程序内部的调度 63
3.2 内存管理 65
3.2.1 RDD持久化 65
3.2.2 共享变量 66
3.3 容错机制 67
3.3.1 容错体系概述 67
3.3.2 Master节点失效 68
3.3.3 Slave节点失效 69
3.4 监控管理 69
3.4.1 Web界面 69
3.4.2 REST API 72
3.4.3 Metrics指标体系 73
3.4.4 其他监控工具 73
3.5 Spark程序配置管理 73
3.5.1 Spark程序配置加载过程 74
3.5.2 环境变量配置 74
3.5.3 Spark属性项配置 74
3.5.4 查看当前的配置 76
3.5.5 配置Spark日志 76
第4章 Spark内核讲解 77
4.1 Spark核心数据结构RDD 77
4.1.1 RDD的定义 78
4.1.2 RDD的Transformation 80
4.1.3 RDD的Action 82
4.1.4 Shuffle 83
4.2 SparkContext 84
4.2.1 SparkConf配置 84
4.2.2 初始化过程 85
4.2.3 其他功能接口 87
4.3 DAG调度 87
4.3.1 DAGScheduler 87
4.3.2 TaskScheduler 90
第5章 Spark SQL与数据仓库 92
5.1 Spark SQL基础 93
5.1.1 分布式SQL引擎 93
5.1.2 支持的SQL语法 97
5.1.3 支持的数据类型 98
5.1.4 DataFrame 99
5.1.5 DataFrame数据源 103
5.1.6 性能调优 104
5.2 Spark SQL原理和运行机制 104
5.2.1 Spark SQL整体架构 105
5.2.2 Catalyst执行优化器 105
5.3 应用场景:基于淘宝数据建立电商数据仓库 110
5.3.1 电商数据仓库场景 111
5.3.2 数据准备和表设计 111
5.3.3 用Spark SQL来完成日常运营数据分析 115
5.3.4 Spark SQL在大规模数据下的性能表现 120
第6章 Spark流式计算 122
6.1 Spark Streaming基础知识 123
6.1.1 入门简单示例 123
6.1.2 基本概念 124
6.1.3 高级操作 129
6.2 深入理解Spark Streaming 132
6.2.1 DStream的两类操作 132
6.2.2 容错处理 134
6.2.3 性能调优 136
6.2.4 与Storm的对比 137
6.3 应用场景:一个类似百度统计的流式实时系统 139
6.3.1 Web log实时统计场景 139
6.3.2 日志实时采集 140
6.3.3 流式分析系统实现 140
第7章 Spark图计算 149
7.1 什么是图计算 149
7.1.1 图的基本概念 149
7.1.2 图计算的应用 150
7.2 Spark GraphX简介 151
7.2.1 GraphX实现 151
7.2.2 GraphX常用API介绍 152
7.3 应用场景:基于新浪微博数据的社交网络分析 153
7.3.1 社交网络分析的主要应用 153
7.3.2 社区发现算法简介 154
7.3.3 用GraphX实现Louvain算法 156
7.3.4 小试牛刀:谁是你的闺蜜 162
7.3.5 真实的场景:新浪微博关系
分析 164
第8章 Spark MLlib 169
8.1 机器学习简介 169
8.1.1 什么是机器学习 169
8.1.2 机器学习示例 171
8.1.3 机器学习的基本方法 172
8.1.4 机器学习的常见技巧 173
8.1.5 机器学习参考资料 174
8.2 MLlib库简介 174
8.2.1 基础数据类型 174
8.2.2 主要的库 175
8.2.3 附带的示例程序 176
8.3 应用场景:搜索广告点击率预估系统 178
8.3.1 应用场景 178
8.3.2 逻辑回归 179
8.3.3 学习算法 181
8.3.4 模型评估 184
8.3.5 数据准备 186
8.3.6 模型训练 187
8.3.7 模型调优 195
附录 Scala语言参考 197
· · · · · · (收起)
读后感
用户评价
关于《软件架构的演进:从单体到微服务的心路历程》,这本书的叙事视角非常独特,它不像技术书籍那样冷冰冰地罗列架构模式,而是将架构决策视为一场充满了权衡、妥协与远见的“商业决策”。作者通过回顾几个虚构但极具代表性的公司案例,生动地展示了技术债是如何慢慢积累,最终迫使企业进行痛苦的架构重构。我特别喜欢它对微服务架构的“去神化”处理,没有将它描绘成解决一切问题的银弹,而是坦诚地揭示了其带来的复杂性、分布式事务的难题以及运维成本的激增。书中对于“领域驱动设计(DDD)”的引入和应用讲解得非常清晰,它强调了架构的边界必须和业务的边界对齐,这使得架构师在面对业务变化时,能够更有信心地去设计弹性更强的系统。阅读这本书,我体会到架构师的角色,远不止于画图,更在于预见未来、平衡短期交付与长期健康之间的微妙艺术。
翻开《深度学习的艺术与哲学》,我立刻被其那种近乎诗意的文字风格所吸引。这本书似乎更关注的是“思想的构建”而非“代码的堆砌”。它花了大量的篇幅去探讨神经网络的演进历史,那些早期的尝试、失败的教训,以及最终突破的灵光一现,都描绘得栩栩如生,仿佛我们亲身参与了那段波澜壮阔的AI发展史。作者对Transformer架构的解读,更是独树一帜,没有采取教科书式的线性罗列,而是从“注意力”这一核心概念出发,层层递进,让你真正理解为何这种机制能够彻底改变自然语言处理的面貌。更让我感到惊喜的是,书中穿插了许多跨学科的思考,比如将深度学习与认知科学的最新发现进行类比,这极大地拓宽了我的视野,让我不再将AI视为一个孤立的技术领域,而是人类理解自身智能的一种新型工具。对于那些已经掌握了基础框架,但渴望触及更高层次理论思考的读者来说,这本书无疑提供了一次精神上的洗礼和升华。
这本《数据科学的秘密武器》简直是为那些在数据处理的汪洋大海中感到迷茫的航海者准备的灯塔。作者没有过多纠缠于那些晦涩难懂的数学公式,而是直接切入实战,用清晰、近乎对话式的语言,将那些原本高深莫测的机器学习模型剖析得犹如庖丁解牛般透彻。特别是关于特征工程的那一章,简直是醍醐灌顶,它详细阐述了如何从原始数据中“榨取”出最有价值的信息,避免了那种“垃圾进,垃圾出”的窘境。书中对时间序列分析的案例讲解尤为精彩,它不仅仅是告诉你“怎么做”,更深层次地解释了“为什么这么做”,这种对底层逻辑的尊重,让我在面对新的、未曾谋面的数据集时,多了一份从容和自信。我尤其欣赏作者对于模型评估的严谨态度,它提醒我们,一个在测试集上表现完美的模型,在真实世界中可能不堪一击,这种对现实局限性的深刻认知,是衡量一本优秀数据科学书籍的关键标准。读完此书,感觉自己像是完成了一次高级的内功修炼,功力大增,看问题也更全面了。
《高效能程序员的自我修炼手册》这本书,读起来的感受更像是在与一位经验丰富、说话直爽的前辈进行一对一的“深夜咖啡时间交流”。它没有宏大的理论框架,而是聚焦于那些在日常编码中,日积月累却又常常被忽视的“坏习惯”和“小技巧”。比如,关于代码注释的“黄金法则”,作者提出注释应该解释“为什么这么做”,而不是“做了什么”——这个观点立刻击中了我过去写注释的痛点。在谈到版本控制时,书中关于分支策略的讨论非常接地气,它没有推崇某个单一的Git工作流,而是根据团队规模和项目复杂度,提供了不同策略的优劣分析,帮助我为自己的团队找到了最适合的平衡点。此外,书中关于“调试的艺术”部分,提供了一套系统性的问题排查思路,教会我如何冷静地拆解复杂的Bug,而不是盲目地在代码中乱撞。这本书给人的感觉是即插即用,读完一章就能立刻在下一秒的工作中看到立竿见影的效果,实用性极强。
《现代数据库设计与优化圣典》这本书,我必须承认,起初我对它的期待值并不高,以为它会是一本枯燥的CRUD(增删改查)手册。然而,它完全超出了我的预期。它更像是一部关于“信息组织学”的百科全书。作者对范式理论的讲解,清晰到连刚接触数据库概念的新手都能迅速掌握其精髓,但它并未止步于此,紧接着就深入探讨了在TB级数据量下,传统关系型数据库在何种场景下会遭遇性能瓶颈,以及何时应该果断转向NoSQL或其他分布式方案。最让我受益匪浅的是关于索引优化策略的部分,书中列举了十几种复杂的查询场景,并针对每一种场景给出了定制化的索引构建和维护建议,这远比网上那些泛泛而谈的“加索引就完事了”的建议要精深得多。读完后,我发现自己对数据库的理解从“存储数据的地方”提升到了“如何高效地管理和调度信息资产”的战略层面,对系统架构的稳定性有了更深刻的敬畏之心。
同样建议准备看这本的同学,还不如好好看看《Spark快速大数据分析》
这书写的我只能给三分了。看到连城推荐鹅厂的实践就下单,但是看到集群搭建standalone和yarn模式混为一潭顿时觉得索然无味,坚持读完觉得写的还算是全面,水平入门看看还算有零星收获,书名是入门必备可给四分,称为最佳实践的话只能三分了……
出版社赠书,拖到今天随手翻完,感觉像是作者自己的学习笔记,该深不深该浅不浅。也许这就是最佳实践?
很简单的,方便小白快速入门的书吧。作为编程类的书来说,200多页,就知道内容是什么样的了。
这书写的我只能给三分了。看到连城推荐鹅厂的实践就下单,但是看到集群搭建standalone和yarn模式混为一潭顿时觉得索然无味,坚持读完觉得写的还算是全面,水平入门看看还算有零星收获,书名是入门必备可给四分,称为最佳实践的话只能三分了……