2018年8月1日 星期三

[Spark] Spark觀念

Spark基本觀念, 可參考本Blog其他Spark文章 


Spark-submit運作流程

  1. 使用者使用spark-submit遞交一個應用程式
  2. spark-submit啟動driver驅動程式並喚起 使用者指定的main()方法
  3. driver會連絡叢集管理器, 註冊應用程序,並為executer要求資源
  4. 叢集管理器代表driver啟動executer
  5. driver會依應用程式中的定義運行, 基於程式中的RDD行動操作與轉換操作, 驅動器會切分程式, 以任務Task的形式將工作傳遞給executer的程序中
  6. 任務會被計算以及儲存結果於executer的程序中
  7. driver對任務進行監控, 若資源不足則重新調度
  8. 如果驅動器的main()方法離開了, 或呼叫sc.stop(), executer將被終止並將資源返回叢集管理器
standalone client運行模式
Master Worker : 必須一開始啟動
Driver Executor : 為動態啟動, 提交任務時才啟動
client端啟動driver
集群模式

YARN cluster運行模式
不再client端執行, submit到集群管理去, 再交給node manager啟動driver

spark on yarn 的支援兩種模式: 
cluster與client模式只差在driver運行在哪個節點上
1) yarn-cluster:適用於生產環境; 
2) yarn-client:適用於互動、除錯,希望立即看到app的輸出 
yarn-cluster和yarn-client的區別在於yarn appMaster,每個yarn app例項有一個appMaster程序,是為app啟動的第一個container;負責從ResourceManager請求資源,獲取到資源後,告訴NodeManager為其啟動container。
yarn-cluster和yarn-client模式內部實現還是有很大的區別。如果你需要用於生產環境,那麼請選擇yarn-cluster;而如果你僅僅是Debug程式,可以選擇yarn-client

運行模式選擇

  • 如果你只是測試Spark Application,你可以選擇local模式。而如果你資料量不是很多,Standalone 是個不錯的選擇。
  • 當你需要統一管理叢集資源(Hadoop、Spark等),那麼你可以選擇Yarn或者mesos,但是這樣維護成本就會變高。 
  • 從對比上看,mesos似乎是Spark更好的選擇,也是被官方推薦的 
  • 但如果你同時執行hadoop和Spark, 從相容性上考慮,Yarn是更好的選擇。
  • 如果你不僅執行了hadoop,spark。還在資源管理上執行了docker,Mesos更加通用。 


Spark安裝

[Spark] Spark 基本安裝設定

[Spark] master HA

[Spark] 從關聯式資料庫存取資料的方法--使用JDBC使用


Spark安裝檔
  • sbin啟動開啟等指令
  • data example範例資料
  • yarn包含資源管理器
  • bin使用指令 
  • bin 包含spark-shell, spark-submit, spark-sql

Spark Submit命令

--master MASTER_URL : 提交給誰 
  • spark://host:port (standalone)
  • mesos://host:port
  • yarn
  • local
--deploy-mode DEPLOY_MODE : client or cluster
--jars JARS : 需要額外的jar包(EX: 需要使用kafka)
--class CLASS_NAME :  運行主類(java scala only)
--driver-memory 1G: driver給多大的內存
--executor-memory 1G: 給多大的內存
--conf PROP=value : 動態的改參數

standalone and mesos only
--total-executor-cores NUM : 所有執行器cores
standalone and yarn only
--executor-cores-num NUM : 每一個執行器cores, standalone default=all, yarn default=1

standalone (cluster模式) only
--driver-cores-num NUM : deault = 1
yarn only
--driver-cores-num NUMdeault = 1

Spark系統整合
Spark+Cassandra+ASP.NET

[python][Cassandra][Spark] pyspark與Cassandra整合

格式轉換

機器學習Data Pipeline

[Spark] Dataframe資料前處理

 資料流
補充:

  • spark session : 新型啟動方式, SQLContext和HiveContext組合, 將sparkcontext保包裝spark context, 不過想要與 Hive溝通,記得要加上 enableHiveSupport() 才能存取資料
  • DataSet 有rdd強型別和dataframe的結構

Ref:

1. 林大貴 著, Python+Spark2.0+Hadoop 機器學習與大數據分析實戰, 博碩
2. Holden Karau,Andy Konwinski,Patrick Wendell,Matei Zaharia 著,許致軒譯 , Spark學習手冊 , O'REILLY
3. 尚硅谷IT培训学校
4. https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/600906/

5. 大資料技術新秀Spark如何通吃批次和串流資料分析能力

沒有留言:

張貼留言