基礎
SparkContext是什么?有什么作用?
https://blog.csdn.net/Shockang/article/details/118344357
- SparkContext 是什么?
SparkContext
是通往 Spark 集群的唯一入口,可以用來在 Spark 集群中創建 RDDs 、累加和廣播變量( BroadcastVariables )。
SparkContext
也是整個 Spark 應用程序( Application )中至關重要的一個對象,可以說是整個 Application
運行調度的核心(不是指資源調度)。
- SparkContext 的作用是什么?
SparkContext
的核心作用是初始化 Spark 應用程序運行所需要的核心組件,包括高層調度器( DAGScheduler
)、底層調度器( TaskScheduler
)和調度器的通信終端( SchedulerBackend
),同時還會負責 Spark 程序向 Master 注冊程序等。
只可以有一個 SparkContext
實例運行在一個 JWM 內存中,所以在創建新的 SparkContext
實例前,必須調用 stop 方法停止當前 JVM 唯一運行的 SparkContext 實例。
SparkContext
的重要性體現在哪些方面?
Spark 程序在運行時分為 Driver 和 Executor 兩部分, Spark 程序編寫是基于 SparkContext
的,具體包含。
1)Spark 編程的核心基礎 RDD 是由 SparkContext
最初創建的(第一個 RDD 一定是由 SparkContext
創建的)
2)Spark 程序的調度優化也是基于 SparkContext ,首先進行調度優化。
3)Spark 程序的注冊是通過 SparkContext
實例化時生產的對象來完成的(其實是 SchedulerBackend
來注冊程序)。
4)Spark 程序在運行時要通過 ClusterManager
獲取具體的計算資源,計算資源獲取也是通過 SparkContext
產生的對象來申請的(其實是 SchedulerBackend
來獲取計算資源的)。
5)SparkContext
崩潰或者結束的時候,整個 Spark 程序也結束。
Spark Master\Worker、Driver\Executor、Job\Stage\Task等概念與關系
https://blog.csdn.net/bocai8058/article/details/119300432
Spark 內存管理
https://mp.weixin.qq.com/s/H0bN00fyxevB6vV6RAdWqQ
Spark堆內內存主要分為Storage(存儲內存)、Execution(執行內存)和Other(其他) 幾部分。
Storage用于緩存RDD數據和broadcast廣播變量的內存使用
Execution僅提供shuffle過程的內存使用
Other提供Spark內部對象、用戶自定義對象的內存空間
Shuffle
參數 spark.sql.shuffle.partitions
默認并行度200
分區與并行度
https://mp.weixin.qq.com/s/luji-mMQoXiHZanQiKxgww