前言

为什么写这本书

给这本书写前言,让我想起了两年前给《深入理解Spark:核心思想与源码分析》一书写前言的经历。这让我不禁想起崔护的《题都城南庄》,诗的内容是:

去年今日此门中,人面桃花相映红。

人面不知何处去,桃花依旧笑春风。

Spark从核心思想和架构来看,它依然是那个Spark,但是我已经找了一个新的东家。我的年龄不知不觉中又长了两岁,Spark也在大数据领域从 “新贵”变成了“老人”。Spark的版本从0.X.X到2.X.X所用的时间和我的两年基本相同。

自从《深入理解Spark:核心思想与源码分析》一书出版后,收到了一些市场的反响,更难得的是得到了很多读者的反馈。一些热心的读者通过微信或者邮件向我指出了很多书中内容的不足之处,包括错别字、错误的描述、代码分析有点像流水账、提纲挈领的内容偏少、代码版本过低等。一些错误在修订的版本中得到了解决,有些修正的内容则单独写博客来补充。在与读者的沟通过程中,也纠正了我对于一些问题的理解偏差。再次深深的感谢广大读者的支持与帮助!

一些读者对《深入理解Spark:核心思想与源码分析》一书的内容非常肯定,希望能够出第二版,高婧雅编辑也一再“怂恿”我,但是我一直没有写第二版的打算。我当时希望有人能够以更好的方式写一本介绍和分析2.0版本的源码分析书籍,因为我感觉之前的写作方式的确不是很好。在我心中一直有个矛盾——如果源码太少,源码分析的书籍将退化成讲原理的,对于想深入理解实现的读者来说这是不够的。如果源码太多,让人又有堆砌代码或者混篇幅的感觉。很多源码分析的书只简单说说接口或者方法的功能,让人始终有种“雾里看花”的感觉。所以我一直很期待能有更好的方式来写作源码分析类型的书。

在一年多的等待中,我始终没有发现类似书籍的出现,于是我打算再做一次尝试。本书这次摈弃了《深入理解Spark:核心思想与源码分析》一书按照代码执行流程分析的方式,改为先从整体上介绍一个系统,然后逐个分析每个组件的功能,最后将这些组件之间的关系用流程图的方式串联起来的方式。本书的写作方式依然犯有代码过多的“毛病”,但我还是期待本书能带来一些新的气象。

本书的主要特色

l   按照源码分析的习惯设计,从脚本分析到初始化再到核心内容。整个过程遵循由浅入深的基本思路。

l   每一章先对本章的内容有个总体的介绍,然后深入分析各个组件的实现原理,最后将各个组件之间的关系通过执行流程来展现。

l   本书尽可能的用图来展示原理,加速读者对内容的掌握。

l   本书讲解的很多实现及原理都值得借鉴,能帮助读者提升架构设计、程序设计等方面的能力。

l   本书尽可能保留较多的源码,以便于初学者能够在脱离办公环境的地方(如地铁、公交),也能轻松阅读。

本书面向的读者

源码阅读是一项苦差事,人力和时间成本都很高,尤其对于刚刚接触Spark的人来说。本书尽可能保留源码,使得分析过程不至于产生跳跃感,目的是降低大多数人的学习门槛。如果你是从事IT工作1~3年的新人或者希望开始学习Spark核心知识的人来说,本书非常适合你。如果你已经对Spark有所了解或者已经使用它,还想进一步提高自己,那么本书更适合你。如果你是一个开发新手,对Java、Linux等基础知识不是很了解的话,本书可能不太适合你。如果你已经对Spark有深入的研究,本书也许可以作为你的参考资料。

总体说来,本书适合以下人群:

l   已经了解过Spark,但还想深入理解Spark实现原理的人;

l   大数据技术爱好者;

l   对性能优化和部署方案感兴趣的运维工程师和架构师;

l   开源代码爱好者,喜欢研究源码的同学可以从本书学到一些阅读源码的方式方法。

本书不会教你如何开发Spark应用程序,只拿word count的经典例子做演示。本书会简单介绍Hadoop MapReduce、Hadoop YARN、Mesos、Alluxio(Tachyon)、ZooKeeper、HDFS、Akka、Jetty、Netty,但不会过多介绍这些框架的使用,因为市场上已经有丰富的书籍供读者挑选。本书也不会过多介绍Scala、Java、Shell的语法,读者可以在市场上选择适合自己的书籍阅读。本书将无比适合那些想要破解潘多拉魔盒的人!

如何阅读本书

本书一共有10章内容,主要包括以下部分:

准备部分(第1 ~ 2章):简单介绍了Spark的环境搭建和基本原理,帮助读者了解一些背景知识。

基础部分(第3 ~ 5章):介绍Spark的基础设施、SparkContext的初始化、Spark执行环境等内容。

核心部分(第6 ~ 9章):这部分是Spark最为核心的部分,包括存储体系、调度系统、计算引擎、部署模式等。

API部分(第10章):这部分主要对Spark的新老API进行对比,对新API进行介绍。

本书最后的附录中还包括一些内容:附录A介绍的Spark中最常用的工具类Utils;附录B是Akka的简介;附录C为Jetty的简介和工具类JettyUtils的介绍;附录D为Metrics库的简介和Metrics中部分API的介绍;附录E演示了Hadoop1.0版本中的word count例子;附录F 介绍了工具类CommandUtils的常用方法;附录G是关于Netty的简介和工具类NettyUtils的介绍;附录H是对Spark中的RPC工具类RpcUtils的介绍。

为了降低读者阅读理解Spark源码的门槛,本书尽可能保留源码实现。本书以Spark2.1.0版本为主,有兴趣的读者也可按照本书的方式,阅读Spark的最新源码。

勘误

本书内容很多,限于笔者水平有限,书中内容难免有错误之处。在本书出版的任何时间,如果你对本书有任何问题或者意见都可以通过邮箱beliefer@163.com或者博客http://blog.csdn.net/beliefer联系我,给我提交你的建议或者想法,我本人将怀着一颗谦卑之心与大家共同进步。

致谢

感谢我们生活在信息时代,让我们有机会接触互联网与大数据。感谢父母,多年来在学习、工作及生活上的帮助与支持;感谢妻子在生活中的照顾和谦让。

感谢高婧雅编辑给予本书出版的大力支持与帮助。

感谢我在大数据路上的领路人——和仲;感谢热心于技术的王欢在对本书内容提出的宝贵建议;感谢对本书内容进行审阅的余尧尧和马晓波;感谢对本书内容有过帮助的读者朋友们。

关于《Spark内核设计的艺术 架构设计与实现》

经过近一年的准备,基于Spark2.1.0版本的《 Spark内核设计的艺术 架构设计与实现》一书现已出版发行,图书如图:

纸质版售卖链接如下:
京东: https://item.jd.com/12302500.html
电子版售卖链接如下:
京东: https://e.jd.com/30389208.html

Spark内核设计的艺术:架构设计与实现——前言相关推荐

  1. .NET Core实战项目之CMS 第九章 设计篇-白话架构设计

    前面两篇文章给大家介绍了我们实战的CMS系统的数据库设计,源码也已经上传到服务器上了.今天我们就好聊聊架构设计,在开始之前先给大家分享一下这几天我一直在听的<从零开始学架构>里面关于架构设 ...

  2. NET Core实战项目之CMS 第九章 设计篇-白话架构设计

    前面两篇文章给大家介绍了我们实战的CMS系统的数据库设计,源码也已经上传到服务器上了.今天我们就好聊聊架构设计,在开始之前先给大家分享一下这几天我一直在听的<从零开始学架构>里面关于架构设 ...

  3. 第九篇:稳定性之面向失败设计【可用性架构设计、可用性容灾】

    前言 在互联网系统中,每个系统都有服务的上线,所以当流量超过服务极限能力时,系统可能会出现卡死.崩溃的情况,那么就需要各种手段或者策略,来保证系统的稳定性.可用性,系统以牺牲部分请求或延迟处理,来提供 ...

  4. mysql性能调优与架构设计_了解架构设计远远不够!一文拆解 Tomcat 高并发原理与性能调优

    来源 | 码哥字节 上帝视角拆解 Tomcat 架构设计,在了解整个组件设计思路之后.我们需要下凡深入了解每个组件的细节实现.从远到近,架构给人以宏观思维,细节展现饱满的美.关注「码哥字节」获取更多硬 ...

  5. 服务器架构设计文档,架构设计文档

    很多同学问做架构设计,怎么才能写出比较好的文档.其实很简单,都是有套路的,今天刚好借这个机会,和大家分享下一般做架构设计该怎么写文档. 背景 首先介绍下项目背景.基于什么原因需要需求. 如果是新产品, ...

  6. 浅谈系统架构设计-从架构设计原理、架构设计原则、架构设计方法展开

    我们工作中一直强调要做架构设计.系分,最近前端同学在追求前端质量提升的时候,也在进行架构设计.前端系分的推广,那到底什么是架构设计和系分?该怎么做架构设计和系分?本文尝试对架构设计进行全面的介绍和分享 ...

  7. 系统架构设计——秒杀系统架构设计

    摘要 秒杀大家都不陌生.自2011年首次出现以来,无论是双十一购物还是 12306 抢票,秒杀场景已随处可见.简单来说,秒杀就是在同一时刻大量请求争抢购买同一商品并完成交易的过程.从架构视角来看,秒杀 ...

  8. 笔记-信息系统开发基础-架构设计-分布式应用的架构设计问题

    针对目前广泛使用的分布式应用,其软件架构设计需要考虑如下问题. (1)数据库的选择问题:目前主流的数据库系统是关系数据库. (2)用户界面选择问题:HTML/HTTP (S)协议是实现 Interne ...

  9. java应用架构设计_java应用架构设计

    第二章 模块化的两方面 模块化的两方面:运行时模型和开发模型. 2.1运行时模型:是关注如何在运行时对模块化的软件系统进行管理.在java平台中,模块化的系统事实标准是OSGI,很多应用应用平台借助O ...

  10. 支付系统整体设计:整体架构设计以及注意要点(三)

    一般来说,银行会提供两种支付途径:无跳转的快捷支付接口和带跳转的网银接口.前者在绑卡,支付的时候,不需要跳到银行页面上去处理,后者则需要在银行的网银页面上完成.显然前者对用户来说体验要好多了,用户流程 ...

最新文章

  1. 11年的计算机二级vf考试试题,2011年计算机等级考试二级VFP 辅助练习题及答案
  2. 从零开始PyTorch项目:YOLO v3目标检测实现
  3. freemarker的常用内建函数
  4. 10-Qt6 QStringView
  5. 缺省参数-缺省参数的注意事项
  6. JAVA构架之并发编程的一些总结
  7. linux 内核裁剪的具体过程和方法,Linux内核裁剪的具体过程和方法
  8. 自动摘要php,phpcms修改手动摘要255字符、自动摘要200字符及取消自动摘要
  9. TCP流式套接字的异步事件WSAAsyncSelect编程
  10. linux怎么看系统盘,Linux系统怎么查看电脑的磁盘空间?
  11. python面对对象实验_Python面向对象实现方法总结
  12. 【database】oracle触发器基础
  13. 设计师点评互联网巨头Logo
  14. iOS 开发者应该知道的 ARM 结构(转自apple4us)
  15. 基于javaweb+SpringBoot+JPA图书馆座位占座预约管理系统(管理员、老师、学生)
  16. 程序员 谨防猝死
  17. 【火车票】心蓝抢票软件
  18. JzxxOJ导图:第四题“求商数和余数”——C++解法
  19. Weir:原生 TiDB 支持的数据库中间件
  20. SSM+Java体育用品库存管理系统 毕业设计-附源码211712

热门文章

  1. matlab 匹配屏幕大小写,匹配正则表达式(不区分大小写)
  2. 关于pycharm提取
  3. 等额本息还款和等额本金还款计算公式的推导
  4. Grid Control 和 Database Control
  5. 红米4a android9.0,小米-红米4A/5A-通刷-LOS-Beta4.0-安卓9.0.0-来去电归属-农历等-本地化增强适配...
  6. 用函数求出平均分、最高分和最低分
  7. Mac之MySQL初始数据库密码问题
  8. 个人对东西方人开放的拙见。
  9. find vba 模糊_利用VBA代码实现多重查找、模糊查找、清除值的方案
  10. 【ES】1318- 这些 ES7-ES12 的知识点你都掌握了吗?