四、核心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 之上的。...