猜你喜欢
离线和实时大数据开发实战

离线和实时大数据开发实战

书籍作者:朱松岭 ISBN:9787111596783
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:5215
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介
本书分为三篇。第壹篇:从整体上给出数据大图和数据平台大图,主要介绍数据的主要流程、各个流程的关键技术、数据的主要从业者及他们的职责等;数据平台大图分离线和实时分别给出数据平台架构、关键数据概念和技术等;第二篇:介绍离线数据开发的主要技术,包含Hadoop、Hive、维度建模等,另外此部分还将综合上述各种离线技术给出离线数据处理实战;第三篇:集中介绍实时数据处理的各项技术,包含Storm、SparkSteaming、Flink、Beam等。
作者简介

阿里巴巴大数据开发专家撰写,源于十余年工作实践,只讲实用有效的“招式”

庖丁解牛式讲解离线和实时开发平台架构、原理实现、开发示例,涵盖查询与优化、建模、数仓开发、流计算开发等核心技术

前言
Preface前  言为什么要写这本书念念不忘,终有回响。
撰写一本数据开发相关书的念头始于笔者学习数据知识的早期,当时笔者遍寻市面上所有的数据书籍,却没有发现一本系统化且从项目实践角度突出重点的数据开发书籍。
笔者非常理解某领域初学者的苦衷,对于他们来说,最重要的不是具体的API、安装教程等,而是先找到该领域的知识图谱,有了它,就可按图索骥,有针对性地去学。
对于大数据技术来说,上述需求更甚。一方面,由于社区、商业甚至个人原因,大数据的技术可以说是五花八门、琳琅满目,初学者非常容易不知所措,不知从哪里下手。另一方面,从理论上来说,互联网上几乎可以查到所有的大数据技术,比如在百度上搜索、问知乎,但这些都是碎片化的知识,不成体系,初学者需要先建立自己的大数据知识架构,再进一步深入。
本书正是基于这样的初衷撰写的,旨在帮助和加快初学者建立大数据开发领域知识图谱的过程,带领初学者更快地了解这片领域,而无须花更长的时间自己去摸索。
当然,未来是DT(Data Technology)时代,随着人工智能、大数据、云计算的崛起,未来数据将起到关键的作用,数据将成为如同水、电、煤一样的基础设施。但是,实际上目前数据的价值还远远没有得到充分的挖掘,如医疗数据、生物基因数据、交通物流数据、零售数据等。所以笔者非常希望本书能够对各个业务领域的业务分析人员、分析师、算法工程师等有所帮助,让他们更快地熟悉和掌握数据的加工处理知识与技巧,从而能够更好、更快地分析、挖掘和应用数据,让数据产生更多、更大的价值。
通过阅读本书,读者能建立自己的大数据开发知识体系和图谱,掌握数据开发的各种技术(包括有关概念、原理、架构以及实际的开发和优化技巧等),并能对实际项目中的数据开发提供指导和参考。
大数据技术日新月异,由于篇幅和时间限制,书中仅讲述了当前主要和主流的数据相关技术,如果读者对大数据开发有兴趣,本书将是首选的入门读物。
本书特色本书从实际项目实践出发,专注、完整、系统化地讲述数据开发技术,此处的数据开发技术包括离线数据处理技术、实时数据处理技术、数据开发优化、大数据建模、数据分层体系建设等。
我们处于一个信息过度的时代,互联网涵盖了人类有史以来的所有知识,浩如烟海。对大数据开发技术来说,更是如此。那么,大数据相关人员如何吸收、消化、应用和扩展自己的技术知识?如何把握相关的大数据技术深度和广度?深入到何种程度?涉猎到何种范围?这是很有意思的问题。笔者认为最重要的是找到锚点,而本书的锚点就是数据开发技术。所以本书的另一个特点是以数据开发实战作为锚点,来组织、介绍各种数据开发技术,包括各种数据处理技术的深度和广度把握等。比如在离线数据处理中,目前事实的处理标准是Hive,实际项目中开发者已经很少自己写Hadoop MapReduce程序来进行大数据处理,那是不是说MapRedue和HDFS就不需要掌握了呢?如果不是,又需要掌握到何种程度呢?笔者的答案是,对于Hive要精深掌握,包括其开发技巧和优化技巧等。MapReduce要掌握执行原理和过程,而MapRedue和HDFS具体的读数据流程、写数据流程、错误处理、调度处理、I/O操作、各种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邮箱:[email protected]希望与大家共同交流、学习,共同促进数据技术和数据行业的发展,让数据发挥更大的价值。
致谢首先非常感谢Apache基金会,在笔者撰写各个开源技术框架相关内容的过程中,Apache官方文档提供了最全面、最深入、最准确的参考材料。
感谢互联网上无名的众多技术博客、文章撰写者,对于数据技术和生态的繁荣,我们所有人都是不可或缺的一分子。
感谢阿里巴巴公司智能服务事业部数据技术团队的全部同事,尤其薛奎、默岭、萧克、延春、钟雷、建帧、思民、宇轩、赛侠、紫豪、松坡、贾栩、丘少、茅客等,与他们的日常交流让我受益颇多。
感谢机械工业出版社华章策划编辑高婧雅,从选题到定稿再到本书的出版,她提供了非常专业的指导和帮助。
特别致谢特别感谢我的妻子李灿萍和我们的女儿六一,你们永远是我的力量源泉。
同时感谢我的父母和岳父岳母,有了你们的诸多照顾和支持,我才有时间和精力去完成额外的写作。
谨以此书献给我的家人,以及直接或间接让数据发挥价值的所有朋友们!
朱松岭(邦中)
目录
目  录?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 开启大数据时代的Hadoop 38
3.2 HDFS和MapReduce优缺点分析 40
3.2.1 HDFS 41
3.2.2 MapReduce 42
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 离线大数据处理的主要技术:Hive 53
4.1.1 Hive出现背景 53
4.1.2 Hive基本架构 55
4.2 Hive SQL 56
4.2.1 Hive 关键概念 57
4.2.2 Hive 数据库 59
4.2.3 Hive 表DDL 60
4.2.4 Hive表DML 63
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:转化为mapjoin 83
5.5.3 方案2:join时用case when语句 84
5.5.4 方案3:倍数B表,再取模join 84
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 语句生成spout 134
8.2.2 语句分割bolt 135
8.2.3 单词计数bolt 136
8.2.4 上报bolt 136
8.2.5 单词计数topology 137
8.2.6 单词计数并发配置 139
8.3 Storm高级原语Trident 142
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 Streaming 158
9.2.1 Spark Streaming基本原理 159
9.2.2 Spark Streaming核心API 159
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 流计算技术新贵:Flink 167
10.1.1 Flink技术栈 168
10.1.2 Flink关键概念和基本原理 169
10.2 Flink API 172
10.2.1 API概览 172
10.2.2 DataStream API 173
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 意图一统流计算的Beam 190
11.1.1 Beam的产生背景 190
11.1.2 Beam技术 191
11.2 Beam技术核心:Beam Model 193
11.3 Beam SDK 196
11.3.1 关键概念 196
11.3.2 Beam SDK 197
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 SQL 209
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 DML 211
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
短评

本书可能是第一本从实际项目实践出发,专注、完整、系统化地讲述数据开发技术的书籍,此处的数据开发技术包含:离线数据处理技术、实时数据处理技术、数据开发优化、大数据建模、数据分层体系建设等。

2018-06-01

标签
数据开发,大数据,维度建模,流计算,数据仓库,实时大数据
产品特色