目錄
1. 官方求pi案例(直接執行已打成依賴jar包中的指定class)
2. 編寫scala語言實現功能
3. 整個spark運算的流程:
4. spark中的driver和executor
5. 總結spark中各種組成部分的關係
local模式就是spark執行在單節點的模式,通常用於在本機上練手和測試,分為以下三種情況:
(1)local:所有計算都執行在乙個執行緒中;
(2)local[k]:指定k個執行緒來執行計算,通常cpu有幾個core(執行緒數),就指定k為幾,最大化利用cpu平行計算能力;
(3)local[*]:自動設定cpu的最大core數;
在api操作中體現在sparkconf的環節(配置資訊),將master(資源管理器)設定為哪種模式,對應幾個執行緒:
首先啟動單節點的hdfs(單節點已安裝完畢spark和hadoop)
[kevin@hadoop100 spark]$ bin/spark-submit \
> --class org.apache.spark.examples.sparkpi \
> --executor-memory 1g \
> --total-executor-cores 2 \
> ./examples/jars/spark-examples_2.11-2.1.1.jar \
> 100
bin/spark-submit是spark的bin目錄下乙個提交任務指令碼
executor-memory,是給executor(具體計算功能的承擔者)分配1g的記憶體
total-executor-cores,指定每個executor使用的cup核數為2個
最後的jar包是已經打成依賴的jar包;這個jar包可以是本地、也可以是hdfs中hdfs://、也可以是來自檔案系統file:// path
執行結果如下,該演算法是利用蒙特·卡羅演算法求pi
pi is roughly 3.1409291140929114
這裡寫乙個wordcount的測試demo程式:
(1)在spark/input目錄下,建立1.txt和2.txt檔案
[kevin@hadoop100 input]$ cat 1.txt
hello spark
hello world
[kevin@hadoop100 input]$ cat 2.txt
hello hi
kevin spark
(2)啟動spark-shell
[kevin@hadoop100 spark]$ bin/spark-shell
....
scala>
(3)執行wordcount的scala程式
scala> sc.textfile("input").flatmap(_.split(" ")).map((_,1)).reducebykey(_+_).collect
res0: array[(string, int)] = array((world,1), (kevin,1), (hello,3), (spark,2), (hi,1))
textfile("input"):讀取本地檔案,spark/input資料夾資料;
flatmap(_.split(" ")):壓平操作,按照空格分割符,將檔案每一行資料對映(map)成乙個個單詞;
map((_,1)):對每乙個單詞操作,將單詞對映為元組(單詞,1);
reducebykey(_+_):形同key的value值進行聚合,相加;
collect:將資料收集到driver端展示。
(4)登入4040埠,可以檢視dag圖
發現executor中分成了兩個stage來運算。
client提交spark任務;
在worker中的executor執行器執行任務,執行設定的textfile、flatmap等操作運算元,
最後通過collect運算元反向註冊給driver,在driver端顯示執行結果。
(1)driver(驅動器):負責任務排程
它負責開發人員編寫的用來建立
sparkcontext
、建立rdd
,以及進行
rdd的轉化操作和行動操作**的執行。
用api操作,driver就是編寫sparkcontext的那個main方法的程序;
用spark shell操作,啟動shell時會自動生成乙個叫做sc的sparkcontext物件;
主要作用:
` 把使用者程式轉化成job
· 跟蹤executor的執行狀況
· 為executor節點排程任務
· ui展示應用程式執行結果
(2)executor(執行器)
存在於worker工作節點中,負責具體的spark運算任務的程序,並且可以實現ha和負載均衡,負責:
· 執行編寫的spark任務,並將結果返回給driver
· rdd直接快取在executor中,實現基於記憶體的spark運算
(2)driver負責任務排程;
(3)worker是具備資源環境的工作節點;
(4)executor在worker中實現具體計算;
(5)rdd直接快取在executor中,基於記憶體計算。
乙個物理節點可以有多個worker,乙個worker可以包含多個executor,乙個executor擁有多個core和memory
Spark的local模式環境搭建
簡介 部署模式 執行模式 spark可以在那些情況下執行,spark 框架編寫的應用程式可以執行在本地模式 local mode 集群模式 cluster mode 和雲服務 cloud 方便開發測試和生產部署。spark本地模式的安裝 1.上傳安裝包解壓安裝包 解壓軟體包 tar zxvf spa...
Local模式下Spark程式只輸出關鍵資訊
使用spark submit提交local任務時,會輸出很多info資訊 time 1495788633000 ms 17 05 26 08 50 33 info scheduler.jobscheduler finished job streaming job 1495788633000 ms.2...
Spark有幾種部署模式,每種模式特點
spark不一定要跑在hadoop集群,可以在本地,起多個執行緒的方式來指定。將spark應用以多執行緒的方式直接執行在本地,一般都是為了方便除錯,本地模式分三類 分布式部署集群,自帶完整的服務,資源管理和任務監控是spark自己監控,這個模式也是其他模式的基礎。分布式部署集群,資源和任務監控交給y...