离线和实时大数据开发实战
上QQ阅读APP看书,第一时间看更新

为什么要写这本书

念念不忘,终有回响。

撰写一本数据开发相关书的念头始于笔者学习数据知识的早期,当时笔者遍寻市面上所有的数据书籍,却没有发现一本系统化且从项目实践角度突出重点的数据开发书籍。

笔者非常理解某领域初学者的苦衷,对于他们来说,最重要的不是具体的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

❏ 邮箱:493736841@qq.com

希望与大家共同交流、学习,共同促进数据技术和数据行业的发展,让数据发挥更大的价值。

致谢

首先非常感谢Apache基金会,在笔者撰写各个开源技术框架相关内容的过程中,Apache官方文档提供了最全面、最深入、最准确的参考材料。

感谢互联网上无名的众多技术博客、文章撰写者,对于数据技术和生态的繁荣,我们所有人都是不可或缺的一分子。

感谢阿里巴巴公司智能服务事业部数据技术团队的全部同事,尤其薛奎、默岭、萧克、延春、钟雷、建帧、思民、宇轩、赛侠、紫豪、松坡、贾栩、丘少、茅客等,与他们的日常交流让我受益颇多。

感谢机械工业出版社华章策划编辑高婧雅,从选题到定稿再到本书的出版,她提供了非常专业的指导和帮助。

特别致谢

特别感谢我的妻子李灿萍和我们的女儿六一,你们永远是我的力量源泉。

同时感谢我的父母和岳父岳母,有了你们的诸多照顾和支持,我才有时间和精力去完成额外的写作。

谨以此书献给我的家人,以及直接或间接让数据发挥价值的所有朋友们!

朱松岭(邦中)