Spark 學(xué)習(xí)中的一些疑問

      網(wǎng)友投稿 923 2025-03-31

      Spark 學(xué)習(xí)中的一些疑問

      問題1:Spark 為什么只有在調(diào)用 action 時(shí)才會(huì)觸發(fā)任務(wù)執(zhí)行呢?

      Spark 算子主要?jiǎng)澐譃閮深悾簍ransformation 和 action,并且只有 action 算子觸發(fā)的時(shí)候才會(huì)真正執(zhí)行任務(wù)。

      Spark RDD 的緩存和 checkpoint 是懶加載操作,只有 action 觸發(fā)的時(shí)候才會(huì)真正執(zhí)行,其實(shí)不僅是 Spark RDD,在 Spark 其他組件如SparkStreaming 中也是如此,這是 Spark 的一個(gè)特性之一。像我們常用的算子 map、flatMap、filter 都是 transformation 算子,而 collect、count、saveAsTextFile、countByKey、foreach 則為 action 算子。

      但是,為什么 Spark 任務(wù)只有在調(diào)用 action 算子的時(shí)候,才會(huì)真正執(zhí)行呢?

      假設(shè)一種情況:假如 Spark 中 transformation 直接觸發(fā) Spark 任務(wù)!那么會(huì)產(chǎn)生什么結(jié)果呢?

      導(dǎo)致 map 執(zhí)行完了要立即輸出,數(shù)據(jù)也必然要落地(內(nèi)存和磁盤)

      map 任務(wù)的生成、調(diào)度、執(zhí)行,以及彼此之間的 rpc 通信等等,當(dāng)牽扯到大量任務(wù)、大數(shù)據(jù)量時(shí),會(huì)很影響性能

      看到這兩點(diǎn)是不是很容易聯(lián)想到 MapReduce 的計(jì)算模型,MapReduce 因?yàn)橹虚g結(jié)果需要落地,導(dǎo)致性能相對 Spark 較低下,這也是 MapReduce 廣為詬病的原因之一。所以 Spark 采用只有調(diào)用 action 算子時(shí)才會(huì)真正執(zhí)行任務(wù),這是相對于 MapReduce 的優(yōu)化點(diǎn)之一。

      但是每個(gè) Spark RDD 中連續(xù)調(diào)用多個(gè) map 類算子,Spark 任務(wù)是對數(shù)據(jù)在一次循環(huán)遍歷中完成還是每個(gè) map 算子都進(jìn)行一次循環(huán)遍歷呢?

      實(shí)際上,并不需要對每個(gè) map 算子都進(jìn)行循環(huán)遍歷。Spark 會(huì)將多個(gè) map 算子 pipeline 起來應(yīng)用到 RDD 分區(qū)的每個(gè)數(shù)據(jù)元素上

      問題2:Spark 與 MapReduce 對比

      Spark

      集流批處理、交互式查詢、機(jī)器學(xué)習(xí)及圖計(jì)算等于一體

      Spark 學(xué)習(xí)中的一些疑問

      基于內(nèi)存迭代式計(jì)算,適合低延遲、迭代運(yùn)算類型作業(yè)

      可以通過緩存共享 rdd、DataFrame,提升效率【尤其是 SparkSQL 可以將數(shù)據(jù)以列式的形式存儲(chǔ)于內(nèi)存中】

      中間結(jié)果支持 checkpoint,遇錯(cuò)可快速恢復(fù)

      支持 DAG、map 之間以 pipeline 方式運(yùn)行,無需刷磁盤

      多線程模型,每個(gè) worker 節(jié)點(diǎn)運(yùn)行一個(gè)或多個(gè) executor 服務(wù),每個(gè) task 作為線程運(yùn)行在 executor 中,task 間可共享資源

      Spark 編程模型更靈活,支持多種語言如 java、scala、python、R,并支持豐富的 transformation 和 action 的算子

      MapReduce

      適合離線數(shù)據(jù)處理,不適合迭代計(jì)算、交互式處理、流式處理

      中間結(jié)果需要落地,需要大量的磁盤 IO 和網(wǎng)絡(luò) IO 影響性能

      雖然 MapReduce 中間結(jié)果可以存儲(chǔ)于 HDFS,利用 HDFS 緩存功能,但相對 Spark 緩存功能較低效

      多進(jìn)程模型,任務(wù)調(diào)度(頻繁申請、釋放資源)和啟動(dòng)開銷大,不適合低延遲類型作業(yè)

      MR 編程不夠靈活,僅支持 map 和 reduce 兩種操作。當(dāng)一個(gè)計(jì)算邏輯復(fù)雜的時(shí)候,需要寫多個(gè) MR 任務(wù)運(yùn)行【并且這些 MR 任務(wù)生成的結(jié)果在下一個(gè) MR 任務(wù)使用時(shí)需要將數(shù)據(jù)持久化到磁盤才行,這就不可避免的進(jìn)行遭遇大量磁盤 IO 影響效率】

      MapReduce spark

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:定制家居設(shè)備的好處 - 個(gè)性化定制的奢華與便利
      下一篇:如何在Excel數(shù)據(jù)透視表中按小時(shí)分組時(shí)間?
      相關(guān)文章
      亚洲国产精品美女| 亚洲人成色77777| 亚洲avav天堂av在线不卡| 久久亚洲国产成人精品无码区| 大胆亚洲人体视频| 亚洲AⅤ无码一区二区三区在线| 亚洲国产精品无码久久九九大片| 亚洲色无码专区一区| 亚洲熟妇无码av另类vr影视| 亚洲综合激情五月色一区| 亚洲精品久久无码| 亚洲成a人片在线不卡一二三区| 亚洲日韩看片无码电影| 亚洲另类无码专区丝袜| 色综合久久精品亚洲国产| 大桥未久亚洲无av码在线| 国产成人精品亚洲| 亚洲美女高清一区二区三区| 中文字幕亚洲综合久久菠萝蜜 | 国产午夜亚洲不卡| 久久亚洲高清综合| 国产亚洲婷婷香蕉久久精品| 亚洲AV永久青草无码精品| 亚洲AV天天做在线观看| 亚洲一区二区影院| 亚洲午夜电影在线观看高清| 亚洲综合久久一本伊伊区| 亚洲一卡2卡3卡4卡5卡6卡| 亚洲AV性色在线观看| 亚洲av高清在线观看一区二区| 国产精品亚洲视频| 亚洲人成网77777亚洲色| 亚洲色中文字幕无码AV| 亚洲真人无码永久在线| 亚洲精品午夜国产VA久久成人| 亚洲AV永久无码区成人网站| 亚洲男人天堂影院| 亚洲熟妇久久精品| 亚洲国产精品狼友中文久久久| 亚洲日韩精品一区二区三区| 久久99国产亚洲精品观看|