spark產生的原因

2021-09-20 15:28:03 字數 1456 閱讀 8332

一、spark產生的目的

spark產生:為了替代mapreduce,解決mapreduce計算短板

hadoop生態體系:hdfs+zokeeper +mareduce/hive+hbase+storm+mahot+其他 工具;

spark體系:hdfs+zokeeper +spark+hbase+storm+mahot+其他 工具。

二、spark的設計初衷:

設計乙個統一的計算引擎解決所有的各型別計算,包含計算型別:

1.離線批處理;

2.互動式查詢

3.圖計算

4.流失計算

5.機器學習/迭代計算

6.spark r 科學計算,資料分析

三、spark和mapreduce的對比之後的優勢:

1.減少磁碟io

mapreduce:基於磁碟

spark 基於記憶體(盡量把臨時資料快取到記憶體)

2.增加並行度:

mapreduce:maptask reducetask 乙個程序乙個task(預設)

spark:shufflemaptask resulttask 使用的是乙個執行緒

3.避免重複計算:

可以吧把資料強制快取到記憶體中,以供其他的task使用。

4.可選的shuffle和排序

4.1可選的shuffle

mapreduce:提供一種通用的shuffle

combiner partitioner sorter

shuffle的策略是乙個固定的套路

如果設定了combiner會執行combiner

如果設定的reducetask的個數超過1,那麼partitioner就會執行資料的分割槽;

如果有reducer節段的話,那麼sortre的資料排序就一定會執行。

spark的suffle:

提供了四重shuffle策略,分別適用不同的場景;

haahshuffle,sortshuffle

4.2可選的排序:

mapreduce:如果有reducer節段的話,那麼sortre的資料排序就一定會執行;

spark:使用者指定執行,否則不排序;

5.靈活的記憶體管理策略

要多少給多少,可以合理的分配到底哪個階段哦,哪個元件,使用多少。

mapreduce:maptask jvm在啟動的時候就指定了最多能使用多少記憶體,如果超出oom

spark:worker啟動了很多個程序executor,每個executor併發執行多個執行緒,每個執行緒執行乙個程式;

每個executor和每乙個task都會指定固定的記憶體大小去使用,如果excutor的記憶體固定,task的記憶體也有上限,也可能出現oom

但是:spark的任務執行緒,出來能使用jvm的記憶體之外,還可以使用作業系統的記憶體。

coredump產生的原因

造成程式coredump的原因很多,這裡根據以往的經驗總結一下 1 記憶體訪問越界 a 由於使用錯誤的下標,導致陣列訪問越界 b 搜尋字串時,依靠字串結束符來判斷字串是否結束,但是字串沒有正常的使用結束符 c 使用strcpy,strcat,sprintf,strcmp,strcasecmp等字串操...

死鎖產生的原因

一 什麼是死鎖?如果乙個程序集合裡面的每個程序都在等待這個集合中的其他乙個程序 包括自身 才能繼續往下執行,若無外力他們將無法推進,這種情況就是死鎖,處於死鎖狀態的程序稱為死鎖程序 二 死鎖產生的原因?1.因競爭資源發生死鎖 現象 系統中供多個程序共享的資源的數目不足以滿足全部程序的需要時,就會引起...

亂碼產生的原因

亂碼產生的原因一般有兩種 一種是解析錯誤 另一種是在錯誤解析的基礎上加上了編碼轉換。比如乙個gb2312編碼的檔案,使用utf 8來開啟,就會出現亂碼。在現實中,我們可能並不知道傳送方和接收方的編碼。所以應該以程式的方式進行如上的反向解析,如下 public static void main str...