Spark 集群 任務提交模式


Spark 集群的模式及提交任務的方式

  • 本文大致的內容圖

1571831092670

  • Spark 集群的兩種模式:

    • Standalone 模式

      • Standalone-client 任務提交方式

        • 提交命令

          ./spark-submit 
          --master spark://node1:7077 (主節點的位置)
          --class 類的包+類名
          jar包的位置 
          1000 # 分區參數, 也可以說是並行度
          

          ||

          ./spark-submit 
          --master spark://node1:7077 
          --deploy-mode client 
          --class 類的包+類名
          jar包的位置 
          100 # 分區參數, 也可以說是並行度
          
        • 執行原理

        • 執行流程

          1. client 模式提交任務后, 會在客戶端啟動Driver進程
          2. Driver 會向 Master 申請啟動 Application啟動的資源
          3. 資源申請成功, Driver 端將 task 發送到 worker端執行
          4. Worker 端將 task 執行結果 返回 到 Driver 端
        • 總結

          • client模式適用於測試調試程序。
          • Driver進程是在客戶端啟動的。這里的客戶端指的是應用程序的當前節點
          • 在Driver端可以看到task執行的情況。
          • 生產環境下不能使用client模式是因為: 假設提交100個 Application 到集群運行, Driver每次都會在client端啟動, 那么就會導致客戶端100次網卡流量暴增。
      • Standalone-cluster 任務提交方式

        • 提交命令

          ./spark-submit 
          --master spark://node1:7077 
          --deploy-mode cluster
          --class 包+類名
          jar包的位置
          100 # 分區參數, 也可以說是並行度
          
          #注意:Standalone-cluster提交方式,應用程序使用的所有jar包和文件,必須保證所有的worker節點都要有,因為此種方式,spark不會自動上傳包。
          # 解決方式:
          # 1.將所有的依賴包和文件打到同一個包中,然后放在hdfs上。
          # 2.將所有的依賴包和文件各放一份在worker節點上。
          
        • 執行原理

        • 執行流程

          1. cluster模式提交應用程序后會先向 Master 請求啟動 Driver
          2. Master 接收請求, 隨機在集中的一台節點啟動Driver進程
          3. Driver啟動后為當前的應用程序申請資源
          4. Driver端發送task到worker節點上執行
          5. worker 將執行情況和執行結果返回 Driver
        • 總結

          • Standalone-cluster 運行方式適用於生產環境
          • 此時在driver端界面看不到執行任務情況
          • 由於driver會被隨機分配到worker節點上啟動, 那么不會有流量激增問題
    • On Yarn 模式

      • Yarn-client 任務提交方式

        • 提交命令

          ./spark-submit 
          --master yarn
           --class 包+類名
          jar文件位置
          100
          

          ||

          ./spark-submit 
          --master yarn–client
           --class 包+類名
          jar文件位置
          100
          

          ||

          ./spark-submit 
          --master yarn 
          --deploy-mode  client 
           --class 包+類名
          jar文件位置
          100
          
        • 執行原理

        • 執行流程

          1. 客戶端提交一個 Application, 在客戶端啟動一盒Driver 進程。
          2. 應用程序啟動后會向RM(ResourceManager) 發送請求, 啟動AM(ApplicationMaster)
          3. RM 收到請求, 隨機選擇一台 NM(NodeManager)啟動AM。這里的NM相當於Standalone中的Worker節點
          4. AM 啟動后, 會向 RS 請求一批container資源, 用於啟動Executor
          5. RM會找到一批NM返回給AM, 用於啟動Executor
          6. AM會向NM發送命令啟動Executor
          7. Executor 啟動后, 會反向注冊給Driver, Driver 發送 task 到 Executor, 執行情況和結果返回給Driver端
        • 總結

          • Yarn-client模式同樣適用於測試, 因為Driver運行在本地, Driver會與yarn集群中的Executor 進行大量的通信, 會造成客戶機網卡流量的大量增加

          • ApplicationMaster 的作用:

            • 為當前的Application申請資源

            • 給NodeManager發送消息啟動Executor

      • Yarn-cluster 任務提交方式

        • 提交命令

          ./spark-submit 
          --master yarn 
          --deploy-mode cluster 
          --class 包+類名 
          jar文件位置
          100
          

          ||

          /spark-submit 
          --master yarn-cluster
          --class 包+類名
          jar文件位置
          100
          
        • 執行原理

        • 執行流程

          1. 客戶機提交Application應用程序, 發送請求到RM(ResourceManager), 請求啟動(ApplicationMaster)
          2. RM收到請求后隨即在一台 NM(NodeManager) 上啟動 AM(相當於Driver 端)
          3. AM啟動后, AM 發送請求到 RM, 申請一批容器(container)來啟動Executor
          4. RM 返回一批 NM 節點 給 AM
          5. AM 連接到 NM, 發送請求到 NM 啟動 Executor
          6. Executor 反向注冊到 AM 所在節點的 Driver,Driver再發送task到Executor
        • 總結

          • Yarn-Cluster 主要用於生產環境中, 因為 Driver運行在 Yarn 集群中某一台NodeManager中, 每次提交任務的 Driver 所在機器都是隨機的, 並不會產生一台機器網卡流量激增的現象。
          • 缺點是提交任務不能看到日志, 只能通過yarn查看日志
          • ApplicationMaster的作用
            • 為當前的 Application 申請資源
            • 給NodeManger 發送消息啟動 Executor
            • 任務調度


免責聲明!

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



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