Spark一些基礎原理 資源排程

2021-08-21 16:47:02 字數 731 閱讀 6279

在spark中,資源排程是master負責管理的,worker通過註冊的形式在master註冊相關資源。而在執行過程中,是通過sc即driver向master申請計算資源(master根據集群設定啟動不同的driver,對於standalone而言driver是在提交任務的本地環境,而對於cluster而言是由master分配到某乙個worker執行,driver在master註冊後會向master申請計算資源),master分配計算任務資源executor註冊給driver,並由driver分配到各個worker執行tasks,tasks會獲取datablock建立rdd而後根據dag分配stage進行計算,最終彙總results得到結果。

而在master分配exector時,一般為先過濾alive狀態exector放入hashmap中,根據指定的策略(均衡呼叫還是依次占用)對資源進行分配,分配時也是打亂分配的。exector註冊給driver後,driver向每個tasks對應的exector傳送launchtask以執行task任務。exector預設的堆空間大小為512m,預設只允許使用90%的safe空間,而在safe空間中預設為20%用於shuffle,60%用於storage,而storage中20%用於序列化。一般情況下需要綜合考慮storage和shuffle對記憶體的空間的消耗。

此外,spark在資料來源呼叫上,優先呼叫本地資源和依賴jar包。如若可以盡可能在本地構建資料快取。讀寫資料可以基於磁碟、記憶體以及offheap(即堆外記憶體),通過blockmanager進行管理。

關於spark程式動態資源分配的一些理解

環境 cdh5.7.1 cdh5.7.1中的spark版本為spark1.6 關於如何配置動態資源分配,參見 cloudera manager中的預設配置時開啟了spark 動態資源分配的,也就是spark.dynamicallocation.enabled true,但是動態配置相關的預設引數好像...

Spark中的一些概念

一次action操作會觸發rdd的延遲計算,我們把這樣的一次計算稱作乙個job。窄依賴指的是 每個parent rdd 的 partition 最多被 child rdd的乙個partition使用 寬依賴指的是 每個parent rdd 的 partition 被多個 child rdd的part...

關於分布式排程框架的一些優秀資源總結

paste image.png niubi job 社群資料少,群 包含作者 活躍度極低,有問題靠自己 目前市面上的分布式任務框架有 簡單,但針對可靠性需要擴充套件的地方太多.建議,簡單場景使用 資料最多,技術群活躍度高.第一推薦 產品功能比較全,作者提供有較為詳細的資料,可以自己上手.技術群活躍度...