大資料 Spark Hadoop 架構對比

2022-03-31 23:20:43 字數 1898 閱讀 4821

spark executor - zyc920716的部落格 - csdn部落格

董的部落格 » apache spark探秘:多程序模型還是多執行緒模型?

apache spark的高效能一定程度上取決於它採用的非同步併發模型(這裡指server/driver端採用的模型),這與hadoop 2.0(包括yarn和mapreduce)是一致的。hadoop 2.0自己實現了類似actor的非同步併發模型,實現方式是epoll+狀態機,而apache spark則直接採用了開源軟體akka,該軟體實現了actor模型,效能非常高。儘管二者在server端採用了一致的併發模型,但在任務級別(特指spark任務和mapreduce任務)上卻採用了不同的並行機制:hadoop mapreduce採用了多程序模型,而spark採用了多執行緒模型。

注意,本文的多程序和多執行緒,指的是同乙個節點上多個任務的執行模式。無論是mapreduce和spark,整體上看,都是多程序:mapreduce應用程式是由多個獨立的task程序組成的;spark應用程式的執行環境是由多個獨立的executor程序構建的臨時資源池構成的。

多程序模型便於細粒度控制每個任務占用的資源,但會消耗較多的啟動時間,不適合執行低延遲型別的作業,這是mapreduce廣為詬病的原因之一。而多執行緒模型則相反,該模型使得spark很適合執行低延遲型別的作業。總之,spark同節點上的任務以多執行緒的方式執行在乙個jvm程序中,可帶來以下好處:

1)任務啟動速度快,與之相反的是mapreduce task程序的慢啟動速度,通常需要1s左右;

2)同節點上所有任務執行在乙個程序中,有利於共享記憶體。這非常適合記憶體密集型任務,尤其對於那些需要載入大量詞典的應用程式,可大大節省記憶體。

3)同節點上所有任務可執行在乙個jvm程序(executor)中,且executor所佔資源可連續被多批任務使用,不會在執行部分任務後釋放掉,這避免了每個任務重複申請資源帶來的時間開銷,對於任務數目非常多的應用,可大大降低執行時間。與之對比的是mapreduce中的task:每個task單獨申請資源,用完後馬上釋放,不能被其他任務重用,儘管1.0支援jvm重用在一定程度上彌補了該問題,但2.0尚未支援該功能。

儘管spark的過執行緒模型帶來了很多好處,但同樣存在不足,主要有:

1)由於同節點上所有任務執行在乙個程序中,因此,會出現嚴重的資源爭用,難以細粒度控制每個任務占用資源。與之相反的是mapreduce,它允許使用者單獨為map task和reduce task設定不同的資源,進而細粒度控制任務占用資源量,有利於大作業的正常平穩執行。

下面簡要介紹mapreduce的多程序模型和spark的多執行緒模型。

(1) mapreduce多程序模型

1) 每個task執行在乙個獨立的jvm程序中;

2)  可單獨為不同型別的task設定不同的資源量,目前支援記憶體和cpu兩種資源;

3)   每個task執行完後,將釋放所占用的資源,這些資源不能被其他task復用,即使是同乙個作業相同型別的task。也就是說,每個task都要經歷「申請資源—> 執行task –> 釋放資源」的過程。

(2) spark多執行緒模型

1)  每個節點上可以執行乙個或多個executor服務;

2)  每個executor配有一定數量的slot,表示該executor中可以同時執行多少個shufflemaptask或者reducetask;

3)  每個executor單獨執行在乙個jvm程序中,每個task則是執行在executor中的乙個執行緒;

4)  同乙個executor內部的task可共享記憶體,比如通過函式sparkcontext#broadcast廣播的檔案或者資料結構只會在每個executor中載入一次,而不會像mapreduce那樣,每個task載入一次;

5)  executor一旦啟動後,將一直執行,且它的資源可以一直被task復用,直到spark程式執行完成後才釋放退出。

kylin 大資料架構 大資料Lambda架構

眾所周知,大資料的volume 體積 和velocity 速度 在架構設計中是一對矛盾,具體的表現是大體積的資料處理起來速度就慢。架對於大資料的批處理和實時處理兩種場景往往需要不同的技術。lambda架構就是將實時處理和批處理兩個場景放在一起。apache hadoop提供了hdfs和計算框架 ma...

大資料 HDFS的定義 使用場景 優缺點 組成架構

hdfs hadoop destributed file system 是乙個分布式的檔案系統,用於儲存檔案,通過目錄樹來定位檔案 適合一次寫入,多次讀取的場景,不支援檔案的修改 高容錯性 資料自動儲存多個副本。它通過增加副本的形式提高容錯性 某乙個副本丟失後,它可以自動恢復 適合處理大資料 資料規...

大資料 什麼是大資料

1.什麼是資料 資料是事實或觀察的結果,是對客觀事物的邏輯歸納,是用於表示客觀事物的未加工的原始材料。資料經過加工之後就成為資訊。2.大資料的定義 麥肯錫給出的大資料定義是 大資料是指大小超過常規的資料庫工具獲取 儲存 管理和分析能力的資料集。但它同時強調,並不是說一定要超過特定的tb值的資料才能是...