標籤:

有什麼關於 Spark 的書推薦?


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的出現讓大家很清新。

  • Reynod 作為Spark核心開發者, 介紹Spark性能超Hadoop百倍,演算法實現僅有其1/10或1/100

  • 淺談Apache Spark的6個發光點

  • Spark: Open Source Superstar Rewrites Future of Big Data

  • Spark is a really big deal for big data, and Cloudera gets it

其實起名字也很重要,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人物

  • Ion Stoica: Berkeley教授,AMPLab 領軍
  • Matei Zaharia: 天才,MIT助理教授
  • Reynold Xin Apache Spark開源社區的主導人物之一。他在UC Berkeley AMPLab進行博士學業期間參與了Spark的開發,並在Spark之上編寫了Shark和GraphX兩個開源框架。他和AMPLab同僚共同創建了Databricks公司
  • Andy Konwinski
  • Haoyuan Li
  • Patrick Wendell
  • Xiangrui Meng
  • Paco Nathan
  • Lian Cheng
  • Hossein Falaki
  • Mosharaf Chowdhury
  • Zongheng Yang
  • Yin Huai
  • Committers

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

  • 2014 Summit

  • 取代而非補充,Spark Summit 2014精彩回顧

  • 擁抱Spark,機遇無限——Spark Summit 2013精彩回顧

  • Databricks Cloud Demo 今年最叫好的demo是Dtabricks Cloud, 把Twitter上面實時收集的數據做作為machine learning素材,用類似IPython notebook,可視化呈現驚艷,而搭建整個sampling系統就花了20分鐘!

培訓資料和視頻

  • 官方文檔

  • Databricks Blog

  • Summit Training

  • Databricks upcoming training

  • Stanford Spark Class

  • CSDN Spark專欄

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.

相關參考資料

  • Resilient Distributed Datasets

  • spark on yarn的技術挑戰

  • Hive原理與不足

  • Impala/Hive現狀分析與前景展望

  • Apache Hadoop: How does Impala compare to Shark

  • MapReduce:一個巨大的倒退

  • Google Dremel 原理 — 如何能3秒分析1PB

  • Isn』t Cloudera Impala doing the same job as Apache Drill incubator project?

  • Shark

  • Big Data Benchmark

  • How does Impala compare to Shark

  • EMC講解Hawq SQL性能:左手Hive右手Impala

  • Shark, Spark SQL, Hive on Spark, and the future of SQL on Spark

  • Cloudera: Impala』s it for interactive SQL on Hadoop; everything else will move to Spark

  • Databricks – an interesting plan for Spark, Shark, and Spark SQL

  • Apache Storm vs Spark Streaming

  • Apache Spark源碼走讀


注意!注意!推薦今年年初出版的一本書,作者都是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_免費高速下載

截圖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 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


學編程的人不要以為一輩子只能打代碼,你們有很多我們一輩子比不上的優勢,我的很多下屬在我的手下轉了管理崗,其中有幾個一開始沉默寡言不善交際,沒人覺得他們會管理,但姐把這類人培養成嚴謹甚至冷血的幹將,加油,歡迎私信留言

由於姐昨天發表了一遍用spark預測股票走勢的文章(詳見股票價格真的能預測嗎? - 知乎),很多朋友問我要spark的書單,所以我把書單和一些心得發表出來,姐畢竟不是科班出身,大數據的未來要靠你們了??

說說這份書單的優勢吧:

姐今年28了,工作忙沒多少時間,之前沒有多少編程基礎,數學僅僅停留在大學的概率論,英語不好看英文版會瘋,所以這份書單很適合時間不多,數學沒基礎,看不懂英文的朋友

上書單:

  • spark基本功:

spark快速大數據分析

200頁左右,很適合初學者

  • Scala入門:

Scala編程思想

也很薄,這本書看懂一些語法即可,不需要把Scala學透,不懂查書查文檔就夠了(有人吐槽這本書沒有思想,人家前言就告訴你這本書是寫給初學者的第一本書,但不是最後一本,自己不看清楚怪誰)

Scala編程

Scala之父所作,當字典用

  • 機器學習入門:

圖解機器學習

日本人寫的一本很薄的書,嚴謹,適合入門,「圖解」基本沒有(一本講機器學習的書240頁你還想要圖解你咋不上天咧)

  • 機器學習:

這方面國外反而沒有什麼好書,推薦兩本大學教授著作(謝謝評論區指正),你能想像國內有人能把機器學習的書寫出豆瓣8.9和9.1嗎?

機器學習 周志華

評價就四個字:深入淺出

統計學習方法 李航

個人覺得很適合幫你理清整個機器學習體系

  • spark應用:

spark高級數據分析

有人在豆瓣吐槽這本書講spark不詳細,因為這本書本來就不是spark入門書,是一本應用書,很多案例需要跟著做(也是很薄的一本書)

姐當時零基礎想學數據分析,是逆推回去學的,從複習高數概率論到機器學習入門,再慢慢熟悉spark然後深入研究機器學習,都是利用下班空閑時間做的。具體學習方法等超過100贊再更新吧。


一本Holden Karau著作的《Fast Data Processing With Spark》,市場上也有了中文版《Spark快速數據處理》。

基本的Spark使用介紹的挺詳細,缺點是Spark新版本不斷發布,導致書里的部分內容或鏈接無效了,自己去克服克服看!

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

其實,不建議使用這本書。這是一本缺少內容,又容易讓你因為內容過期暈頭轉向的書。還是去閱讀相關論文和Spark網頁吧


現在有了兩本還可以的書:

Spark大數據處理技術

Apache Spark源碼剖析


如果你還不了解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一下它們的論文吧。這些論文都寫得挺通熟易懂的。


一定要看官方文檔。官方文檔寫的非常好的,比大部分書寫的都好。

spark更新太快了,市面上書都是基於spark1.2以前的版本,而最新的1.4和以前的版本已經有了相當大的改變。尤其是dataframe,mllib,改動非常大。


回答中已經有書的推薦,確實還沒有什麼好書。

如果是使用,本人推薦看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最大的價值。


4本Spark技術好書推薦

一些比較適合新手入門Spark的技術書籍,對Spark技術感興趣想要學習的同學可以做個參考。

1.大數據技術叢書:Spark快速數據處理

內容淺顯易懂,極其適合入門。從實用角度系統講解Spark的數據處理工具及使用方法,手把手教你充分利用Spark提供的各種功能,快速編寫高效分散式程序。

2.Spark大數據處理:技術、應用與性能優化

作者結合自己在微軟和IBM的實踐經驗和對Spark源代碼的研究撰寫而成。首先從技術層面講解了Spark的體系結構、工作機制、安裝與部署、開發環境搭建、計算模型、Benchmark、BDAS等內容;然後從應用角度講解了一些簡單的、有代表性的案例;最後對Spark的性能優化進行了探討。

3.大數據Spark企業級實戰

完全從企業處理大數據業務場景的角度出發,完全基於實戰代碼來組織內容,從零起步,不許任何基礎,完全無痛地掌握Spark大數據處理實戰技術

4.Spark大數據處理技術

介紹Spark及Spark生態圈相關技術的技術書籍俯覽未來大局,不失精細剖析,呈現一個現代大數據框架的架構原理和實現細節透徹講解Spark原理和架構,以及部署模式、調度框架、存儲管理及應用監控等重要模塊Spark生態圈深度檢閱:SQL處理Shark和Spark SQL、流式處理Spark Streaming、圖計算Graphx及內存文件系統Tachyon


推薦幾個資料,是我最近在看的。

第一個是Apache Spark源碼剖析 (豆瓣),這本書雖然照抄源碼,但是我覺得盯著電腦看源碼比較累(摔~~~)

第二本是Spark大數據處理:技術、應用與性能優化 (豆瓣) ,貌似評價不好,但是適合入門使用

但是,如果想徹底搞明白的話還是建議閱讀官方doc,幾篇論文啃下來比較好。Introduction 翻譯比較好的開發手冊也可以參照一下


今年一月份新出的Learning Spark: Lightning-Fast Big Data Analysis算是官方的權威書籍了,對於Spark入門很有幫助。

Amazon鏈接:Learning Spark: Lightning-Fast Big Data Analysis: Holden Karau, Andy Konwinski, Patrick Wendell, Matei Zaharia: 9781449358624: Amazon.com: Books


推薦 《深入理解SPARK:核心思想與源碼分析》,此書適合Spark已經入門的讀者閱讀,對於熱愛源碼的人也是不錯的選擇,目前,此書是國內介紹Spark最全面的一本書,對於原理有深層次的解析。


剛找到了一個微信,上面剛開始講spark的,可以學習下。

【Spark大數據處理】動手寫WordCount


我同事寫了本書,但是他自己推薦我去看官方文檔。因為spark更新太快了,書寫完等到出版要大半年,很多內容都需要更新。


謝邀,不過我的回答可能會讓你失望。

據我所知,Google的一位女程序員寫了一本Spark的書;某本Spark的介紹性書籍在翻譯階段;Spark那伙人貌似也在寫本書。

以上幾點我都沒有上網去考證,甚至懶得搜書名,因為可想而知,這些書都沒啥乾貨,基本沒有用。書真沒啥好看的。:(


推薦《深入理解Spark》


OReilly .Learning Spark.


推薦 &, OReilly出版的,

這不是一本入門書,主要是講ML這一塊。

但這本書並不難讀,裡面每一章都是實例,還提供數據源,

很方便動手實踐,通過這些「非玩具」的例子可以更好的學習

使用spark。


可以看看


《大數據Spark企業級實戰》http://item.jd.com/1443682720.html

本書共包括14章,每章的主要內容如下。

  第1章回答了Spark為何是大數據處理平台的必然選擇?Spark速度如此之快的原因是什麼?Spark的理論基石是什麼?Spark具體是如何僅僅使用一個技術堆棧解決多元化的大數據處理的需求的?

  第2章回答了如何從零起步構建Hadoop集群?如何在Hadoop集群的基礎上構建Spark集群?如何測試Spark集群?

  第3章回答了如何在IDEA集成開發環境中開發並運行Spark程序?如何在IDA中開發Spark代碼並進行測試?

  第4章在細緻解析RDD的基礎上會動手實戰RDD中的Transformation類型的RDD、Action類型的RDD,並伴有Spark API的綜合實戰案例。

  第5章詳細分析了Spark Standalone模式、Spark Yarn-Cluster模式、Spark-Client模式的設計和實現。

  第6章首先介紹Spark內核,接著分享通過源碼分析Spark內核及源碼,細緻解析Spark作業的全生命周期,最後分享Spark性能優化的內容。

.  第7章通過大約30個動手實踐的案例循序漸進地展示Spark GraphX框架方方面面的功能和使用方法,並對Spark GraphX的源碼進行解析。

  第8章基於Spark SQL動手編程實踐章節,從零起步,細緻而深入地介紹了Spark SQL方方面面的內容。

  第9章從快速入門機器學習開始,詳細解析MLlib框架,通過對線性回歸、聚類、協同過濾的演算法解析、源碼解析和案例實戰,循序漸進地揭秘MLLib,最後通過對MLlib中Basic Statics、樸素貝葉斯演算法、決策樹的解析和實戰,進一步提升掌握Spark機器學習的技能。

  第10章細緻解析了Tachyon這個分散式內存文件系統的架構設計、具體實現、部署以及Spark對Tachyon的使用等內容。

  第11章循序漸進地介紹Spark Streaming的原理、源碼和實戰案例等內容。

  第12章介紹了Spark多語言編程的特點,並通過代碼實例循序漸進地介紹Spark多語言編程,最後通過一個綜合實例來實踐Spark多語言編程。

  第13章從R語言的基礎介紹和動手實戰入手,介紹SparkR的使用和代碼實戰,助您快速上手R語言和Spark兩大大數據處理的利器。

  第14章循序漸進地介紹了Spark常見的問題及其調優方式。首先介紹Spark性能優化的14大問題及其解決方法,然後從內存優化、RDD分區、Spark對象和操作的性能調優等角度解決常見的性能調優問題,最後講解Spark最佳實踐方案。

  第15章聚焦於Spark源碼中的BlockManager、Cache和Checkpoint等核心源碼解析,BlockManager、Cache和Checkpoint是每個Spark學習者都必須掌握的核心內容。本章循序漸進地解析了這三部分的源碼,包括通過源碼說明其用途、實現機制、內部細節和實際Spark生產環境下的最佳實踐等,通過本章即可輕鬆駕馭BlockManager、Cache和Checkpoint,從而對Spark精髓的領悟也必將更上層樓!

  附錄主要是從Spark的角度來講解Scala,以動手實戰為核心,從零開始,循序漸進地講解Scala函數式編程和面向對象編程。


官方文檔


推薦閱讀:

想研讀下spark的源碼,怎麼搭閱讀和調試的環境呢?
如何高效閱讀 Spark 和 Hadoop 這類大型開源項目源代碼?有什麼工具可以藉助?
第四範式的人工智慧平台 Prophet 有可能替代 Spark 么?
Spark SQL 和 Shark 在架構上有哪些區別?將來會合併嗎?

TAG:Spark |