Spark-shell有兩種使用方式:
-
1:直接Spark-shell
會啟動一個SparkSubmit進程來模擬Spark運行環境,是一個單機版的。
-
2:Spark-shell --master Spark://hadoop1:7077,hadoop2:7077,hadoop3:7077 --total-executor-cores 5 --executor-memory 5G
指定任務提交的集群路徑在哪里。這就需要提前啟動一個真實的Standalone集群。
可以指定多個master的地址,用逗號隔開。
如果沒有指定--total-executor-cores 5 --executor-memory 5G,那么就會使用集群中所有可用的資源,沒一個worker中都會啟動executor。
不管哪種方式,只要啟動完成后。
-
1/就初始化了一個SparkContext對象為SC,而在這個對象的源碼中,
- 1.1/就創建一個SparkENV對象,里面創建一個SystemActor。
-
1.2/接着創建一個兩個Actor:ClientActor和DriverActor。
其中ClientActor就會根據剛剛的--master 來連接指定的集群
在worker中會創建好那些運行程序的executor了。
-
2/同時也創建了一個SparkSQl對象,用於SparkSQl操作的。
-
3/最終會進入一個scala的交互界面中。
此時可以寫通過RDD的transform和action的算子,最終通過action算子調用DAGSchudler對任務進行stage切分,然后通過TaskSchudler調用DriverActor將Stage下發到executor執行。
Spark-Submit的使用
-
用來提交在IDEA中編寫並且打包成jar的包到集群中運行。
-
具體的提交過程,請看Spark源碼分析的任務提交過程。
Spark-Submit --master spark://hadoop1:7077,hadoop2:7077 --executor-memory 5g --total-executor-cores 10 --class 主類路徑 jar包的路徑 文件的輸入路徑 文件的輸出路徑