跳到主要内容

Spark 书推荐

image.jpeg

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.

相关参考资料

编辑于 2014-09-02

image.jpeg

慕尤才

嘿咻嘿咻

截图1:

截图2:

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

Learning Spark: Lightning-Fast Big Data Analysis

http://www.amazon.com/Learning-Spark-Lightning-Fast-Data-Analysis/dp/1449358624/...

这本书有这样几个特点:

  • 可操作性强:安装好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_免费高速下载

image.jpeg

image.jpeg

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

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 http://www.amazon.com/Learning-Spark-Lightning-Fast-Data-Analysis/dp/1449358624/...

\2. Fast Data Processing with Spark - Second Edition http://www.amazon.com/Fast-Data-Processing-Spark-Second/dp/178439257X/...

作者链接

Matei Zaharia

编辑于 2015-09-23

image.jpeg

童轻书

奢侈品公司高管,不高,略冷

学编程的人不要以为一辈子只能打代码,你们有很多我们一辈子比不上的优势,我的很多下属在我的手下转了管理岗,其中有几个一开始沉默寡言不善交际,没人觉得他们会管理,但姐把这类人培养成严谨甚至冷血的干将,加油,欢迎私信留言

由于姐昨天发表了一遍用spark预测股票走势的文章(详见股票价格真的能预测吗? - 知乎),很多朋友问我要spark的书单,所以我把书单和一些心得发表出来,姐毕竟不是科班出身,大数据的未来要靠你们了✌️

说说这份书单的优势吧:

姐今年28了,工作忙没多少时间,之前没有多少编程基础,数学仅仅停留在大学的概率论,英语不好看英文版会疯,所以这份书单很适合时间不多,数学没基础,看不懂英文的朋友

上书单:

  • spark基本功:

spark快速大数据分析

image.jpeg

200页左右,很适合初学者

  • Scala入门:

Scala编程思想

image.jpeg

也很薄,这本书看懂一些语法即可,不需要把Scala学透,不懂查书查文档就够了(有人吐槽这本书没有思想,人家前言就告诉你这本书是写给初学者的第一本书,但不是最后一本,自己不看清楚怪谁)

Scala编程

image.jpeg

Scala之父所作,当字典用

  • 机器学习入门:

图解机器学习

image.jpeg

日本人写的一本很薄的书,严谨,适合入门,“图解”基本没有(一本讲机器学习的书240页你还想要图解你咋不上天咧)

  • 机器学习:

这方面国外反而没有什么好书,推荐两本大学教授著作(谢谢评论区指正),你能想象国内有人能把机器学习的书写出豆瓣8.9和9.1吗?

机器学习 周志华

image.jpeg

评价就四个字:深入浅出

统计学习方法 李航

image.jpeg

个人觉得很适合帮你理清整个机器学习体系

  • spark应用:

image.jpeg

spark高级数据分析

有人在豆瓣吐槽这本书讲spark不详细,因为这本书本来就不是spark入门书,是一本应用书,很多案例需要跟着做(也是很薄的一本书)

姐当时零基础想学数据分析,是逆推回去学的,从复习高数概率论到机器学习入门,再慢慢熟悉spark然后深入研究机器学习,都是利用下班空闲时间做的。具体学习方法等超过100赞再更新吧。

编辑于 2017-04-09

image.jpeg

黄辉煌

做一只有趣的程序狗

一本Holden Karau著作的《Fast Data Processing With Spark》,市场上也有了中文版《Spark快速数据处理》。

基本的Spark使用介绍的挺详细,缺点是Spark新版本不断发布,导致书里的部分内容或链接无效了,自己去克服克服看!

-----------------------------

其实,不建议使用这本书。这是一本缺少内容,又容易让你因为内容过期晕头转向的书。还是去阅读相关论文和Spark网页吧

编辑于 2014-06-24

image.jpeg

jiChaoLi

Spark大数据处理技术

现在有了两本还可以的书:

Apache Spark源码剖析

发布于 2015-03-20

image.jpeg

Marvin

码农

一定要看官方文档。官方文档写的非常好的,比大部分书写的都好。

spark更新太快了,市面上书都是基于spark1.2以前的版本,而最新的1.4和以前的版本已经有了相当大的改变。尤其是dataframe,mllib,改动非常大。

发布于 2015-07-02

image.jpeg

sleep deep

如果你还不了解Spark,不知道什么是RDD,那么我觉得从Spark的论文开始看。概念及为什么这样子设计的等问题,论文里都说得很清楚。我自己之前也网上搜了好多资料,但都看得云里雾里的;只有看到论文的时候才理清楚。

论文题目及连接如下:

Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing

https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final138.pdf...

P.S. 如果你也想了解HDFS, MapReduce, HBase等,那么,Google一下它们的论文吧。这些论文都写得挺通熟易懂的。

编辑于 2014-05-20

image.jpeg

egral

交易系统开发

回答中已经有书的推荐,确实还没有什么好书。

如果是使用,本人推荐看spark各个版本的doc:Documentation更加合适,还有多看微博上国内的几个contributor在微博上关于spark的讨论。

如果要了解源码,可以跟进github上spark的repo:apache/spark · GitHub,从配置sbt,编译源码,尝试修改源码开始,多看PR:Pull Requests · apache/spark · GitHub

由于spark正在发展,你可以找你感兴趣的紧跟其中一方面spark sql(包括sql parser,查询优化catalyst和逻辑和物理执行计划的表示,各个物理算子的实现),mlbase(各种机器学习算法的实现)或者graphx,集中了解某一方面的原理和详细的实现过程,我想这个是学习spark最大的价值。

编辑于 2014-05-05

image.jpeg

刘建华

研究数据的诗人

推荐几个资料,是我最近在看的。

第一个是Apache Spark源码剖析 (豆瓣),这本书虽然照抄源码,但是我觉得盯着电脑看源码比较累(摔~~~)

第二本是Spark大数据处理:技术、应用与性能优化 (豆瓣) ,貌似评价不好,但是适合入门使用

但是,如果想彻底搞明白的话还是建议阅读官方doc,几篇论文啃下来比较好。Introduction 翻译比较好的开发手册也可以参照一下

发布于 2015-09-04

image.jpeg

只是因为情非得已

架构师/大数据/马士兵 学习交流群:489034603

4本Spark技术好书推荐

一些比较适合新手入门Spark的技术书籍,对Spark技术感兴趣想要学习的同学可以做个参考。

1.大数据技术丛书:Spark快速数据处理

image.jpeg

内容浅显易懂,极其适合入门。从实用角度系统讲解Spark的数据处理工具及使用方法,手把手教你充分利用Spark提供的各种功能,快速编写高效分布式程序。

2.Spark大数据处理:技术、应用与性能优化

image.jpeg

作者结合自己在微软和IBM的实践经验和对Spark源代码的研究撰写而成。首先从技术层面讲解了Spark的体系结构、工作机制、安装与部署、开发环境搭建、计算模型、Benchmark、BDAS等内容;然后从应用角度讲解了一些简单的、有代表性的案例;最后对Spark的性能优化进行了探讨。

3.大数据Spark企业级实战

image.jpeg

完全从企业处理大数据业务场景的角度出发,完全基于实战代码来组织内容,从零起步,不许任何基础,完全无痛地掌握Spark大数据处理实战技术

4.Spark大数据处理技术

image.jpeg

介绍Spark及Spark生态圈相关技术的技术书籍俯览未来大局,不失精细剖析,呈现一个现代大数据框架的架构原理和实现细节透彻讲解Spark原理和架构,以及部署模式、调度框架、存储管理及应用监控等重要模块Spark生态圈深度检阅:SQL处理Shark和Spark SQL、流式处理Spark Streaming、图计算Graphx及内存文件系统Tachyon

编辑于 2017-07-20

相关问题

hadoop 和spark如何系统的学习? 10 个回答

Spark的Job数量由什么决定? 2 个回答

关于Spark有哪些大牛们的博客? 12 个回答

为什么Spark比MapReduce快? 11 个回答

Spark可以完全替代hadoop吗? 23 个回答

相关推荐

image.jpeg

如何利用大数据做个性化推荐?

629 人参与

image.jpeg

财务思维的搭建与参考书推荐

3929 人参与

image.jpeg

PySpark 实战指南:利用 Python 和 Spark 构建数据密集型应用并规模化部署