Spark學習筆記

2021-08-28 08:53:24 字數 1058 閱讀 9666

hadoop中mapreduce計算框架是基於磁碟的,每次計算結果都會直接儲存到磁碟,下一次計算又要從磁碟中讀取,因而io消耗大,迭代計算效率很低,且模型單一,不能適應複雜需求。spark是一種基於記憶體的開源計算框架,迭代計算效率非常高。另外,mapreduce的計算是一步一步來的,而spark將整個計算過程繪製成dag(有向無環圖),優化了計算路徑,這也是spark計算速度較快的原因之一。

bdas是貝克利資料分析棧,如下圖:

spark core和mapreduce一樣是乙個分布式大資料處理框架。包括如下幾個部分:

rdd: 彈性分布式資料集,是最重要的一類資料抽象。

rdd是抽象類,不同操作生成相應的子類,類提供操作rdd的介面

惰性計算,遇到action運算元才真正執行計算

對父rdd可存在依賴關係,分為窄依賴和寬依賴

內部資料唯讀

分割槽,數目盡可能等於集群核心數目

driver 程序:負責初始化和關閉sparkcontext

sparkcontext:計算入口,負責載入配置檔案,準備執行環境

clustermanager:集群資源管理器,包括yarn、standlone和mesos

dagscheduler:面向stage的任務排程器,根據rdd依賴關係將job劃分成stage

taskscheduler:面向task的任務排程器,接收來自dagscheduler的每個stage中的taskset,將其提交給executor

executor程序:工作節點上執行的一組計算程序,每個程序又可以啟動執行緒池

通常將實際執行spark應用程式的節點命名為worker。整個計算流程圖如下圖所示:

spark核心原始碼分析與開發實戰, 王家林等

spark原理、機制及應用,符積高等

注:如有不當之處,請指正

spark 學習筆記

最近使用spark簡單的處理一些實際中的場景,感覺簡單實用,就記錄下來了。部門使用者業績表 1000w測試資料 使用者 部門 業績 資料載入 val context new sparkcontext conf var data context.textfile data.txt 場景1 求每個部門的...

spark學習筆記

1 缺省會寫成一堆小檔案,需要將其重新分割槽,直接指定幾個分割槽 spark.sql select row number over partition by depid order by salary rownum from emp repartition 2 write.parquet hdfs ...

Spark學習筆記

spark不僅僅支援mapreduce,還支援sql machine learning graph運算等,比起hadoop應用更靈活寬泛。spark 中的rdd 資料結構應對mapreduce中data replication disk io serialization引起的低效問題。rdd 類似於...