有什么关于 Spark 的书推荐?

关注者
2,372
被浏览
608,128

44 个回答

注意!注意!推荐今年年初出版的一本书,作者都是Spark的主要贡献者:

Learning Spark: Lightning-Fast Big Data Analysis

amazon.com/Learning-Spa

这本书有这样几个特点:

  • 可操作性强:安装好Spark后,就可以直接照着书中的例子进行实际操作,Learning by doing,比直接看Spark的论文来得要简单爽快。类似于初学Linux也不一定得先把操作系统原理学得彻彻底底了才开始动手;带着问题边干边学不断深入才会效率高。
  • 实例充实:提供了Scala、Python、Java三种接口的操作代码,提供了诸如PageRank算法的实现,并在在How to的基础上加入了大量Why to的讨论,讨论如何在Spark分布式环境下实现更高效的计算,如何减少网络开销。github上也有作者提供的配套代码:databricks/learning-spark · GitHub
  • 文字扼要:比官方文档(Spark Programming Guide)更深入地介绍代码作用原理,同时也不像普通外文教材一样废话连篇。例如这一句:“为分布式数据集选择正确的分区策略的重要性类似于为本地数据选择正确的数据结构。”让人思考良久。

翻译了其中我认为最重要的第四章,放在了这里,大家可以看一看:

CHAPTER 4: Working with Key/ValuePairs

百度云:OReilly.Learning.Spark.2015.1-CN-13-Chapter4.pdf_免费高速下载




截图1:

截图2:






=======下面是我的一些理解=========

Spark在尝试把函数式语言的模型,应用在了分布式的环境中。


我一直认为函数式语言是为了分布式/多核环境而生的,而且其设计历史之久远足以看出设计者的远见(额,这个远见可能只是巧合,还好我们除了图灵机外还有lambda演算)。我在大三时修习乔海燕老师的“函数式编程”这门课时,发现函数式语言很多特点在单机/单核上是浪费时间和浪费空间的操作,例如无副作用、不可变(immutable),我尤其不太理解为什么一个容器(例如List),改变其中一个元素,就需要生成一个新的不可变容器,这在命令式语言(例如C)的思路里是多么的浪费空间和时间。不过,不可变和无副作用却也带来了另外的好处:1)不可变:节约了多核和多线程访问临界区的锁资源;2)无副作用:节约了重复计算相同参数函数的资源。并且这种好处在硬件越来越廉价,更加趋向分布式/多核的环境中越发彰显优势。


Lisp和C语言是编程模型中的两座高山,其他语言都在这两座高山之间权衡折衷。



语言设计,这是计算机科学中最有美感和纯度的分支。另外感觉很热门的数据科学(数据挖掘/机器学习)只是统计学在计算机里面的实现,是个数学工程,或者是仿生学工程,它们也具有美感,却不够简单缺少纯度。


Hadoop MapReduce只是函数式语言到分布式环境跨出的第一步。然而函数式语言包含了许多基础的先驱函数(Prelude Function),除了Map、Reduce,还有Filter、Fold、Sort、GroupBy、Join。而Spark就是函数式语言到分布式环境跨出的第二步,在分布式环境中实现并优化了这些函数。




=========下面是一些琐碎的资料=============

函数式编程概念

可以参考问题“什么是函数式编程思维?”

1. 无副作用(no side effects)

2. 高阶函数(high-order function)

3. 闭包(closure)

4. 不可变(immutable)

5. 惰性计算(lazy evaluation)

6. 科里化(currying)

7. 模式匹配(pattern matching)

8. 后续(continuation)

9. monad




Spark相关论文

·An Architecture for Fast and General Data Processing on Large Clusters(PhD Disseration). M. Zaharia.

·Spark SQL: Relational Data Processing in Spark. Michael Armbrust, Reynold S. Xin, Cheng Lian, Yin Huai, Davies Liu, Joseph K. Bradley, XiangruiMeng, Tomer Kaftan, Michael J. Franklin, Ali Ghodsi, MateiZaharia. SIGMOD 2015. June 2015.

·GraphX: Unifying Data-Parallel and Graph-Parallel Analytics. Reynold S. Xin, Daniel Crankshaw, Ankur Dave, Joseph E. Gonzalez, Michael J. Franklin, Ion Stoica. OSDI 2014. October 2014.

·Discretized Streams: Fault-Tolerant Streaming Computation at Scale. MateiZaharia, Tathagata Das, Haoyuan Li, Timothy Hunter, Scott Shenker, Ion Stoica. SOSP 2013. November 2013.

·Shark: SQL and Rich Analytics at Scale. Reynold S. Xin, Joshua Rosen, MateiZaharia, Michael J. Franklin, Scott Shenker, Ion Stoica. SIGMOD 2013. June 2013.

·Discretized Streams: An Efficient and Fault-Tolerant Model for Stream Processing on Large Clusters. MateiZaharia, Tathagata Das, Haoyuan Li, Scott Shenker, Ion Stoica. HotCloud 2012. June 2012.

·Shark: Fast Data Analysis Using Coarse-grained Distributed Memory (demo). Cliff Engle, Antonio Lupher, Reynold S. Xin, MateiZaharia, Haoyuan Li, Scott Shenker, Ion Stoica. SIGMOD 2012. May 2012. Best Demo Award.

·Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing. MateiZaharia, Mosharaf Chowdhury, Tathagata Das, Ankur Dave, Justin Ma, Murphy McCauley, Michael J. Franklin, Scott Shenker, Ion Stoica. NSDI 2012. April 2012. Best Paper Award.

·Spark: Cluster Computing with Working Sets. MateiZaharia, Mosharaf Chowdhury, Michael J. Franklin, Scott Shenker, Ion Stoica. HotCloud 2010. June 2010.




官方文档

1. Spark Programming Guide




靠谱的书

1. Learning Spark: Lightning-Fast Big Data Analysis amazon.com/Learning-Spa

2. Fast Data Processing with Spark - Second Edition amazon.com/Fast-Data-Pr




作者链接

Matei Zaharia

Fei Dong | LinkedIn

Hadoop Spark学习小结[2014版]Hadoop

Hadoop社区依然发展迅速,2014年推出了2.3,2.4, 2.5 的社区版本,比如增强 Resource Manager HA, YARN Rest API, ACL on HDFS, 改进 HDFS 的 Web UI…

Hadoop Roadmap 根据我的观察,主要更新在Yarn,HDFS,而Mapreduce几乎停滞了,还有一些feature 属于安全,稳定可靠性一方面是比较稳定了,但也可以说是瓶颈了。

Apache Hadoop Project Members

这个是Hadoop project member and committee, 里面好多来自Hortonworks,也有不少国人上榜。

SparkSpark 介绍

Spark今年大放溢彩,Spark简单说就是内存计算(包含迭代式计算,DAG计算,流式计算 )框架,之前MapReduce因效率低下大家经常嘲笑,而Spark的出现让大家很清新。

其实起名字也很重要,Spark就占了先机,CTO说Where There’s Spark There’s Fire: The State of Apache Spark in 2014

Spark 起源

2010年Berkeley AMPLab,发表在hotcloud 是一个从学术界到工业界的成功典范,也吸引了顶级VC:Andreessen Horowitz的 注资

AMPLab这个实验室非常厉害,做大数据,云计算,跟工业界结合很紧密,之前就是他们做mesos,hadoop online, crowddb, Twitter,Linkedin等很多知名公司都喜欢从Berkeley找人,比如Twitter也专门开了门课程 Analyzing Big Data with Twitter 还有个BDAS (Bad Ass)引以为傲: The lab that created Spark wants to speed up everything, including cures for cancer

在2013年,这些大牛从Berkeley AMPLab出去成立了Databricks,半年就做了2次summit参会1000人,引无数Hadoop大佬尽折腰,大家看一下Summit的sponsor ,所有hadoop厂商全来了,并且各个技术公司也在巴结,cloudrea, hortonworks, mapr, datastax, yahoo, ooyala, 根据CTO说 Spark新增代码量活跃度今年远远超过了Hadoop本身,要推出商业化产品Cloud。

Spark人物

Spark基本概念

  1. RDD——Resillient Distributed Dataset A Fault-Tolerant Abstraction for In-Memory Cluster Computing弹性分布式数据集。
  2. Operation——作用于RDD的各种操作分为transformation和action。
  3. Job——作业,一个JOB包含多个RDD及作用于相应RDD上的各种operation。
  4. Stage——一个作业分为多个阶段。
  5. Partition——数据分区, 一个RDD中的数据可以分成多个不同的区。
  6. DAG——Directed Acycle graph,有向无环图,反应RDD之间的依赖关系。
  7. Narrow dependency——窄依赖,子RDD依赖于父RDD中固定的data partition。
  8. Wide Dependency——宽依赖,子RDD对父RDD中的所有data partition都有依赖。
  9. Caching Managenment——缓存管理,对RDD的中间计算结果进行缓存管理以加快整 体的处理速度。

目前还有一些子项目,比如 Spark SQL, Spark Streaming, MLLib, Graphx 工业界也引起广泛兴趣,国内Taobao, baidu也开始使用:Powered by Spark

Apache Spark支持4种分布式部署方式,分别是Amazon EC2, standalone、spark on mesos和 spark on YARN 比如AWS

Spark Summit

培训资料和视频

10月份还有个培训在湾区的培训,只不过3天就要1500刀,看来做个讲师也不错:)

第三方项目

  • Web interactive UI on Hadoop/Spark
  • Spark on cassandra
  • Spark Cassandra Connector
  • Calliope
  • H2O + Spark
  • Shark - Hive and SQL on top of Spark
  • MLbase - Machine Learning research project on top of Spark
  • BlinkDB - a massively parallel, approximate query engine built on top of Shark and Spark
  • GraphX - a graph processing & analytics framework on top of Spark (GraphX has been merged into Spark 0.9)
  • Apache Mesos - Cluster management system that supports running Spark
  • Tachyon - In memory storage system that supports running Spark
  • Apache MRQL - A query processing and optimization system for large-scale, distributed data analysis, built on top of Apache Hadoop, Hama, and Spark
  • OpenDL - A deep learning algorithm library based on Spark framework. Just kick off.
  • SparkR - R frontend for Spark
  • Spark Job Server - REST interface for managing and submitting Spark jobs on the same cluster.

相关参考资料