寒假學習筆記02

2022-08-03 07:00:21 字數 2375 閱讀 3587

今天開始正式完成實驗任務

學習的知識點主要是spark執行基本流程rdd概念rdd 中的依賴關係spark劃分rdd 在 spark 架構中的執行過程

完成實驗一linux系統常用命令

spark執行基本流程

sparkcontext 會向資源管理器註冊並申 請執行 executor 的資源;

(2)資源管理器為 executor 分配資源,並啟動 executor 程序,

executor 啟動以後會不斷向資源管理器匯報其運**況

(3)sparkcontext 根據 rdd 的依賴關係構建 dag 圖,dag 圖提交給 dagscheduler 進行解析,將 dag 圖分解成 stage,並且計算出各個 stage 之間的依賴關係,(每乙個stage階段裡面都會包含多個task,這些task構成乙個taskset)然後把乙個個 taskset 提交給底層任務排程器 taskscheduler 進行處理;

taskscheduler拿到taskset以後要把任務分配給相關的executor 程序去執行這些task,但是它不能隨便分配 必須接到executor申請才會分配

executor 會向 sparkcontext 申請 task,task scheduler將相關task傳送給executor執行,同時,sparkcontext也會將應用程式**發放給executor;

(4)task 在 executor 上執行,把執行結果反饋給 taskscheduler,然後反饋給 dagscheduler,執行完畢後寫入資料並釋放所有資源。

rdd概念

乙個 rdd 就是乙個分布式物件集合,本質上是乙個唯讀的分割槽記錄集合,每個 rdd 可分成多個分割槽,每個分割槽就是乙個資料集片段,並且乙個 rdd 的不同分割槽可以被儲存到 集群中不同的節點上,從而可以在集群中的不同節點上進行平行計算。

rdd 提供了一種高 度受限的共享記憶體模型,即 rdd 是唯讀的記錄分割槽的集合,不能直接修改,只能基於穩定 的物理儲存中的資料集建立 rdd,或者通過在其他 rdd 上執行確定的轉換操作(如 map、 join 和 group by)而建立得到新的 rdd

從輸入中邏輯上生成 a 和 c 兩個 rdd,經過一系列轉換操作,邏輯上生成了 f(也是乙個 rdd),之所以說是 邏輯上,是因為這時候計算並沒有發生,spark 只是記錄了 rdd 的生成和依賴關係。當 f 要進行輸出時,也就是當f進行動作操作的時候,spark才會根據rdd的依賴關係生成dag, 並從起點開始真正的計算。 

rdd 中不同的操作會使得不同 rdd 中的分割槽會產生不同的依賴。

rdd 中的依賴關係分為窄依賴與寬依賴, 

窄依賴表現為乙個父 rdd 的分割槽對應於乙個子 rdd 的分割槽,或多個父 rdd 的分割槽對 應於乙個子 rdd 的分割槽;

寬依賴則表現為存在乙個父 rdd 的乙個分割槽對應乙個子 rdd 的多個分割槽。

窄依賴典型的操作包括 map、filter、union 等,寬依賴典型的操作包括 groupbykey、sortbykey 等。對於連線(join)操作,可以分為兩種情況,如果連線操作使 用的每個分割槽僅僅和已知的分割槽進行連線,就是窄依賴(如圖 16-9(a)中的連線操作),其他 情況下的連線操作都是寬依賴(如圖 16-9(b)中的連線操作)。寬依賴的情形通常伴隨著 shuffle 操作。 

spark劃分

通過分析各個 rdd 的依賴關係生成了 dag,再通過分析各個 rdd 中的分割槽之 間的依賴關係來決定如何劃分 stage,

具體劃分方法是:在 dag 中進行反向解析,遇到寬 依賴就斷開,遇到窄依賴就把當前的rdd加入到stage中;將窄依賴盡量劃分在同乙個stage 中,可以實現流水線計算 提高了計算的效率。 

rdd 在 spark 架構中的執行過程:

(1)建立 rdd 物件;

(2)sparkcontext 負責計算 rdd 之間的依賴關係,構建 dag;

(3)dagscheduler 負責把 dag 圖分解成多個 stage,每個 stage 中包含了多個 task,每個 task 會被 taskscheduler 分發給各個 workernode 上的 executor 去執行。

linux的常用命令之前也有過很多認識,這次算是乙個查漏補缺,在虛擬機器裡面能夠運用命令也是非常方便的。打卡第二天٩(*´◒`*)۶

寒假學習進度02

日期 2020.01.15 部落格期 124 星期三嗯,把這幾天學習進度彙總一下 1 csv檔案 xml檔案 json檔案的處理整合 2 資料爬取詳細資訊 嗯,爬取的話,現在是只能爬取一頁上的所有資訊,沒能做到頁面跳轉繼續向下爬,嗯 這個演算法需要深度研究,但很麻煩 因為我是打算用python爬取的...

大三寒假學習進度記錄02

掌握tensorflow的簡單操作 1.建立專門執行環境,開啟終端模擬器,為anaconda建立乙個python3.5 或者3.6都行,隨便 的環境,環境名稱為tensorflow 在命令列中輸入下面命令 view plain copy conda create n tensorflow 2.啟動t...

寒假學習筆記03

python正規表示式 正規表示式是各種字串操作的強大工具。正規表示式是一種特定於領域的語言 dsl 作為大多數現代程式語言的庫而不僅僅是 python。正規表示式對於以下兩種主要任務是很有用的 驗證字串是否匹配模式 例如,字串具有電子郵件位址的格式 對字串中進行替換 如將所有美式拼寫改為英式拼寫 ...