深入學(xué)習(xí)Spark

逐漸意識(shí)到光會(huì)用Spark是遠(yuǎn)遠(yuǎn)不夠的,得了解基本原理和內(nèi)部實(shí)現(xiàn)。遂學(xué)習(xí)《大規(guī)模數(shù)據(jù)處理實(shí)戰(zhàn)》,本文為學(xué)習(xí)筆記。

MapReduce的缺點(diǎn)

  • 維護(hù)成本高
  • 時(shí)間達(dá)不到用戶期望
  • 抽象層次低,大部分邏輯都需要用戶手動(dòng)開(kāi)發(fā)
  • 很多場(chǎng)景不適合用Map&Reduce來(lái)描述
  • 每一個(gè)Job的計(jì)算結(jié)果都會(huì)存儲(chǔ)在HDFS,每一步計(jì)算都需要的讀取和寫(xiě)入
  • 欠缺對(duì)流數(shù)據(jù)處理的支持

Spark

  • MapReduce是多進(jìn)程模型,多進(jìn)程模型便于細(xì)粒度的控制每個(gè)任務(wù)占用的資源,但是會(huì)消耗較多的啟動(dòng)時(shí)間。Spark的并行機(jī)制是多線程模型,同一節(jié)點(diǎn)的任務(wù)以多線程的方式運(yùn)行在一個(gè)JVM進(jìn)程中,啟動(dòng)速度更快,CPU利用率更高,內(nèi)存共享更好。

RDD

  • Resilient Distributed Dataset,可以被分區(qū)、只讀,Spark最基本的數(shù)據(jù)結(jié)構(gòu)。
  • 中間數(shù)據(jù)緩存在內(nèi)存中,減少硬盤讀寫(xiě),加快處理速度。
  • 每個(gè)分區(qū)指向一個(gè)存放在內(nèi)存中或硬盤中的數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊是獨(dú)立的,可以被存放在不同的節(jié)點(diǎn),故天然支持并行操作。


    RDD 的分區(qū)邏輯結(jié)構(gòu)
  • 已有的RDD不可被改變,可以對(duì)現(xiàn)有的RDD進(jìn)行轉(zhuǎn)換,得到新的RDD
    • 記錄RDD的依賴關(guān)系,不需要立刻去存儲(chǔ)計(jì)算出來(lái)的數(shù)據(jù)
    • 提高Spark的計(jì)算效率,并且是錯(cuò)誤恢復(fù)更加容易,因?yàn)楫?dāng)?shù)贜步輸出RDD節(jié)點(diǎn)發(fā)生故障時(shí),只需要從第N-1步的RDD出發(fā),再次計(jì)算即可。
  • RDD結(jié)構(gòu):


    RDD結(jié)構(gòu)
    1. SparkContext是與Spark節(jié)點(diǎn)的連接,一個(gè)線程只有一個(gè)SparkContext
    2. SparkConf是參數(shù)配置信息
    3. Partitions是RDD中數(shù)據(jù)的邏輯結(jié)構(gòu),每個(gè)Partition映射到某個(gè)節(jié)點(diǎn)內(nèi)存或硬盤的一個(gè)數(shù)據(jù)塊
    4. Partitioner決定分區(qū)方式,主流Hash和Range
    5. Dependencies存儲(chǔ)依賴關(guān)系,通過(guò)哪個(gè)RDD經(jīng)過(guò)哪個(gè)轉(zhuǎn)換得到的
      • 窄依賴:每個(gè)分區(qū)可以并行處理產(chǎn)生,map、filter等??梢灾С滞粋€(gè)節(jié)點(diǎn)上鏈?zhǔn)綀?zhí)行多條命令;失敗恢復(fù)更有效,只需要重新計(jì)算丟失的父分區(qū)即可。
      • 寬依賴:必須等父RDD所有分區(qū)都計(jì)算好后才可以開(kāi)始處理,join、groupBy等。需要等父分區(qū)都是可用的;失敗恢復(fù)牽涉到多個(gè)父分區(qū)。

數(shù)據(jù)傾斜

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容