深入理解Spark——準備篇

跟蹤源碼

spark-shell -> spark-submit -> spark-class

spark-shell
spark-submit
spark-class

SparkSubmit -> repl.Main -> ILoop ( SparkILoop ).process -> loadFiles ( initializeSpark ( createSparkSession ) ) -> printWelcome

repl.Main
ILoop.process
SparkILoop.loadFiles
SparkILoop.initializeSpark

Spark設計理念與基本架構

Hadoop MRv1

MRv1 示意圖

組成部分

1.運行環(huán)境:JobTracker 和 TaskTracker

2.編程模型:MapReduce

3.數(shù)據(jù)處理引擎:Map Task 和 Reduce Task

缺點

1.JobTracker 既負責 資源管理 又負責 任務調(diào)度,容易成為瓶頸。

2.單 Master,容易down饥脑。

3.TaskTracker 采用 slot 等量劃分本節(jié)點上的資源量( CPU、內(nèi)存 )鳍徽。slot 分為 Map slot 和 Reduce slot 曲伊, MapTask 只能用 Map slot髓梅,ReduceTask 只能用 Reduce slot织阅。有時會 MapTask 較多時壳繁,而 Reduce Task 還沒有被調(diào)度,這時 Reduce slot 會被閑置。

Hadoop MRv2

MRv2 示意圖

改進

1.JobTracker被拆分成了通用的資源調(diào)度平臺(ResourceManager RM)和負責各個計算框架的任務調(diào)度模塊(ApplicationMaster AM)闹炉。

2.MRv2 中核心不再是 MapReduce蒿赢,而是Yarn,MapReduce 框架時可插拔的渣触,可以用 Spark羡棵、Storm 替代。

缺點

對HDFS的頻繁操作(包括計算結果持久化昵观、數(shù)據(jù)備份以及 shuffle )導致磁盤 I/O 成為系統(tǒng)性能的瓶頸晾腔。只適合離線的數(shù)據(jù)處理舌稀,不具備實時處理的能力啊犬。


Spark

基本概念

RDD:彈性分布式數(shù)據(jù)集

Task:具體執(zhí)行的任務。分為 ShuffleMapTask 和 ResultTask兩種壁查,兩者分別對應與 Hadoop 中的 Map 和 Reduce觉至。

Job:用戶提交的作業(yè)。

Stage:Job分成的階段睡腿。根據(jù)依賴劃分 Stage 语御。

Partition:數(shù)據(jù)分區(qū)。一個RDD數(shù)據(jù)可以被劃分成多個 Partition席怪。

NarrowDependency:窄依賴应闯,即子 RDD 依賴于 RDD 中固定的 Partition。分為OneToOneDependency 和 RangeDependency 兩種挂捻。

ShuffleDependency:shuffle依賴碉纺,寬依賴。子 RDD 對父 RDD 中的所有 Partition 都有依賴刻撒。

DAG:有向無環(huán)圖骨田。反映各 RDD 之間的依賴關系。

核心功能

SparkContext

Driver Application 的執(zhí)行與輸出都是通過 SparkContext 來完成的声怔。

①內(nèi)置的 DAGScheduler 負責創(chuàng)建 Job态贤,將 DAG 中的 RDD 劃分到不同的 Stage,提交 Stage 等功能醋火。

②內(nèi)置的 TaskScheduler 負責資源的申請悠汽、任務的提交以及請求集群對任務的調(diào)度等工作。

存儲體系

優(yōu)先考慮使用各個節(jié)點的內(nèi)存作為存儲芥驳。Spark 還提供了以內(nèi)存為中心的高容錯的分布式文件系統(tǒng) Tachyon 供用戶進行選擇介粘。Tachyon 能夠為 Spark 提供可靠的內(nèi)存級的文件共享服務。

計算引擎

由 SparkContext 中的 DAGScheduler晚树、RDD以及具體節(jié)點上的 Executor 負責執(zhí)行的 Map 和 Reduce 任務組成姻采。DAGScheduler 和 RDD 雖然位于 SparkContext 內(nèi)部,但是在任務正式提交與執(zhí)行之前會將 Job 中的 RDD 組成DAG,決定了執(zhí)行階段任務的數(shù)量慨亲、迭代計算婚瓜、shuffle 等過程。

部署模式

SparkContext 的 TaskScheduler 組件中提供了對 Standalone 部署模式的實現(xiàn)和 Yarn刑棵、Mesos 等分布式資源管理系統(tǒng)的支持巴刻。除此之外,還提供了 Local 模式便于開發(fā)和調(diào)試蛉签。

編程模型

代碼執(zhí)行過程

1.使用 SparkContext 提供的API 編寫 Driver application程序胡陪。

2.使用 SparkContext 提交用戶編寫的 Driver application程序。具體:

①使用 BlockManager 和 BroadcastManager 將任務的 Hadoop 配置進行廣播碍舍。

② DAGSchduler 將任務轉換為 RDD 并組織成 DAG柠座,DAG還將被劃分為不同的Stage。

③ TaskSchduler 通過 ActorSystem將任務提交給集群管理器(Cluster Manager)片橡。

3.集群管理器(Cluster Manager)給任務分配資源妈经,即將具體任務分配到 Worker上,Worker 創(chuàng)建 Executor 來處理任務的運行捧书。Standalone吹泡、YARN、Mesos经瓷、EC2 等都可以作為 Spark 的集群管理器爆哑。

RDD計算模型

每個分區(qū)的數(shù)據(jù)只會在一個Task中計算。

基本架構

Spark 基本架構

1.Cluster Manager

Spark 的集群管理器舆吮,主要負責資源的分配與管理揭朝。集群管理器分配的資源屬于一級分配,它將各個 Worker 上的內(nèi)存歪泳、CPU 等資源分配給應用程序(Driver application)萝勤,但是并不負責對 Executor 的資源分配。Standalone呐伞、YARN敌卓、Mesos、EC2 等都可以作為 Spark 的集群管理器伶氢。

2.Worker

Spark的工作節(jié)點趟径。其獲得由集群資源(Cluster Manager)分配的資源,負責創(chuàng)建 Executor癣防,將資源和任務進一步分配給 Executor蜗巧,同步資源信息給 Cluster Manager。

3.Executor

執(zhí)行計算任務的單元(線程 or 進程蕾盯?)幕屹,主要負責任務的執(zhí)行以及與 Worker、Driver App的信息同步。

4.Driver App

客戶端應用程序望拖。用于將任務程序轉換為 RDD 和 DAG渺尘,并與 Cluster Manager 進行通信與調(diào)度。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末说敏,一起剝皮案震驚了整個濱河市鸥跟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盔沫,老刑警劉巖医咨,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異架诞,居然都是意外死亡拟淮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門侈贷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惩歉,“玉大人等脂,你說我怎么就攤上這事俏蛮。” “怎么了上遥?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵搏屑,是天一觀的道長。 經(jīng)常有香客問我粉楚,道長辣恋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任模软,我火速辦了婚禮伟骨,結果婚禮上,老公的妹妹穿的比我還像新娘燃异。我一直安慰自己携狭,他們只是感情好,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布回俐。 她就那樣靜靜地躺著逛腿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪仅颇。 梳的紋絲不亂的頭發(fā)上单默,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機與錄音忘瓦,去河邊找鬼搁廓。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的境蜕。 我是一名探鬼主播线欲,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼汽摹!你這毒婦竟也來了李丰?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤逼泣,失蹤者是張志新(化名)和其女友劉穎趴泌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拉庶,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡嗜憔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了氏仗。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吉捶。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖皆尔,靈堂內(nèi)的尸體忽然破棺而出挨措,到底是詐尸還是另有隱情绵脯,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站钧椰,受9級特大地震影響售担,放射性物質(zhì)發(fā)生泄漏嘶摊。R本人自食惡果不足惜铅匹,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望每辟。 院中可真熱鬧剑辫,春花似錦、人聲如沸渠欺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽峻堰。三九已至讹开,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捐名,已是汗流浹背旦万。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留镶蹋,地道東北人成艘。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓赏半,卻偏偏與公主長得像,于是被迫代替她去往敵國和親淆两。 傳聞我的和親對象是個殘疾皇子断箫,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容