具体描述
作者简介
董西成,资深大数据技术实践者和研究者,对大数据基础架构有非常深刻的认识和理解,有着丰富的实践经验。熟悉常见的开源大数据解决方案,包括Hadoop和spark生态系统等,擅长底层分布式系统的优化和开发。撰写了大量Hadoop和spark等大数据相关的技术文章并分享在自己的博客上,由于文章技术含量高,所以非常受欢迎。出版有大数据领域负有盛名的专著:《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》和《Hadoop技术内幕:深入解析YARN架构设计与实现原理》。
目录信息
第一部分 概述篇
第1章 企业级大数据技术体系概述 2
1.1 大数据系统产生背景及应用场景 2
1.1.1 产生背景 2
1.1.2 常见大数据应用场景 3
1.2 企业级大数据技术框架 5
1.2.1 数据收集层 6
1.2.2 数据存储层 7
1.2.3 资源管理与服务协调层 7
1.2.4 计算引擎层 8
1.2.5 数据分析层 9
1.2.6 数据可视化层 9
1.3 企业级大数据技术实现方案 9
1.3.1 Google大数据技术栈 10
1.3.2 Hadoop与Spark开源大数据技术栈 12
1.4 大数据架构:Lambda Architecture 15
1.5 Hadoop与Spark版本选择及安装部署 16
1.5.1 Hadoop与Spark版本选择 16
1.5.2 Hadoop与Spark安装部署 17
1.6 小结 18
1.7 本章问题 18
第二部分 数据收集篇
第2章 关系型数据的收集 20
2.1 Sqoop概述 20
2.1.1 设计动机 20
2.1.2 Sqoop基本思想及特点 21
2.2 Sqoop基本架构 21
2.2.1 Sqoop1基本架构 22
2.2.2 Sqoop2基本架构 23
2.2.3 Sqoop1与Sqoop2对比 24
2.3 Sqoop使用方式 25
2.3.1 Sqoop1使用方式 25
2.3.2 Sqoop2使用方式 28
2.4 数据增量收集CDC 31
2.4.1 CDC动机与应用场景 31
2.4.2 CDC开源实现Canal 32
2.4.3 多机房数据同步系统Otter 33
2.5 小结 35
2.6 本章问题 35
第3章 非关系型数据的收集 36
3.1 概述 36
3.1.1 Flume设计动机 36
3.1.2 Flume基本思想及特点 37
3.2 Flume NG基本架构 38
3.2.1 Flume NG基本架构 38
3.2.2 Flume NG高级组件 41
3.3 Flume NG数据流拓扑构建方法 42
3.3.1 如何构建数据流拓扑 42
3.3.2 数据流拓扑实例剖析 46
3.4 小结 50
3.5 本章问题 50
第4章 分布式消息队列Kafka 51
4.1 概述 51
4.1.1 Kafka设计动机 51
4.1.2 Kafka特点 53
4.2 Kafka设计架构 53
4.2.1 Kafka基本架构 54
4.2.2 Kafka各组件详解 54
4.2.3 Kafka关键技术点 58
4.3 Kafka程序设计 60
4.3.1 Producer程序设计 61
4.3.2 Consumer程序设计 63
4.3.3 开源Producer与Consumer实现 65
4.4 Kafka典型应用场景 65
4.5 小结 67
4.6 本章问题 67
第三部分 数据存储篇
第5章 数据序列化与文件存储格式 70
5.1 数据序列化的意义 70
5.2 数据序列化方案 72
5.2.1 序列化框架Thrift 72
5.2.2 序列化框架Protobuf 74
5.2.3 序列化框架Avro 76
5.2.4 序列化框架对比 78
5.3 文件存储格式剖析 79
5.3.1 行存储与列存储 79
5.3.2 行式存储格式 80
5.3.3 列式存储格式ORC、Parquet与CarbonData 82
5.4 小结 88
5.5 本章问题 89
第6章 分布式文件系统 90
6.1 背景 90
6.2 文件级别和块级别的分布式文件系统 91
6.2.1 文件级别的分布式系统 91
6.2.2 块级别的分布式系统 92
6.3 HDFS基本架构 93
6.4 HDFS关键技术 94
6.4.1 容错性设计 95
6.4.2 副本放置策略 95
6.4.3 异构存储介质 96
6.4.4 集中式缓存管理 97
6.5 HDFS访问方式 98
6.5.1 HDFS shell 98
6.5.2 HDFS API 100
6.5.3 数据收集组件 101
6.5.4 计算引擎 102
6.6 小结 102
6.7 本章问题 103
第7章 分布式结构化存储系统 104
7.1 背景 104
7.2 HBase数据模型 105
7.2.1 逻辑数据模型 105
7.2.2 物理数据存储 107
7.3 HBase基本架构 108
7.3.1 HBase基本架构 108
7.3.2 HBase内部原理 110
7.4 HBase访问方式 114
7.4.1 HBase shell 114
7.4.2 HBase API 116
7.4.3 数据收集组件 118
7.4.4 计算引擎 119
7.4.5 Apache Phoenix 119
7.5 HBase应用案例 120
7.5.1 社交关系数据存储 120
7.5.2 时间序列数据库OpenTSDB 122
7.6 分布式列式存储系统Kudu 125
7.6.1 Kudu基本特点 125
7.6.2 Kudu数据模型与架构 126
7.6.3 HBase与Kudu对比 126
7.7 小结 127
7.8 本章问题 127
第四部分 分布式协调与资源管理篇
第8章 分布式协调服务ZooKeeper 130
8.1 分布式协调服务的存在意义 130
8.1.1 leader选举 130
8.1.2 负载均衡 131
8.2 ZooKeeper数据模型 132
8.3 ZooKeeper基本架构 133
8.4 ZooKeeper程序设计 134
8.4.1 ZooKeeper API 135
8.4.2 Apache Curator 139
8.5 ZooKeeper应用案例 142
8.5.1 leader选举 142
8.5.2 分布式队列 143
8.5.3 负载均衡 143
8.6 小结 144
8.7 本章问题 145
第9章 资源管理与调度系统YARN 146
9.1 YARN产生背景 146
9.1.1 MRv1局限性 146
9.1.2 YARN设计动机 147
9.2 YARN设计思想 148
9.3 YARN的基本架构与原理 149
9.3.1 YARN基本架构 149
9.3.2 YARN高可用 152
9.3.3 YARN工作流程 153
9.4 YARN资源调度器 155
9.4.1 层级队列管理机制 155
9.4.2 多租户资源调度器产生背景 156
9.4.3 Capacity/Fair Scheduler 157
9.4.4 基于节点标签的调度 160
9.4.5 资源抢占模型 163
9.5 YARN资源隔离 164
9.6 以YARN为核心的生态系统 165
9.7 资源管理系统Mesos 167
9.7.1 Mesos基本架构 167
9.7.2 Mesos资源分配策略 169
9.7.3 Mesos与YARN对比 170
9.8 资源管理系统架构演化 170
9.8.1 集中式架构 171
9.8.2 双层调度架构 171
9.8.3 共享状态架构 172
9.9 小结 173
9.10 本章问题 173
第五部分 大数据计算引擎篇
第10章 批处理引擎MapReduce 176
10.1 概述 176
10.1.1 MapReduce产生背景 176
10.1.2 MapReduce设计目标 177
10.2 MapReduce编程模型 178
10.2.1 编程思想 178
10.2.2 MapReduce编程组件 179
10.3 MapReduce程序设计 187
10.3.1 MapReduce程序设计基础 187
10.3.2 MapReduce程序设计进阶 194
10.3.3 Hadoop Streaming 198
10.4 MapReduce内部原理 204
10.4.1 MapReduce作业生命周期 204
10.4.2 MapTask与ReduceTask 206
10.4.3 MapReduce关键技术 209
10.5 MapReduce应用实例 211
10.6 小结 213
10.7 本章问题 213
第11章 DAG计算引擎Spark 215
11.1 概述 215
11.1.1 Spark产生背景 215
11.1.2 Spark主要特点 217
11.2 Spark编程模型 218
11.2.1 Spark核心概念 218
11.2.2 Spark程序基本框架 220
11.2.3 Spark编程接口 221
11.3 Spark运行模式 227
11.3.1 Standalone模式 229
11.3.2 YARN模式 230
11.3.3 Spark Shell 232
11.4 Spark程序设计实例 232
11.4.1 构建倒排索引 232
11.4.2 SQL GroupBy实现 234
11.4.3 应用程序提交 235
11.5 Spark内部原理 236
11.5.1 Spark作业生命周期 237
11.5.2 Spark Shuffle 241
11.6 DataFrame、Dataset与SQL 247
11.6.1 DataFrame/Dataset与SQL的关系 248
11.6.2 DataFrame/Dataset程序设计 249
11.6.3 DataFrame/Dataset程序实例 254
11.7 Spark生态系统 257
11.8 小结 257
11.9 本章问题 258
第12章 交互式计算引擎 261
12.1 概述 261
12.1.1 产生背景 261
12.1.2 交互式查询引擎分类 262
12.1.3 常见的开源实现 263
12.2 ROLAP 263
12.2.1 Impala 263
12.2.2 Presto 267
12.2.3 Impala与Presto对比 271
12.3 MOLAP 271
12.3.1 Druid简介 271
12.3.2 Kylin简介 272
12.3.3 Druid与Kylin对比 274
12.4 小结 274
12.5 本章问题 274
第13章 流式实时计算引擎 276
13.1 概述 276
13.1.1 产生背景 276
13.1.2 常见的开源实现 278
13.2 Storm基础与实战 278
13.2.1 Storm概念与架构 279
13.2.2 Storm程序设计实例 282
13.2.3 Storm内部原理 285
13.3 Spark Streaming基础与实战 290
13.3.1 概念与架构 290
13.3.2 程序设计基础 291
13.3.3 编程实例详解 298
13.3.4 容错性讨论 300
13.4 流式计算引擎对比 303
13.5 小结 304
13.6 本章问题 304
第六部分 数据分析篇
第14章 数据分析语言HQL与SQL 308
14.1 概述 308
14.1.1 背景 308
14.1.2 SQL On Hadoop 309
14.2 Hive架构 309
14.2.1 Hive基本架构 310
14.2.2 Hive查询引擎 311
14.3 Spark SQL架构 312
14.3.1 Spark SQL基本架构 312
14.3.2 Spark SQL与Hive对比 313
14.4 HQL 314
14.4.1 HQL基本语法 314
14.4.2 HQL应用实例 320
14.5 小结 322
14.6 本章问题 322
第15章 大数据统一编程模型 325
15.1 产生背景 325
15.2 Apache Beam基本构成 327
15.2.1 Beam SDK 327
15.2.2 Beam Runner 328
15.3 Apache Beam编程模型 329
15.3.1 构建Pipeline 330
15.3.2 创建PCollection 331
15.3.3 使用Transform 334
15.3.4 side input与side output 340
15.4 Apache Beam流式计算模型 341
15.4.1 window简述 342
15.4.2 watermark、trigger与accumulation 344
15.5 Apache Beam编程实例 346
15.5.1 WordCount 346
15.5.2 移动游戏用户行为分析 348
15.6 小结 350
15.7 本章问题 350
第16章 大数据机器学习库 351
16.1 机器学习库简介 351
16.2 MLLib 机器学习库 354
16.2.1 Pipeline 355
16.2.2 特征工程 357
16.2.3 机器学习算法 360
16.3 小结 361
16.4 本章问题 361
· · · · · · (收起)
读后感
用户评价
这本书最让我感到惊喜的是它对**数据治理和安全合规**方面的视角。在当前大数据爆炸式增长的背景下,数据质量和隐私保护的重要性日益凸显,但许多技术书籍往往避而不谈或只是简单提及。然而,这本书用相当的篇幅讨论了**数据血缘追踪、去标识化技术**在不同计算框架下的兼容性问题。特别是关于**联邦学习**在数据不出域前提下的技术路径分析,展现了作者对前沿趋势的敏锐洞察力。这种跨领域的整合能力,使得本书超越了一般的技术手册范畴,上升到了**数据战略规划**的层面。对于企业级数据平台的搭建者而言,这本书提供的不仅是技术蓝图,更是**合规与创新之间的平衡点**。我个人认为,能够将如此底层的计算原理与宏观的治理需求结合得如此紧密的,市面上实在不多见。
坦白说,初次翻开这本书时,我担心它会变成又一本堆砌技术名词的“大全集”,但事实证明我的顾虑是多余的。它更像是一份**资深架构师的实战笔记**,充满了对工程实践中“坑”的警示和规避之道。其中关于**实时数据管道的构建与监控**那一章节,简直是黄金段落。它不仅讲了Kafka/Pulsar的基本用法,更着重探讨了**背压处理、Exactly-Once语义的实现挑战以及元数据管理**的复杂性。这些往往是初级教程中被一带而过的关键点,但恰恰是它们决定了一个系统的健壮性和生产可用性。作者在描述如何设计一个具备高可用性的数据湖架构时,那种**从业务需求反推技术选型**的思维过程,对我启发极大。他巧妙地将**成本控制与性能优化**放在一个天平上进行衡量,而不是单纯追求极限性能,这才是成熟工程思想的体现。
这本书的**深度与广度**确实让人印象深刻,尤其是它对底层原理的剖析,简直是教科书级别的严谨。我花了相当长的时间去消化其中关于分布式计算模型的阐述,比如MapReduce的演进以及新兴的流处理框架在数据一致性上的权衡。作者没有停留在概念的罗列,而是深入挖掘了**算法复杂度和系统瓶颈**,这对那些希望从“会用”走向“精通”的工程师来说,是无价之宝。我特别欣赏它在介绍数据存储结构时,对于**LSM树(Log-Structured Merge-Tree)**的细致讲解,那种将理论模型与实际应用场景(如Cassandra或RocksDB)相结合的叙述方式,让原本枯燥的结构变得鲜活起来。读完这一部分,我感觉自己对现代NoSQL数据库的性能调优有了全新的理解,不再是盲目地修改参数,而是真正理解了读写放大背后的根源。这本书的结构设计也体现了作者高超的组织能力,从基础理论到复杂系统的构建蓝图,层层递进,逻辑清晰,阅读体验极为流畅。
如果说有什么能称得上是这本书的“灵魂”,那一定是它对**系统演化与未来趋势**的深刻洞察。作者并没有将任何一个技术栈视为终点,而是将其置于一个不断迭代的生态系统中进行审视。例如,他对**湖仓一体(Lakehouse)架构**的批判性分析,不只是介绍Delta Lake或Iceberg的特性,而是深入探讨了它们在**事务性保障与海量小文件管理**方面的权衡取舍。这种历史观和前瞻性,使得这本书的参考价值远超当前的技术栈时效性。它教会我们的是一种**“面向未来变化”的设计哲学**——如何构建一个具有高可塑性、能够平滑迁移到下一代数据基础设施的平台。读完后,我感觉自己不再是简单地学习某个框架的API,而是掌握了一套**应对技术变革的思维工具箱**。
我是一个对可视化和交互式分析有特殊偏好的读者,原本以为这种偏重“硬核”原理的书籍会在这方面有所欠缺。然而,关于**数据探索与即席查询(Ad-hoc Query)**那一章,成功地扭转了我的看法。作者详尽地对比了Presto、Trino以及Dremio等查询引擎的内部工作机制,特别是它们如何优化跨引擎的数据访问延迟。更妙的是,他提供了一些**性能调优的实用技巧**,比如如何根据查询模式重构Parquet文件的列存顺序,或者如何利用物化视图来应对高频请求。这种**贴近查询工程师日常工作**的细节描写,使得理论知识迅速转化为可操作的实践步骤。这种对用户体验的关注,即使在偏底层的书籍中也显得弥足珍贵,证明作者不仅精通底层架构,也深谙如何让用户高效地从数据中获取价值。
适合入门,了解整个大数据技术体系,介绍得比较全面,易懂
比较基础,适合入门对大数据框架各个层次进行了介绍。
全书16章 作者应该是技术出身 全书代码 技术架构等 较为专业
比较基础,适合入门对大数据框架各个层次进行了介绍。
太基础了。。