Spark基礎概念01 初識Spark架構和RDD

2021-10-13 23:40:16 字數 3185 閱讀 9038

四、核心api

五、rdd是什麼,有哪些特點

六、rdd的特性

七、rdd常用的建立方式

八、rdd常用的運算元:轉換、動作

九、基於rdd的應用程式開發

十、shuffle機制

十一、累加器(可自定義)

1、在驅動程式中,通過sparkcontext主導應用的執行

2、sparkcontext可以連線不同型別的cluster manager(standalone、yarn、mesos),

連線後,獲得集群節點上的executor

3、乙個worker節點預設乙個executor,可通過spark_worker_instances調整

4、每個應用獲取自己的executor

5、每個task處理乙個rdd分割槽

cluster manager :

➢ 在集群(standalone、mesos、yarn)上獲取資源的外部服務。

executor:集群中工作節點worker中的乙個jvm程序,執行具體任務,專門用於計算。

➢ 負責執行組成 spark 應用的任務,並將結果返回給驅動器程序

➢ 它們通過自身的塊管理器(block manager)為使用者程式中要求快取的 rdd 提供記憶體式儲存。rdd 是直接快取在 executor 程序內的,因此任務可以在執行時充分利用快取資料加速運算。

master:

➢ master 是乙個程序,主要負責資源的排程和分配,並進行集群的監控等職責,類似於 yarn 環境中的 rm

--num-executors: 配置 executor 的數量

--executor-memory: 配置每個 executor 的記憶體大小

--executor-cores: 配置每個 executor 的虛擬 cpu core 數量

executor啟動後向driver反向註冊,全部註冊完之後執行main函式

之後執行到 action 運算元時,觸發乙個 job,並根據寬依賴開始劃分 stage,每個 stage 生成對應的 taskset(,這一步由dagscheduler執行)。

之後(由taskscheduler)將 task 分發到各個 executor 上執行。

(由schedulerbackend給task分配executor計算資源並啟動task)(分配,分發,啟動)

執行結束後,執行結果會返回給driver,或者寫到hdfs或者其它資料庫中。

//createsparkcontext

object createsparkcontext

}

//createsparksession

object createsparksession

}

彈性分布式資料集(resilient distributed datasets),spark中最基本的資料處理模型,抽象類,代表乙個彈性的、不可變、可分割槽、裡邊的元素可平行計算的集合

分布式

資料集

資料抽象

不可變

可分割槽

dag(有向無環圖)反映了rdd之間的依賴關係

rdd程式設計流程:建立 - 轉化 - 持久化 - 執行

//使用集合建立rdd

object createrdd

}

//獲取檔案

object loadfile

}

可以針對乙個目錄中

//的大量小檔案返回作為pairrdd

object pairrdd

}

spark運算元分類

九、埠號

目的:在idea中編寫程式,然後打可執行包傳到虛擬機器下,通過可執行包執行結果

方式1:

spark-submit \

--class cn.xym.spark.ages \

--master local[2]

/root/hadooptmp/sparkdemo-1.0-snapshot.jar

package cn.xym.spark

import org.apache.spark.

object ages

) println(agerdd.reduce(_ + _)

.todouble / agerdd.count())

}}

spark-submit /root/hadooptmp/sparkdemo-1.0-snapshot.jar
目前版本使用的是sortshufflemanager:每個 task 在 shuffle write 操作時,將所有的臨時檔案合併 (merge) 成乙個磁碟檔案。在下乙個 stage 的 shuffle read task 拉取自己資料的時候,只要根據索引拉取每個磁碟檔案中的部分資料即可。

1、shufflewriter

有三種實現以及對應的 handle:

2、shuffle read 操作發生在 shuffledrdd的compute 方法中,意味著 shuffle read 可以發生 shufflemaptask 和 resulttask 兩種任務中。

在driver端使用的資料和rdd進行計算時,需要使用累加器,否則無法新增

Spark學習01 Spark初識

中間結果輸出 基於mapreduce的計算引擎通常會將中間結果輸出到磁碟上,進行儲存和容錯。出於任務管道承接的,考慮,當一些查詢翻譯到mapreduce任務時,往往會產生多個stage,而這些串聯的stage又依賴於底層檔案系統 如hdfs 來儲存每乙個stage的輸出結果 是mapreduce的替...

SPARK基礎概念

可以認為應用是多次批量計算組合起來的過程,在物理上可以表現為你寫的程式包 部署配置。應用的概念類似於計算機中的程式,它只是乙個藍本,尚沒有執行起來。spark學習筆記三 spark原理介紹 spark最重要的api,使用者邏輯與spark集群主要的互動介面,它會和cluster master互動,包...

Spark基礎概念

spark 提供了乙個全面 統一的框架用於管理各種有著不同性質 文字資料 圖表資料等 的資料集和資料來源 批量資料或實時的流資料 的大資料處理的需求。包含spark 的基本功能 尤其是定義rdd 的api 操作以及這兩者上的動作。其他spark 的庫都是構建在rdd 和spark core 之上的。...