yarn本地運行編譯速度優化
Ⅰ 搭建vue3+typescript+vite+yarn項目
vite是vue3推薦的打包工具,相較於webpack,Vite 是基於 native ES mole —— 現代瀏覽器基本已經全部支持了import/export 語法。 在Vite中,啟動本地伺服器,是不需要提交編譯文件的, 而是在瀏覽器請求對應URL時, 再提供文件,實現了真正的路由懶載入, 這個比起Webpack節省了不少時間。打包和響應速度提升10倍以上
若您的版本低於4.0
請使用 vue upgrade 命令更新cli
我們選中vue,按回車確定
然後選擇vue-ts,回車確認
啟動後在瀏覽器鉛答輸入: http://localhost:3000/
頁面就像這樣槐逗慧:
到這里,一個基礎的vue+ts+vite的項目就搭指顫建好了
下一節我們討論關於vite的配置
Ⅱ YARN到底是怎麼一回事
YARN的編程模型
1:保證編程模型的向下兼容性,MRv2重用了MRv1的編程模型和數據處理引擎,但運行環境被重寫。
2:編程模型與數據處理引擎
maprece應用程序編程介面有兩套:新的API(mapred)和舊的API(maprece)
採用MRv1舊的API編寫的程序可直接運行在MRv2上
採用MRv1新的API編寫的程序需要使用MRv2編程庫重新編譯並修改不兼容的參數 和返回值
3:運行時環境
MRv1:Jobracker和Tasktracker
MRv2:YARN和ApplicationMaster
YARN的組成
yarn主要由ResourceManager,NodeManager,ApplicationMaster和Container等幾個組件組成。
ResourceManager(RM)
RM是全局資源管理器,負責整個系統的資源管理和分配。
主要由兩個組件組成:調度器和應用 程序管理器(ASM)
調度器
調度器根據容量,隊列等限制條件,將系統中的資源分配給各個正在運行的應用程序
不負責具體應用程序的相關工作,比如監控或跟蹤狀態
不負責重新啟動失敗任務
資源分配單位用「資源容器」resource Container表示
Container是一個動態資源分配單位,它將內存,CPU,磁碟,網路等資源封裝在一起,從而限定每個任務的資源量
調度器是一個可插拔的組件,用戶可以自行設計
YARN提供了多種直接可用的調度器,比如fair Scheler和Capacity Scheler等。
應用程序管理器
負責管理整個系統中所有應用程序
ApplicationMaster(AM)
用戶提交的每個應用程序均包含一個AM
AM的主要功能
與RM調度器協商以獲取資源(用Container表示)
將得到的任務進一步分配給內部的任務
與NM通信以自動/停止任務
監控所有任務運行狀態,並在任務運行失敗時重新為任務申請資源以重啟任務
當前YARN自帶了兩個AM實現
一個用於演示AM編寫方法的實常式序distributedshell
一個用於Maprece程序---MRAppMaster
其他的計算框架對應的AM正在開發中,比如spark等。
Nodemanager(NM)和Container
NM是每個節點上的資源和任務管理器
定時向RM匯報本節點上的資源使用情況和各個Container的運行狀態
接收並處理來自AM的Container啟動/停止等各種要求
Container是YARN中的資源抽象,它封裝了某個節點上的多維度資源
YARN會為每個任務分配一個Container,且改任務只能使用該Container中描述的資源
Container不同於MRv1的slot,它是一個動態資源劃分單位,是根據應用程序的需求動態產生的
YARN主要由以下幾個協議組成
ApplicationClientProtocol
Jobclient通過該RPC協議提交應用才程序,查詢應用程序狀態等
Admin通過該協議更新系統配置文件,比如節點黑名單,用戶隊列許可權等。
ApplicationMasterProtocol
AM通過該RPC協議想RM注冊和撤銷自己,並為各個任務申請資源
ContainerManagementProtocol
AM通過要求NM啟動或者停止Container,獲取各個Container的使用狀態等信息
ResourceTracker
NM通過該RPC協議向RM注冊,並定時發送心跳信息匯報當前節點的資源使用情況和Container運行狀況
YARN的工作流程
文字描述一下這個過程:
1:由客戶端提交一個應用,由RM的ASM接受應用請求
提交過來的應用程序包括哪些內容:
a:ApplicationMaster
b:啟動Applicationmaster的命令
c:本身應用程序的內容
2:提交了三部分內容給RM,然後RM找NodeManager,然後
Nodemanager就啟用Applicationmaster,並分配Container
接下來我們就要執行這個任務了,
3:但是執行任務需要資源,所以我們得向RM的ASM申請執行任務的資源(它會在RM這兒注冊一下,說我已經啟動了,注冊了以後就可以通過RM的來管理,我們用戶也可以通過RM的web客戶端來監控任務的狀態)ASM只是負責APplicationMaster的啟用
4::我們注冊好了後,得申請資源,申請資源是通過第四步,向ResourceScheler申請的
5:申請並領取資源後,它會找Nodemanager,告訴他我應經申請到了,然後Nodemanager判斷一下,
6:知道他申請到了以後就會啟動任務,當前啟動之前會准備好環境,
7:任務啟動以後會跟APplicationmaster進行通信,不斷的心跳進行任務的匯報。
8:完成以後會給RM進行匯報,讓RSM撤銷注冊。然後RSM就會回收資源。當然了,我們是分布式的,所以我們不會只跟自己的Nodemanager通信。也會跟其他的節點通信。