新書推薦:
《
教育何用:重估教育的价值
》
售價:NT$
299.0
《
理想城市:环境与诗性
》
售價:NT$
390.0
《
逆风翻盘 危机时代的亿万赢家 在充满危机与风险的世界里,学会与之共舞并找到致富与生存之道
》
售價:NT$
625.0
《
工业互联网导论
》
售價:NT$
445.0
《
孤独传:一种现代情感的历史
》
售價:NT$
390.0
《
家、金钱和孩子
》
售價:NT$
295.0
《
形而上学与测量
》
售價:NT$
340.0
《
世界航母、舰载机图鉴 【日】坂本明
》
售價:NT$
340.0
|
內容簡介: |
本书分为三篇。第壹篇:从整体上给出数据大图和数据平台大图,主要介绍数据的主要流程、各个流程的关键技术、数据的主要从业者及他们的职责等;数据平台大图分离线和实时分别给出数据平台架构、关键数据概念和技术等;第二篇:介绍离线数据开发的主要技术,包含Hadoop、Hive、维度建模等,另外此部分还将综合上述各种离线技术给出离线数据处理实战;第三篇:集中介绍实时数据处理的各项技术,包含Storm、SparkSteaming、Flink、Beam等。
|
目錄:
|
目录?Contents
前言
第一篇 数据大图和数据平台大图
第1章 数据大图2
1.1 数据流程2
1.1.1 数据产生3
1.1.2 数据采集和传输5
1.1.3 数据存储处理6
1.1.4 数据应用7
1.2 数据技术8
1.2.1 数据采集传输主要技术9
1.2.2 数据处理主要技术10
1.2.3 数据存储主要技术12
1.2.4 数据应用主要技术13
1.3 数据相关从业者和角色14
1.3.1 数据平台开发、运维工程师14
1.3.2 数据开发、运维工程师15
1.3.3 数据分析工程师15
1.3.4 算法工程师16
1.3.5 业务人员16
1.4 本章小结17
第2章 数据平台大图18
2.1 离线数据平台的架构、技术和设计19
2.1.1 离线数据平台的整体架构19
2.1.2 数据仓库技术20
2.1.3 数据仓库建模技术23
2.1.4 数据仓库逻辑架构设计26
2.2 实时数据平台的架构、技术和设计27
2.2.1 实时数据平台的整体架构28
2.2.2 流计算技术29
2.2.3 主要流计算开源框架29
2.3 数据管理32
2.3.1 数据探查32
2.3.2 数据集成33
2.3.3 数据质量33
2.3.4 数据屏蔽34
2.4 本章小结35
第二篇 离线数据开发:大数据开发的主战场
第3章 Hadoop原理实践38
3.1 开启大数据时代的Hadoop38
3.2 HDFS和MapReduce优缺点分析40
3.2.1 HDFS41
3.2.2 MapReduce42
3.3 HDFS和MapReduce基本架构43
3.4 MapReduce内部原理实践46
3.4.1 MapReduce逻辑开发46
3.4.2 MapReduce任务提交详解47
3.4.3 MapReduce内部执行原理详解48
3.5 本章小结52
第4章 Hive原理实践53
4.1 离线大数据处理的主要技术:Hive53
4.1.1 Hive出现背景53
4.1.2 Hive基本架构55
4.2 Hive SQL56
4.2.1 Hive 关键概念57
4.2.2 Hive 数据库59
4.2.3 Hive 表DDL60
4.2.4 Hive表DML63
4.3 Hive SQL执行原理图解65
4.3.1 select 语句执行图解66
4.3.2 group by语句执行图解67
4.3.3 join语句执行图解69
4.4 Hive函数73
4.5 其他SQL on Hadoop技术74
4.6 本章小结76
第5章 Hive优化实践77
5.1 离线数据处理的主要挑战:数据倾斜77
5.2 Hive优化79
5.3 join无关的优化79
5.3.1 group by引起的倾斜优化79
5.3.2 count distinct优化80
5.4 大表join小表优化80
5.5 大表join大表优化82
5.5.1 问题场景82
5.5.2 方案1:转化为mapjoin83
5.5.3 方案2:join时用case when语句84
5.5.4 方案3:倍数B表,再取模join84
5.5.5 方案4:动态一分为二87
5.6 本章小结89
第6章 维度建模技术实践90
6.1 大数据建模的主要技术:维度建模90
6.1.1 维度建模关键概念91
6.1.2 维度建模一般过程95
6.2 维度表设计96
6.2.1 维度变化96
6.2.2 维度层次99
6.2.3 维度一致性100
6.2.4 维度整合和拆分101
6.2.5 维度其他102
6.3 深入事实表104
6.3.1 事务事实表104
6.3.2 快照事实表106
6.3.3 累计快照事实表107
6.3.4 无事实的事实表108
6.3.5 汇总的事实表108
6.4 大数据的维度建模实践109
6.4.1 事实表109
6.4.2 维度表110
6.5 本章小结110
第7章 Hadoop数据仓库开发实战111
7.1 业务需求112
7.2 Hadoop数据仓库架构设计113
7.3 Hadoop数据仓库规范设计114
7.3.1 命名规范115
7.3.2 开发规范115
7.3.3 流程规范116
7.4 FutureRetailer数据仓库构建实践118
7.4.1 商品维度表118
7.4.2 销售事实表120
7.5 数据平台新架构——数据湖121
7.6 本章小结123
第三篇 实时数据开发:大数据开发的未来
第8章 Storm流计算开发127
8.1 流计算技术的鼻祖:Storm技术128
8.1.1 Storm基本架构129
8.1.2 Storm关键概念130
8.1.3 Storm并发132
8.1.4 Storm核心类和接口133
8.2 Storm实时开发示例133
8.2.1 语句生成spout134
8.2.2 语句分割bolt135
8.2.3 单词计数bolt136
8.2.4 上报bolt136
8.2.5 单词计数topology137
8.2.6 单词计数并发配置139
8.3 Storm高级原语Trident142
8.3.1 Trident引入背景142
8.3.2 Trident基本思路142
8.3.3 Trident流操作143
8.3.4 Trident的实时开发实例145
8.4 Storm关键技术147
8.4.1 spout的可靠性147
8.4.2 bolt的可靠性148
8.4.3 Storm反压机制149
8.5 本章小结150
第9章 Spark Streaming流计算开发151
9.1 Spark生态和核心概念151
9.1.1 Spark概览151
9.1.2 Spark核心概念153
9.1.3 Spark生态圈157
9.2 Spark生态的流计算技术:Spark Streaming158
9.2.1 Spark Streaming基本原理159
9.2.2 Spark Streaming核心API159
9.3 Spark Streaming的实时开发示例161
9.4 Spark Streaming调优实践162
9.5 Spark Streaming关键技术164
9.5.1 Spark Streaming可靠性语义164
9.5.2 Spark Streaming反压机制165
9.6 本章小结166
第10章 Flink流计算开发167
10.1 流计算技术新贵:Flink167
10.1.1 Flink技术栈168
10.1.2 Flink关键概念和基本原理169
10.2 Flink API172
10.2.1 API概览172
10.2.2 DataStream API173
10.3 Flink实时开发示例180
10.4 Flink关键技术详解182
10.4.1 容错机制182
10.4.2 水位线184
10.4.3 窗口机制185
10.4.4 撤回187
10.4.5 反压机制187
10.5 本章小结188
第11章 Beam技术189
11.1 意图一统流计算的Beam190
11.1.1 Beam的产生背景190
11.1.2 Beam技术191
11.2 Beam技术核心:Beam Model193
11.3 Beam SDK196
11.3.1 关键概念196
11.3.2 Beam SDK197
11.4 Beam窗口详解202
11.4.1 窗口基础202
11.4.2 水位线与延迟数据203
11.4.3 触发器204
11.5 本章小结205
第12章 Stream SQL实时开发实战206
12.1 流计算SQL原理和架构207
12.2 流计算SQL:未来主要的实时开发技术208
12.3 Stream SQL209
12.3.1 Stream SQL源表209
12.3.2 Stream SQL结果表209
12.3.3 Stream SQL维度表210
12.3.4 Stream SQL临时表211
12.3.5 Stream SQL DML211
12.4 Stream SQL的实时开发实战212
12.4.1 select操作212
12.4.2 join操作214
12.4.3 聚合操作218
12.5 撤回机制221
12.6 本章小结222
参考文献224
|
內容試閱:
|
Preface前言为什么要写这本书念念不忘,终有回响。
撰写一本数据开发相关书的念头始于笔者学习数据知识的早期,当时笔者遍寻市面上所有的数据书籍,却没有发现一本系统化且从项目实践角度突出重点的数据开发书籍。
笔者非常理解某领域初学者的苦衷,对于他们来说,最重要的不是具体的API、安装教程等,而是先找到该领域的知识图谱,有了它,就可按图索骥,有针对性地去学。
对于大数据技术来说,上述需求更甚。一方面,由于社区、商业甚至个人原因,大数据的技术可以说是五花八门、琳琅满目,初学者非常容易不知所措,不知从哪里下手。另一方面,从理论上来说,互联网上几乎可以查到所有的大数据技术,比如在百度上搜索、问知乎,但这些都是碎片化的知识,不成体系,初学者需要先建立自己的大数据知识架构,再进一步深入。
本书正是基于这样的初衷撰写的,旨在帮助和加快初学者建立大数据开发领域知识图谱的过程,带领初学者更快地了解这片领域,而无须花更长的时间自己去摸索。
当然,未来是DT(Data Technology)时代,随着人工智能、大数据、云计算的崛起,未来数据将起到关键的作用,数据将成为如同水、电、煤一样的基础设施。但是,实际上目前数据的价值还远远没有得到充分的挖掘,如医疗数据、生物基因数据、交通物流数据、零售数据等。所以笔者非常希望本书能够对各个业务领域的业务分析人员、分析师、算法工程师等有所帮助,让他们更快地熟悉和掌握数据的加工处理知识与技巧,从而能够更好、更快地分析、挖掘和应用数据,让数据产生更多、更大的价值。
通过阅读本书,读者能建立自己的大数据开发知识体系和图谱,掌握数据开发的各种技术(包括有关概念、原理、架构以及实际的开发和优化技巧等),并能对实际项目中的数据开发提供指导和参考。
大数据技术日新月异,由于篇幅和时间限制,书中仅讲述了当前主要和主流的数据相关技术,如果读者对大数据开发有兴趣,本书将是首选的入门读物。
本书特色本书从实际项目实践出发,专注、完整、系统化地讲述数据开发技术,此处的数据开发技术包括离线数据处理技术、实时数据处理技术、数据开发优化、大数据建模、数据分层体系建设等。
我们处于一个信息过度的时代,互联网涵盖了人类有史以来的所有知识,浩如烟海。对大数据开发技术来说,更是如此。那么,大数据相关人员如何吸收、消化、应用和扩展自己的技术知识?如何把握相关的大数据技术深度和广度?深入到何种程度?涉猎到何种范围?这是很有意思的问题。笔者认为最重要的是找到锚点,而本书的锚点就是数据开发技术。所以本书的另一个特点是以数据开发实战作为锚点,来组织、介绍各种数据开发技术,包括各种数据处理技术的深度和广度把握等。比如在离线数据处理中,目前事实的处理标准是Hive,实际项目中开发者已经很少自己写Hadoop MapReduce程序来进行大数据处理,那是不是说MapRedue和HDFS就不需要掌握了呢?如果不是,又需要掌握到何种程度呢?笔者的答案是,对于Hive要精深掌握,包括其开发技巧和优化技巧等。MapReduce要掌握执行原理和过程,而MapRedue和HDFS具体的读数据流程、写数据流程、错误处理、调度处理、IO操作、各种API、管理运维等,站在数据开发的角度,这些都不是必须掌握的。
本书还有一个特点,就是专门讲述了实时数据处理的流计算SQL。笔者认为,未来的实时处理技术的事实标准将会是SQL,实际上这也是正在发生的现实。
读者对象本书主要适合于以下读者,包含:
大数据开发工程师大数据架构师数据科学家数据分析师算法工程师业务分析师其他对数据感兴趣的人员如何阅读本书本书内容分为三篇,共12章。
第一篇为数据大图和数据平台大图(第1章和第2章),主要站在全局的角度,基于数据、数据技术、数据相关从业者和角色、离线和实时数据平台架构等给出整体和大图形式的介绍。
第1章 站在数据的全局角度,对数据流程以及流程中涉及的主要数据技术进行介绍,还介绍了主要的数据从业者角色和他们的日常工作内容,使读者有个感性的认识。
第2章 是本书的纲领性章节,站在数据平台的角度,对离线和实时数据平台架构以及相关的各项技术进行介绍。同时给出数据技术的整体骨架,后续的各章将基于此骨架,具体详述各项技术。
第二篇为离线数据开发:大数据开发的主战场(第3~7章),离线数据是目前整个数据开发的根本和基础,也是目前数据开发的主战场。这一部分详细介绍离线数据处理的各种技术。
第3章 详细介绍离线数据处理的技术基础Hadoop MapReduce和HDFS。本章主要从执行原理和过程方面介绍此项技术,是第4章和第5章的基础。
第4章 详细介绍Hive。Hive是目前离线数据处理的主要工具和技术。本章主要介绍Hive的概念、原理、架构,并以执行图解的方式详细介绍其执行过程和机制。
第5章 详细介绍Hive的优化技术,包括数据倾斜的概念、join无关的优化技巧、join相关的优化技巧,尤其是大表及其join操作可能的优化方案等。
第6章 详细介绍数据的维度建模技术,包括维度建模的各种概念、维度表和事实表的设计以及大数据时代对维度建模的改良和优化等。
第7章 主要以虚构的某全国连锁零售超市FutureRetailer为例介绍逻辑数据仓库的构建,包括数据仓库的逻辑架构、分层、开发和命名规范等,还介绍了数据湖的新数据架构。
第三篇为实时数据开发:大数据开发的未来(第8~12章),主要介绍实时数据处理的各项技术,包括Storm、Spark Streaming、Flink、Beam以及流计算SQL等。
第8章 详细介绍分布式流计算最早流行的Storm技术,包括原生Storm以及衍生的Trident框架。
第9章 主要介绍Spark生态的流数据处理解决方案Spark Streaming,包括其基本原理介绍、基本API、可靠性、性能调优、数据倾斜和反压机制等。
第10章 主要介绍流计算技术新贵Flink技术。Flink兼顾数据处理的延迟与吞吐量,而且具有流计算框架应该具有的诸多数据特性,因此被广泛认可为下一代的流式处理引擎。
第11章 主要介绍Google力推的Beam技术。Beam的设计目标就是统一离线批处理和实时流处理的编程范式,Beam抽象出数据处理的通用处理范式Beam Model,是流计算技术的核心和精华。
第12章 主要结合Flink SQL和阿里云Stream SQL介绍流计算SQL,并以典型的几种实时开发场景为例进行实时数据开发实战。
勘误和支持本书是笔者对大数据开发知识的“一孔之见”,囿于个人实践、经验以及时间关系,难免有偏颇和不足,书中也难免出现一些错误、不准确之处和个人的一些主观看法,恳请读者不吝赐教。你可以通过以下方式联系笔者。
微信号:yeshubert微博:hubert_zhu邮箱:493736841@qq.com希望与大家共同交流、学习,共同促进数据技术和数据行业的发展,让数据发挥更大的价值。
致谢首先非常感谢Apache基金会,在笔者撰写各个开源技术框架相关内容的过程中,Apache官方文档提供了最全面、最深入、最准确的参考材料。
感谢互联网上无名的众多技术博客、文章撰写者,对于数据技术和生态的繁荣,我们所有人都是不可或缺的一分子。
感谢阿里巴巴公司智能服务事业部数据技术团队的全部同事,尤其薛奎、默岭、萧克、延春、钟雷、建帧、思民、宇轩、赛侠、紫豪、松坡、贾栩、丘少、茅客等,与他们的日常交流让我受益颇多。
感谢机械工业出版社华章策划编辑高婧雅,从选题到定稿再到本书的出版,她提供了非常专业的指导和帮助。
特别致谢特别感谢我的妻子李灿萍和我们的女儿六一,你们永远是我的力量源泉。
同时感谢我的父母和岳父岳母,有了你们的诸多照顾和支持,我才有时间和精力去完成额外的写作。
谨以此书献给我的家人,以及直接或间接让数据发挥价值的所有朋友们!
朱松岭(邦中)
|
|