请选择 进入手机版 | 继续访问电脑版
  • 提示:管理员还未添加网站公告/此处公告受影响无法显示!
 找回密码
 立即注册
查看: 1706|回复: 0

《Apache Spark源码剖析》

[复制链接]
  • TA的每日心情
    开心
    2020-10-2 10:41
  • 签到天数: 4 天

    [LV.2]转正

    4763

    主题

    4767

    帖子

    1万

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    16452
     楼主| 发表于 2019-8-9 15:09:10 | 显示全部楼层 |阅读模式
    电子书
    封皮:
    百度网盘下载地址链接(百度云): 链接:https://pan.baidu.com/s/1Bedwab-ff0RBrArWTDjerA
    提取码:ow71
    【基本信息】: Apache Spark源码剖析
    作者: 许鹏
    出版社: 电子工业出版社
    出版年: 2015-3
    页数: 304
    定价: 68.00元
    装帧: 平装
    ISBN: 9787121254208
    所属分类:图书>计算机/网络>程序设计>其他
    【作者简介】: 许鹏,长期致力于电信领域和互联网的软件研发,在数据处理方面积累了大量经验,对系统的可扩展性、可靠性方面进行过深入学习和研究。因此,累积了大量的源码阅读和分析的技巧与方法。目前在杭州同盾科技担任大数据平台架构师一职。对于Linux内核,作者也曾进行过深入的分析。
    【内容简介】:  《Apache Spark源码剖析》以Spark 1.02版本源码为切入点,着力于探寻Spark所要解决的主要问题及其解决办法,通过一系列精心设计的小实验来分析每一步背后的处理逻辑。
      《Apache Spark源码剖析》第3~5章详细介绍了Spark Core中作业的提交与执行,对容错处理也进行了详细分析,有助读者深刻把握Spark实现机理。第6~9章对Spark Lib库进行了初步的探索。在对源码有了一定的分析之后,读者可尽快掌握Spark技术。
    【编辑推荐】: 适读人群 :本书对于Spark应用开发人员及Spark集群管理人员都有极好的学习价值;对于那些想从源码学习而又不知如何入手的读者,也不失为一种借鉴。
      Spark Contributor,Databricks工程师连城,华为大数据平台开发部部长陈亮,网易杭州研究院副院长汪源,TalkingData首席数据科学家张夏天联袂力荐
      1.《Apache Spark源码剖析》全面、系统地介绍了Spark源码,深入浅出,细致入微
      2.提供给读者一系列分析源码的实用技巧,并给出一个合理的阅读顺序
      3.始终抓住资源分配、消息传递、容错处理等基本问题,抽丝拨茧
      4.一步步寻找答案,所有问题迎刃而解,使读者知其然更知其所以然
    【目录】: 第一部分 Spark概述
    第1章 初识Spark
    1.1 大数据和Spark
    1.1.1 大数据的由来
    1.1.2 大数据的分析
    1.1.3 Hadoop
    1.1.4 Spark简介
    1.2 与Spark的第一次亲密接触
    1.2.1 环境准备
    1.2.2 下载安装Spark
    1.2.3 Spark下的WordCount

    第二部分 Spark核心概念
    第2章 Spark整体框架
    2.1 编程模型
    2.1.1 RDD
    2.1.2 Operation
    2.2 运行框架
    2.2.1 作业提交
    2.2.2 集群的节点构成
    2.2.3 容错处理
    2.2.4 为什么是Scala
    2.3 源码阅读环境准备
    2.3.1 源码下载及编译
    2.3.2 源码目录结构
    2.3.3 源码阅读工具
    2.3.4 本章小结
    第3章 SparkContext初始化
    3.1 spark-shell
    3.2 SparkContext的初始化综述
    3.3 Spark Repl综述
    3.3.1 Scala Repl执行过程
    3.3.2 Spark Repl
    第4章 Spark作业提交
    4.1 作业提交
    4.2 作业执行
    4.2.1 依赖性分析及Stage划分
    4.2.2 Actor Model和Akka
    4.2.3 任务的创建和分发
    4.2.4 任务执行
    4.2.5 Checkpoint和Cache
    4.2.6 WebUI和Metrics
    4.3 存储机制
    4.3.1 Shuffle结果的写入和读取
    4.3.2 Memory Store
    4.3.3 存储子模块启动过程分析
    4.3.4 数据写入过程分析
    4.3.5 数据读取过程分析
    4.3.6 TachyonStore
    第5章 部署方式分析
    5.1 部署模型
    5.2 单机模式local
    5.3 伪集群部署local-cluster
    5.4 原生集群Standalone Cluster
    5.4.1 启动Master
    5.4.2 启动Worker
    5.4.3 运行spark-shell
    5.4.4 容错性分析
    5.5 Spark On YARN
    5.5.1 YARN的编程模型
    5.5.2 YARN中的作业提交
    5.5.3 Spark On YARN实现详解
    5.5.4 SparkPi on YARN

    第三部分 Spark Lib
    第6章 Spark Streaming
    6.1 Spark Streaming整体架构
    6.1.1 DStream
    6.1.2 编程接口
    6.1.3 Streaming WordCount
    6.2 Spark Streaming执行过程
    6.2.1 StreamingContext初始化过程
    6.2.2 数据接收
    6.2.3 数据处理
    6.2.4 BlockRDD
    6.3 窗口操作
    6.4 容错性分析
    6.5 Spark Streaming vs. Storm
    6.5.1 Storm简介
    6.5.2 Storm和Spark Streaming对比
    6.6 应用举例
    6.6.1 搭建Kafka Cluster
    6.6.2 KafkaWordCount
    第7章 SQL
    7.1 SQL语句的通用执行过程分析
    7.2 SQL On Spark的实现分析
    7.2.1 SqlParser
    7.2.2 Analyzer
    7.2.3 Optimizer
    7.2.4 SparkPlan
    7.3 Parquet 文件和JSON数据集
    7.4 Hive简介
    7.4.1 Hive 架构
    7.4.2 HiveQL On MapReduce执行过程分析
    7.5 HiveQL On Spark详解
    7.5.1 Hive On Spark环境搭建
    7.5.2 编译支持Hadoop 2.x的Spark
    7.5.3 运行Hive On Spark测试用例
    第8章 GraphX
    8.1 GraphX简介
    8.1.1 主要特点
    8.1.2 版本演化
    8.1.3 应用场景
    8.2 分布式图计算处理技术介绍
    8.2.1 属性图
    8.2.2 图数据的存储与分割
    8.3 Pregel计算模型
    8.3.1 BSP
    8.3.2 像顶点一样思考
    8.4 GraphX图计算框架实现分析
    8.4.1 基本概念
    8.4.2 图的加载与构建
    8.4.3 图数据存储与分割
    8.4.4 操作接口
    8.4.5 Pregel在GraphX中的源码实现
    8.5 PageRank
    8.5.1 什么是PageRank
    8.5.2 PageRank核心思想
    第9章 MLLib
    9.1 线性回归
    9.1.1 数据和估计
    9.1.2 线性回归参数求解方法
    9.1.3 正则化
    9.2 线性回归的代码实现
    9.2.1 简单示例
    9.2.2 入口函数train
    9.2.3 最优化算法optimizer
    9.2.4 权重更新update
    9.2.5 结果预测predict
    9.3 分类算法
    9.3.1 逻辑回归
    9.3.2 支持向量机
    9.4 拟牛顿法
    9.4.1 数学原理
    9.4.2 代码实现
    9.5 MLLib与其他应用模块间的整合

    第四部分 附录
    附录A Spark源码调试
    附录B 源码阅读技巧
    【前言/序言】: 笔者接触Spark时间不算很长,而本书之所以能够出版,凭借的是浓厚的兴趣和执着之心。
      这一切还要从Storm说起。笔者一直在做互联网相关工作,但接触大数据的时间并不长,当时Hadoop和Storm等非常红火,引起了笔者的“窥视”之心。从2013年开始,笔者打算看看Hadoop的源码实现,观察其代码规模,发觉所花时间可能会很长。恰好其时Storm风头正劲,于是转向Storm源码,0.8版的Storm代码规模不过20 000行左右,感觉还是比较好入手的。
      Storm源码分析期间,笔者还学习了Clojure、ZeroMQ、Thrift、ZooKeeper、LMAX Disruptor等新技术,对于实时流数据处理算是有了一个大概的了解。由于听说在实时流数据处理领域Spark技术也很强悍,而且在容错性方面具有天生的优势,更引发了笔者的兴趣,为了弄清楚究竟,于是开始了Spark的源码走读过程。
      笔者是以读Spark论文开始的,说老实话觉得晦涩难懂,因为无法将其映射到内存使用、进
      程启动、线程运行、消息传递等基本问题上。或许换个方法会更好,故笔者选择直接从源码入手,如此一来事情反而变简单了。在源码分析的过程中,笔者始终抓住资源分配、消息传递、容错处理等基本问题设问,然后一步步努力寻找答案,所有的问题渐渐迎刃而解。
      笔者关于源码分析有一个心得,就是要紧紧把握住计算的基本模型,然后结合新分析问题
      的业务领域,将业务上的新问题转换到计算处理的老套路上来,然后就可以以不变应万变,而不被一些新技术名词晃花了眼。这里所说的老套路是指从操作系统的角度来看,如果能事先深度了解操作系统,将对分析一些新应用程序大有裨益。
      Spark源码采用Scala语言编写,那么阅读Spark源码之前,是否一定要先学Scala呢?笔者个人以为不必,只要你有一些Java或C++编程语言的基础,就可以开始看Spark源码,遇到不懂的地方再去学习,效率反而会大大提高,做到有的放矢。将学习中遇到的知识点,从函数式编程、泛型编程、面向对象、并行编程等几个方面去整理归纳,这样能够快速将Scala语言的框架勾勒出来。
      本书第1章和第2章简要介绍了大数据分析技术的产生背景和演进过程;第3~5章详细分析了Spark Core中的作业规划、提交及任务执行等内容,对于要深刻把握Spark实现机理的读者来说,这几章值得反复阅读;第6~9章就Spark提供的高级Lib库进行了简要的分析,分析的思路是解决的主要问题是什么、解决的方案是如何产生的,以及方案是如何通过代码来具体实现的。
      在对源码有了一定的分析和掌握之后,再回过头来看一下Spark相关的论文,这时候对论文的理解可能会更顺畅。
      Spark的整体框架非常庞大,涵盖的范围也很广,随着笔者在工作中使用得越来越具体,这样的感受也越来越深。另外,必须要说对于Spark来说,笔者所做的分析实在有限,个中错误在所难免,读者诸君还请多多谅解。
      在本书成稿期间,电子工业出版社的付睿编辑和李云静编辑给出了极为详细的改进意见,在这里表示衷心的感谢。最后感谢家人的支持和鼓励,亲爱的老婆和懂事的儿子给了笔者坚持的理由和勇气。
      许 鹏
      2015年2月
    【精彩书摘】: -

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表