Spark開發-SparkUI查看metric和日志


Spark UI

查看內容
   查看DAG- 了解Job 和Stage具體邏輯
   查看Task運行時間 : Duration :Task的運行時間-可用來定位數據傾斜
   查看Shuffle Read Size和Record 數據量大小和記錄數
   日志查看: stdout 用戶打印代碼的日志
             Thread Dump 線程堆棧信息,如果Task執行時間長,可以看看Task為什么卡着不動

Job:

User		  : testName
Total Uptime	  : 3.0 min
Scheduling Mode	  : FAIR
HDFS Read/Write Ops   : 21975 / 5355
HDFS Read/Write Bytes : 36.0 GB / 45.6 MB 
Job總的統計:  Completed Jobs: 2  Active    Jobs: 1 
Event Timeline 事件時間軸 
    Executors : Added Removed
	Jobs的狀態有: Succeeded Failed Running
	       status submitted completed
Job Id:   

Stages:

Stage總的統計: Completed Stages: 10  Skipped Stages: 8
Event Timeline 事件時間軸
    Executors : Added Removed
    Stages的狀態有: Completed Failed Active
  查看數據量 input
  查看時間:
點擊具體的
Details for Stage 5
   DAG Visualization 
      有兩類
	  Spark計算    物理plan 和算子
          SparkSQL計算 物理plan 和算子--這里的
   Event Timeline
     藍色  Scheduler Delay  等待的時間,即Executor正在等待某些東西 —— 通常這是等待驅動程序來控制和協調作業。
     紅色  Task Deserialization Time 任務反序列化時間Task Deserialization Time,一般來說它不應該這占用如此大的比例
     綠色 —— Executor Computing Time的比例,就是executor真正執行工作所花的時間。
  Stage 血緣依賴關系
  Stage分為需要處理 Shuffle的ShuffleMapStage和最下游的ResultStage。
       上游Stage先於下游Stage丸行, ResultStage是最后執行的Stage

Executors

  Executors 查看一些日志入口

日志查看

1.日志管理是由NodeManager進行管理
ID下的  application_150575191676_6936280 點擊進入
      Tracking URL: 	ApplicationMaster
  Spark的on Yarn模式,其資源分配是交給Yarn的ResourceManager來進行管理的
   Attempt ID 那一行有 Logs 點擊 Logs 進入日志
	    每個Container會輸出三類日志
	 prelaunch.err  prelaunch.out
	      gclog : Total file length is 13623 bytes.
	      stderr : Total file length is 6453551 bytes. stderr是spark輸出的規范日志。
	      stdout : Total file length is 19809 bytes.  stdout是自己定義println的輸出日志,
 2. 轉存到hdfs的日志,生命周期不再由Nodemanager負責,
	  而是由JobHistory 服務負責管理。
	     每個日志文件最大存留時間為yarn.log-aggregation.retain-seconds(單位為s,默認為3*60*60,即3小時)。
        ResourceManager NodeManager   ApplicationMaster 端的日志   container
Tracking UI 
      ApplicationMaster
        executor節點上的日志
     一個driver
     executor后可以看到 其他executor
        Spark UI 上面顯示的 Storage Memory 可用內存其實等於 Execution 內存和 Storage 內存之和
         Spark UI 上面顯示的 Storage Memory 可用內存等於堆內內存和堆外內存之和

注釋:

 1.taskscheduler和schedulerbackend兩個類,並且初始化一個調度池
 Scheduling Mode: Spark中的調度模式主要有兩種:FIFO和FAIR,
 哪種調度器由參數spark.scheduler.mode來設置,可選的參數有FAIR和FIFO,默認是FIFO
 源碼中根據用戶配置的 SchedulingMode 決定是生成
   FIFOSchedulableBuilder 還是生成 FairSchedulableBuilder 類型的 schedulableBuilder 對象
  在生成 schedulableBuilder 后,調用其buildPools方法生成 調度池
    如果不加設置,jobs會提交到 default 調度池 中。由於 調度池 的使用是Thread級別的,
	 wight 調度池的權重 poolname 調度池名
	如果有必要,可以去了解FairScheduler是如何在各個Pool之間分配資源,以及每個Pool如何在Job之間分配資源的
  2.Job的Stage沒有分解成TaskSet提交執行,則這個Stage和它對應的Task會標記為skipped stage和skipped task進行統計顯示
     skipped是因為要計算的數據已經緩存到了內存,沒有必要再重復計算
  3.Input /Output/ Shuffle Read /Shuffle Write 
    Shuffle描述着數據從map task輸出到reduce task輸入的這段過程
    Map階段的數據准備和Reduce階段的數據拷貝處理。
       一般將在map端的Shuffle稱之為Shuffle Write,
	    在Reduce端的Shuffle稱之為Shuffle Read
	一般順序:  Input -- Shuffle Write  -- Shuffle Read -- Output
4.大小和數據量的評估
	基本類型	大小				最小值	最大值	包裝器類型
	char	  兩個字節-16bit		Unicode 0	Unicode 2^16-1	Character
	byte	  一個字節-8bit			-128	127	Byte
	int		  四個字節	-2^31	+2^31-1	Integer
	long	  八個字節	-2^63	+2^63-1	Long
	8位(bit)=1字節(Byte),1024字節=1KB,1024KB=1MB, 1MB大約可以存儲256個整型
	一個英文字母占用1個字節。 一個中文會占用2-4個字節

Spark SQL DAG圖示

通過DAG可視化,用戶和開發人員可以一目了然地查明RDDS是否被恰當地緩存
      SparkPlan根據操作的子節點類型主要分為三種trait: BinaryExecNode  LeafExecNode UnaryExecNode
  01.sparkPlanner 可以理解為物理計划針對RDD操作的描述
    HadoopRDD
    HiveTableScan
    Exchange
    WholeStageCodegen
    SortMergeJoin       * Performs a sort merge join of two child relations.
	ShuffledHashJoin    * Performs a hash join of two child relations by first shuffling the data using the join keys.
	BroadcastHashJoin
    Union
02.具體的RDD操作
    ShuffledRowRDD
    MapPartitionsRDD 
    ZippedPartitionsRDD2
    UnionRDD

參考:

  Spark快速開發


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM