现在各大网站销售中!

京东:http://item.jd.com/11770787.html

当当:http://product.dangdang.com/23776595.html

亚马逊:http://www.amazon.cn/SparkInternals

前言和目录附上,以便有需要了解的同学:

诞生于2005年的Hadoop解决了大数据的存储和计算问题,已经成为大数据处理的事实标准。但是,随着数据规模的爆炸式增长和计算场景的丰富细化,使得Hadoop越来越难以满足用户的需求。针对不同的计算场景,开源社区和各大互联网公司也推出了各种大数据分析的平台,旨在满足特定应用场景下的计算需求。但是,众多的平台使得用户不得不为平台开发类似的策略,增加了运维开发成本。

2009年诞生于AMPLab的Spark,设计的目标就是为大数据的多种计算场景提供一个通用的计算引擎,同时解决大数据处理的4V,即Volume(海量)、Velocity(快速)、Variety(多样)、Value(价值)。如Spark的核心作者之一的Ion Stoica所说,“The goal is to build a newgeneration of data analytics software, to be used across academia and industry。 Hadoop之父Doug Cutting也说过,MapReduce引擎将被Spark替代:“Use of MapReduce engine for BigData projects will decline, replaced by Apache Spark”。可以说,Spark自诞生之日起就得到了广泛的关注,也是近年来开源社区最活跃的项目之一。Spark的1.X的每次发布,都包含了数百位贡献者的上千次提交。最新的版本是发布于2015年6月11日的1.4.0,是迄今为止Spark最大的一次版本发布,涵盖了210位开发者的贡献。

Spark得到了众多大数据公司的支持,这些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal和星环科技;Spark也被包括百度、阿里、腾讯、京东、携程、优酷土豆等互联网公司应用到了多种不同的计算场景中,并且在实际的生产环境中获得了很多收益。当前百度的Spark已应用于凤巢、大搜索、直达号、百度大数据等业务;淘宝利用GraphX构建了大规模的图计算和图挖掘系统,实现了很多生产系统的推荐算法;腾讯Spark集群达到8000台的规模,是当前已知的世界上最大的Spark集群。

但是,当前并没有一本系统介绍Spark内核实现原理的书,而Spark内核是Spark SQL、Spark Streaming、MLlib、GraphX等多个模块的基础,这些模块最终的计算执行都是由内核模块完成的。为了在应用开发中做到游刃有余,在性能调优时做到有的放矢,需要了解内核模块的实现原理。笔者从Spark 发布版本0.8.1时开始关注Spark,深入学习内核模块的架构实现原理。Spark在1.0发布后,内核模块趋于稳定,虽然内核模块依旧会有不断的改进和完善,但是整体的设计思想和实现方法是不会变的,因此笔者决定为Spark社区的用户和关注者写一本书,详细介绍Spark内核模块的实现原理。最终,笔者基于Spark 1.2.0版本完成本书。

写作是一件严肃的事情,同样是一份苦差事,尤其是在工作比较忙的时候。本书在半年前就完成了基本的框架,本着认真负责的态度,对本书进行了多次的修改和完善。笔者认为,对一本架构分析的书,一个最基本的要求就是基于源码如实描述系统的实现,能做到这一点就是一本及格的书;如果能做到能够分析这个架构的好坏,指出架构改进的方案,那么无疑这就是一本质量比较好的书;如果能高屋建瓴的进行再次的抽象,指出类似架构不同实现的优劣,抽象出一些理论,那么这就是一本质量上乘、可以当做教科书的书。希望这本书至少是一本及格的书,能基于源码如实描述系统的实现,对那些希望深入学习Spark架构实现的同仁有所帮助。

目标读者:

本书适合大数据领域的架构师、运维人员阅读,也适合作为研究生和高年级的本科生作为大数据领域分布式架构具体实现原理的参考资料,尤其推荐Spark领域的从业人员能够根据本书了解Spark的实现原理。

致谢:

本书在写作的过程中,得到了很多朋友的帮助和支持。感谢七牛云的技术总监陈超先生、蘑菇街的资深架构师刘旭晖先生、百度公司的高级架构师柴华先生、Databricks软件工程师连城先生在百忙之中为本书审稿,并提出了很多宝贵的修改意见。尤其感谢星环科技的创始人兼CTO孙元浩先生对本书的完成给予了很多的支持,还在百忙之中为本书作序。感谢华为诺亚方舟实验室的董振华博士,在Spark上做机器学习方面给了我很多的指导。

感谢百度上海研发中心网页搜索部的同事们。在一年多的工作中,笔者得到了很多同事的指导、支持和帮助,尤其感谢曲晶莹,吴永巍,汪韬,葛俊,刘桐仁,段雪涛,周波涛,汪亮,马鑫云,李战平,杨大毛,朱晓阳,赵鹏程等。

感谢机械工业出版社的姚蕾女生不但积极策划和推动本书的出版,还能容忍我蜗牛般的写作速度;非常感谢在这一年多的时间中给予的理解与支持。感谢机械工业出版社的李艺女士为本书做了非常辛苦和专业的编辑工作。

感谢我的家人一直以来对我的支持和宽容,感谢父亲母亲和三个姐姐,你们是我漫漫求学路的最强大支柱和后盾;感谢我的妻子王珊珊,不但在家庭方面付出很多,也为本书的顺利出版做出了很重要的贡献;感谢我的女儿,每次你对爸爸的微笑都是爸爸消除疲惫的良药。

联系方式:

由于本书的写作都是在业余时间完成,加上笔者本身水平有限,因此错误在所难免,敬请读者谅解。如果有任何问题,可以通过下列方式进行交流沟通:

Spark架构实现原理交流QQ群:473842835

Spark用户使用交流QQ群:473853269

或者与作者取得联系:

邮箱:anzhsoft@gmail.com

新浪微博:@anzhsoft

个人博客:http://blog.csdn.net/anzhsoft

本书内容概述:

第1章     Spark简介:介绍Spark的技术背景和特点,并且就架构给出整体的概述;简单的介绍Spark的生态圈。

第2章     Spark学习环境的搭建:介绍Spark源码如何获取和学习环境如何搭建。

第3章     RDD实现详解:RDD的详细介绍,介绍了RDD的定义和Spark对于DAG(Directed Acyclic Graph,有向无环图)的实现,最后通过RDD计算的详细介绍,详细讲解了Spark对于计算的实现原理。

第4章     Scheduler模块详解:详细介绍任务调度的实现,包括如何通过DAG来生成计算任务的,最后会通过“Word Count”来加深这个实现过程的理解。

第5章     Deploy模块详解:介绍Spark的运行模式,尤其是Standalone模式。Standalone作为Spark自身实现的资源管理和调度的模块,本章会详细介绍它的实现原理。

第6章     Executor模块详解:Executor是最终执行计算任务的单元,本章会详细介绍Executor的实现原理,包括Executor的分配,Task在Executor的详细执行过程。

第7章     Shuffle模块详解:详细介绍Spark对于Shuffle的实现原理,包括基于Hash和基于排序的。除了详细基于Hash和排序的Shuffle写和Shuffle读之外,还介绍了Shuffle Pluggable的框架,为需要实现特定Shuffle逻辑的读者介绍其实现原理。

第8章     Storage模块详解:详细介绍Spark的存储模块,在详解介绍了模块的详细架构后详解解析了不同存储级别的实现细节。

第9章     企业应用概述:介绍了Spark在百度,腾讯和阿里等国内互联网领域的应用现状。

我的第一本著作:Spark技术内幕上市!的更多相关文章

  1. Spark技术内幕:Stage划分及提交源码分析

    http://blog.csdn.net/anzhsoft/article/details/39859463 当触发一个RDD的action后,以count为例,调用关系如下: org.apache. ...

  2. Spark技术内幕: Task向Executor提交的源码解析

    在上文<Spark技术内幕:Stage划分及提交源码分析>中,我们分析了Stage的生成和提交.但是Stage的提交,只是DAGScheduler完成了对DAG的划分,生成了一个计算拓扑, ...

  3. Spark技术内幕:Master的故障恢复

    Spark技术内幕:Master基于ZooKeeper的High Availability(HA)源码实现  详细阐述了使用ZK实现的Master的HA,那么Master是如何快速故障恢复的呢? 处于 ...

  4. Spark技术内幕: Task向Executor提交的源代码解析

    在上文<Spark技术内幕:Stage划分及提交源代码分析>中,我们分析了Stage的生成和提交.可是Stage的提交,仅仅是DAGScheduler完毕了对DAG的划分,生成了一个计算拓 ...

  5. Spark技术内幕:Client,Master和Worker 通信源码解析

    http://blog.csdn.net/anzhsoft/article/details/30802603 Spark的Cluster Manager可以有几种部署模式: Standlone Mes ...

  6. Spark技术内幕:Client,Master和Worker 通信源代码解析

    Spark的Cluster Manager能够有几种部署模式: Standlone Mesos YARN EC2 Local 在向集群提交计算任务后,系统的运算模型就是Driver Program定义 ...

  7. Spark技术内幕:Stage划分及提交源代码分析

    当触发一个RDD的action后.以count为例,调用关系例如以下: org.apache.spark.rdd.RDD#count org.apache.spark.SparkContext#run ...

  8. Spark技术内幕:Storage 模块整体架构

    Storage模块负责了Spark计算过程中所有的存储,包括基于Disk的和基于Memory的.用户在实际编程中,面对的是RDD,可以将RDD的数据通过调用org.apache.spark.rdd.R ...

  9. Spark技术内幕:Shuffle的性能调优

    通过上面的架构和源码实现的分析,不难得出Shuffle是Spark Core比较复杂的模块的结论.它也是非常影响性能的操作之一.因此,在这里整理了会影响Shuffle性能的各项配置.尽管大部分的配置项 ...

随机推荐

  1. 浮动和BFC的学习整理转述

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 文档流的概念:html中block块元素默认是单独占据一行的,从上到下排列,也就是我们说的文档流; 脱离文 ...

  2. Flume报 Space for commit to queue couldn't be acquired. Sinks are likely not keeping up with sources, or the buffer size is too tight

    报这个错误 需要一个是flume堆内存不够.还有一个就是把channel的容器调大 在channel加配置 type - 组件类型名称必须是memory capacity 100 存储在 Channe ...

  3. SQL基础-----DML语句

    之前已经介绍过SQL基础之DDL(数据库定义语言)语句,http://www.cnblogs.com/cxq0017/p/6433938.html(这是地址) 这篇文章主要介绍DML语句(数据库操纵语 ...

  4. Spting +Spring MVC+spring date jsp +hibernate+jq

    controller 控制页面跳转 处理前台后台数据交互 访问servicedao层:@Repository 数据库访问层 增删改查 jpa规范了hibernate jap仓库 jpa自动解析 方法名 ...

  5. Zookeeper增删改查

    1.下载Zookeeper http://mirrors.shu.edu.cn/apache/zookeeper/ 这里我选择Zookeeper 3.4.11版本 ZooKeeper 支持某些特定的四 ...

  6. Java进阶篇(一)——接口、继承与多态

    前几篇是Java的入门篇,主要是了解一下Java语言的相关知识,从本篇开始是Java的进阶篇,这部分内容可以帮助大家用Java开发一些小型应用程序,或者一些小游戏等等. 本篇的主题是接口.继承与多态, ...

  7. 解决:GitHub 远程端添加了 README.md 文件后,本地 push 代码时出现错误

    一.错误描述 To github.com:compassblog/PythonExercise.git ! [rejected] master -> master (fetch first) e ...

  8. BAT 前端开发面试 —— 吐血总结

    更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了腾讯和阿里的内推及百度的实习生招聘,在此总结一下 一是备忘.总结提升,二是希望给大家一些参考 其他面试及基础相关可以参考其他博文: ...

  9. 用js来实现那些数据结构09(集合01-集合的实现)

    说到集合,第一个想到的就是中学学到的那个数学概念:集合.在我们开始集合相关的js实现前,我们有必要来了解一下什么是集合以及集合的数学概念. 好吧,我们一起来复习一下早就被我们遗忘的集合. 集合是由一组 ...

  10. [SDOI 2016]征途

    Description 题库链接 将一个长度为 \(n\) 的正整数序列分为 \(m\) 段,问你这 \(m\) 段最小的方差 \(v\) 为多少.输出 \(v\times m^2\) . \(1\l ...