成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Apache Spark源碼走讀之1:論文閱讀筆記

數據庫 Spark
源碼閱讀是一件非常容易的事,也是一件非常難的事。容易的是代碼就在那里,一打開就可以看到。難的是要通過代碼明白作者當初為什么要這樣設計,設計之初要解決的主要問題是什么。在對Spark的源碼進行具體的走讀之前,如果想要快速對Spark的有一個整體性的認識,閱讀Matei Zaharia做的Spark論文是一個非常不錯的選擇。在閱讀該論文的基礎之上,再結合Spark作者在2012 Developer Meetup上做的演講Introduction to Spark Internals,那么對于Spark的內部實現會有一個比較大概的了解。 有了上述的兩篇文章奠定基礎之后,再來進行源碼閱讀,

基本概念(Basic Concepts)

RDD - resillient distributed dataset 彈性分布式數據集

Operation - 作用于RDD的各種操作分為transformation和action

Job - 作業,一個JOB包含多個RDD及作用于相應RDD上的各種operation

Stage - 一個作業分為多個階段

Partition - 數據分區, 一個RDD中的數據可以分成多個不同的區

DAG - Directed Acycle graph, 有向無環圖,反應RDD之間的依賴關系

Narrow dependency - 窄依賴,子RDD依賴于父RDD中固定的data partition

Wide Dependency - 寬依賴,子RDD對父RDD中的所有data partition都有依賴

Caching Managenment -- 緩存管理,對RDD的中間計算結果進行緩存管理以加快整體的處理速度

編程模型(Programming Model)

RDD是只讀的數據分區集合,注意是數據集

作用于RDD上的Operation分為transformantion和action。 經Transformation處理之后,數據集中的內容會發生更改,由數據集A轉換成為數據集B;而經Action處理之后,數據集中的內容會被歸約為一個具體的數值。

只有當RDD上有action時,該RDD及其父RDD上的所有operation才會被提交到cluster中真正的被執行。

從代碼到動態運行,涉及到的組件如下圖所示。

 

演示代碼


val sc = new SparkContext("Spark://...", "MyJob", home, jars) val file = sc.textFile("hdfs://...") val errors = file.filter(_.contains("ERROR"))
errors.cache()
errors.count()

運行態(Runtime view)

不管什么樣的靜態模型,其在動態運行的時候無外乎由進程,線程組成。

用Spark的術語來說,static view稱為dataset view,而dynamic view稱為parition view. 關系如圖所示

 

在Spark中的task可以對應于線程,worker是一個個的進程,worker由driver來進行管理。

那么問題來了,這一個個的task是如何從RDD演變過來的呢?下節將詳細回答這個問題。

部署(Deployment view)

當有Action作用于某RDD時,該action會作為一個job被提交。

在提交的過程中,DAGScheduler模塊介入運算,計算RDD之間的依賴關系。RDD之間的依賴關系就形成了DAG。

每一個JOB被分為多個stage,劃分stage的一個主要依據是當前計算因子的輸入是否是確定的,如果是則將其分在同一個stage,避免多個stage之間的消息傳遞開銷。

當stage被提交之后,由taskscheduler來根據stage來計算所需要的task,并將task提交到對應的worker.

Spark支持以下幾種部署模式1)standalone 2)Mesos 3) yarn. 這些部署模式將作為taskscheduler的初始化入參。

RDD接口(RDD Interface)

RDD由以下幾個主要部分組成

  1. partitions --    partition集合,一個RDD中有多少data partition

  2. dependencies -- RDD依賴關系

  3. compute(parition) -- 對于給定的數據集,需要作哪些計算

  4. preferredLocations --  對于data partition的位置偏好

  5. partitioner -- 對于計算出來的數據結果如何分發

緩存機制(caching)

RDD的中間計算結果可以被緩存起來,緩存先選Memory,如果Memory不夠的話,將會被寫入到磁盤中。

根據LRU(last-recent update)來決定哪先內容繼續保存在內存,哪些保存到磁盤。

容錯性(Fault-tolerant)

從最初始的RDD到衍生出來的***一個RDD,中間要經過一系列的處理。那么如何處理中間環節出現錯誤的場景呢?

Spark提供的解決方案是只對失效的data partition進行事件重演,而無須對整個數據全集進行事件重演,這樣可以大大加快場景恢復的開銷。

RDD又是如何知道自己的data partition的number該是多少?如果是hdfs文件,那么hdfs文件的block將會成為一個重要的計算依據。

集群管理(cluster management)

task運行在cluster之上,除了spark自身提供的standalone部署模式之外,spark還內在支持yarn和mesos.

Yarn來負責計算資源的調度和監控,根據監控結果來重啟失效的task或者是重新distributed task一旦有新的node加入cluster的話。

這一部分的內容需要參考yarn的文檔。

小結

在源碼閱讀時,需要重點把握以下兩大主線。

  • 靜態view 即 RDD, transformation and action

  • 動態view 即 life of a job, 每一個job又分為多個stage,每一個stage中可以包含多個rdd及其transformation,這些stage又是如何映射成為task被distributed到cluster中

參考資料(reference)

  1. Introduction to Spark Internals http://files.meetup.com/3138542/dev-meetup-dec-2012.pptx

  2. Resilient Distributed Datasets: A Fault-tolerant Abstraction for In-Memory Cluster Computing  https://www.usenix.org/system/files/.../nsdi12-final138.pdf

  3. Lightning-Fast Cluster Computing with Spark and Shark   http://www.meetup.com/TriHUG/events/112474102/

原文鏈接:http://www.cnblogs.com/hseagle/p/3664933.html

責任編輯:彭凡 來源: 博客園
相關推薦

2014-07-23 10:02:11

Spark源碼

2014-07-04 10:58:47

Apache Spar

2014-07-15 10:59:58

Spark代碼跟讀

2013-12-24 10:05:04

memcached

2021-11-22 16:12:34

Axios Axios-Retry前端

2014-02-14 15:43:16

ApacheSpark

2021-09-09 10:23:08

GinNetHttp

2016-09-20 10:15:49

LaravelPHPContainer

2016-09-20 10:26:25

LaravelPHPMiddleware

2021-11-19 07:54:59

Axios網絡源碼

2017-04-01 14:01:50

Apache Spar內存管理

2018-11-16 16:35:19

Java源碼編程語言

2022-06-01 13:52:11

開源大數據

2017-03-16 11:39:33

Openstack源碼姿勢

2012-02-14 14:05:59

JavaSpring

2017-04-05 16:40:45

2022-10-08 08:01:17

Spring源碼服務

2022-12-14 14:09:47

AIChatGPT筆記

2017-06-26 15:00:17

2016-12-20 09:47:38

Apache SparLambda架構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜成人免费视频 | 欧美视频成人 | 久久成人在线视频 | 欧美不卡视频一区发布 | 久久精品影视 | 成人18亚洲xxoo | 国产a视频 | 美女国产精品 | 欧美在线观看一区 | 91精品国产综合久久久久久 | 欧美日韩不卡在线 | 99色在线| 午夜资源| 在线观看深夜视频 | 国产高清一区二区三区 | 国产精品国产精品国产专区不片 | 欧美日本韩国一区二区三区 | a视频在线观看 | 午夜视频在线免费观看 | 亚洲巨乳自拍在线视频 | 精品一区久久 | 亚洲精品www. | 黄色毛片黄色毛片 | 亚洲色图综合 | 天天操天天插天天干 | 91中文| 欧美精品一区三区 | 日韩高清一区 | 91视频a| 国产精品国产精品国产专区不卡 | 国产福利在线视频 | 国产亚洲精品一区二区三区 | 精品1区 | 精品欧美一区二区久久久伦 | 日韩精品一区二区三区中文字幕 | 香蕉久久久 | 国产精品久久久久久久久久 | 日韩欧美中文 | 久久一区精品 | 日韩精品一区在线观看 | 久久久久精|