Deca学习之Spark深入

Deca学习之Spark深入

上星期因为生了场病几乎什么都没干,觉得甚是颓废。这次生病让我再次认识到一个道理:人在压力最大的时候,无论是身体方面的还是精神方面的压力,心理往往是最脆弱的时候。每次生病,我都会去想当我没病的时候是怎样一种舒服的感受,却怎么都想不起来。病好之后,又忘了这茬。似乎又验证了那个古老的道理:珍惜当下。

博客也差不多一星期没更新过了,鉴于最近一直在学习 Spark 相关的东西,本篇博客就来推荐推荐入手 Spark 比较好的资料吧(也就两个–!)。

首先还是给出 Spark 的介绍吧:

      Spark是UC Berkeley AMP Lab所开源的类HadoopMapReduce的通用并行框架,Spark,拥有Hadoop MapReduce 所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好
地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

      Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。

      Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。

      尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室
(Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。

——摘自百度百科


第一个推荐的是一本书,原作是英文版,叫做《Learning Spark: Lightning-Fast Big Data Analysis》,该书对应的购买链接是:http://shop.oreilly.com/product/0636920028512.do,属于O'REILLY系列,作者是  Holden Karau, Andy Konwinski, Patrick  Wendell, Matei Zaharia  。我个人读起来还行,感觉有些地方确实不容易懂,不过国内有家良心出版社将其翻译了出来并出版:人民邮电的图灵系列收录了这本书,中文书名为《Spark快速大数据分析》,购买链接就不给了。我是去年寒假在亚马逊上买的电子版(网上实在是没有免费的完整版),价格忘记了。(真心想学习这本书的可以联系我,我可以免费发给你中文版和英文版的PDF版)

      推荐这本书的原因主要有两个:

      1、这本书并不太涉及 Spark 原理性的东西,并不深入,更多的是介绍如何使用 Spark 对不同类型的大数据进行操作、处理和分析。该书由浅及深地引导读者去学习如何利用 Spark 核心以及 PairRDD 特有的 Transformation、Action,如何对数据进行 cache、save 和 load 等等,在书的最后还介绍了 Spark 如何用于机器学习(MLlib)、Spark SQL 和 Spark Streaming。书里的例子也都浅显易懂,容易接受和理解,至少我读完这本书终于弄清楚了 map、reduce、flatMap、partition 等等。通过我的介绍不难发现,这本书是偏应用性质的,关注的重点在于 Spark 实践。

      2、这本书的大部分代码都是“一例三码”,每个例子会给出 scala、python 和 java 三种语言的示例代码。对于大部分开发者而言,这三个语言中总会熟悉一个,因此不存在看不懂示例代码的问题。除此之外,这样的三语言示例代码,也可以帮助开发者用自己熟悉的语言去理解不熟悉甚至没了解过的语言,毕竟针对同一个示例,不同语言的代码其目地大致相同。例如,我在阅读过程中,就是利用 python 的示例代码去理解 scala 的示例代码(毕竟研究 Spark 的话 Scala 是必须掌握的),从而了解 Scala 的具体语法和用法等等。

      总而言之,这本书可以用来快速入门和了解 Spark,适合于原来没了解过 Spark 但想快速学习 Spark 并且能够立即应用 Spark 到实际应用中的人。通过学习这本书,真的可以实现“快速大数据分析”。


      第二个推荐的是一个类似于博客的文档资料,同时也是高老板推荐给我的,文章写的相当不错,个人感觉像个大牛写的。这个资料在 github 和 gitbook 上都有,github 的链接为:https://github.com/JerryLead/SparkInternals,gitbook的链接为:http://spark-internals.books.yourtion.com/markdown/1-Overview.html

      与我推荐的第一本书不同,这个资料对 Spark 的应用涉及的不多,而更偏向于解释 Spark 的运行机制,涉及的比较深入。在文章里,作者详细介绍了 Spark 中环境部署、Job 提交、Task 分发、Shuffle、节点通信等,较深入地探讨了 Spark 的核心机制。文章不仅会从整体上讨论 Spark 的几大核心问题,而且还会具体细化到某个中间过程对应的背后实现方法,例如,里面有一部分是介绍 Spark 中 Shuffle 过程的,首先,作者会概括性地说明 Spark 中 Shuffle 特点,还会与 Hadoop 进行对比,然后作者会对不同的 Transformation 对应的具体 Shuffle 过程进行详细说明,由概括到具体的说明方法可以让读者理解的更为牢固。更重要的是,文章里的插图个个经典(如下图所示),随便找一个出来,都可以看出来是作者精心制作以用来辅助说明的。

      总而言之,这本书可以用来帮助自己对 Spark 的核心问题和实现方法有一个详细的了解,适合于想要在 Spark 系统优化方面做文章或者想要深入学习和研究 Spark 的人。


      本文会持续更新,博主一旦发现其他较好的与 Spark 相关的资料一定会及时更新。博主现在正在找寻 Spark 源码阅读相关的而且讲的比较好的文章,以帮助自己阅读下 Spark 的源码,如有读者知道,欢迎留言告知,将不胜感谢。

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注