Spark on mesos的坑以及解決辦法
該文章寫於spark1.6.2版本。
由於Fine mode對短任務效能影響過大,所以採用的是Coarse mode方式進行排程。
主要的一些問題:
-
1.6版本開始dynamic allocation無法使用
例如spark-shell之類的程式,空閒時期資源長期佔用卻無法釋放,造成資源利用率低下。
-
單個slave上無法啟動多個executor
每個mesos slave上一個application只能啟動一個executor。帶來的問題是,如果你的slave是<20 cores,100G RAM>,一個需求<20 cores,10G RAM>的application就會將其資源用光,造成90G RAM的浪費。
具體可參考http://www.jianshu.com/p/27762a1f9b7b -
每個executor使用的cpu數量不可控
例如某個application申請<5 cores,10G RAM>,如果每個slave只有4 cores,就會造成出現的兩個executor,一個是<4 cores,10G RAM>,另一個是<1 core, 10G RAM>。
因為一個executor執行了過多的task,在記憶體不足的情況下就非常容易造成OOM,長時間GC等問題。
具體可參考http://www.jianshu.com/p/27762a1f9b7b blockmgr沒有自動刪除
大量佔用磁碟空間
這些問題都在2.0中得到了解決,但是2.0的改動較大,涉及到大量程式的修改,所以就將如下的改進和bugfix都合到了1.6.2上,重新build了一個版本,問題解決。
已有的解決方案:
- [SPARK-12330][MESOS] Fix mesos coarse mode cleanup
- [SPARK-13002][MESOS] Send initial request of executors for dyn allocation
- [SPARK-5095][MESOS] Support launching multiple mesos executors in coarse grained mesos mode.
- [SPARK-12583][MESOS] Mesos shuffle service: Don't delete shuffle files before application has stopped
- [SPARK-13001][CORE][MESOS] Prevent getting offers when reached max cores
修復後的叢集濟源利用率
修改後的叢集負載情況(ganglia):
![1832028-20af74b0cb2b3772](https://i.iter01.com/images/3cf6f81b4bb7dba0f5a3991658169a503247481ab8b8180af808a041a2f325ba.jpg)
這裡寫圖片描述
修改後的叢集負載情況(ganglia):
![1832028-7045a8d5179316dc](https://i.iter01.com/images/7c55ca88fcea8c6330964505b26a668529fea29bc78d378cd54b4f853173b170.jpg)
這裡寫圖片描述
相關文章
- Spark on Yarn 和Spark on MesosSparkYarn
- ScrollView巢狀ListView解決辦法以及原理View巢狀
- ☕【Java實戰系列】「技術盲區」Double與Float的坑與解決辦法以及BigDecimal的取而代之!JavaDecimal
- Authentication failure 以及xxx is not in the sudoers file 問題的解決辦法AI
- 你遇到過的相容性問題以及解決辦法
- WSL中配置EDA環境:遇到的問題以及解決辦法
- 公寓噪音的解決辦法
- MySQL組複製的幾個常見問題以及解決辦法MySql
- 過擬合和欠擬合以及相對應的解決辦法
- Android開發過程中遇到的問題以及解決辦法 how toAndroid
- vue-awesome-swiper元件使用的一些小坑兒及解決辦法Vue元件
- 踩坑日誌--CEPH叢集常見問題解決辦法
- 【ASK_ORACLE】Oracle RAC報錯“ipc send timeout”的原因以及解決辦法Oracle
- github慢解決辦法Github
- Namespoace Terminating 解決辦法
- xxx 不是內部或外部命令解決辦法以及npm配置NPM
- 網站上傳漏洞掃描與檢測 以及webshell解決辦法網站Webshell
- java多執行緒程式設計問題以及解決辦法Java執行緒程式設計
- .Net Core3.1中SameSite的使用方法、遇到的問題以及解決辦法
- 檔案無法粉碎解決辦法
- Vue 下 ESLint 的 error 解決辦法VueEsLintError
- git報錯400的解決辦法Git
- celery Discarding revoked task: ... 的解決辦法
- Jenkins+tomcat自動釋出的熱部署/重啟及遇到的坑解決辦法JenkinsTomcat熱部署
- height:100%失效解決辦法
- jvm:jmap無法dump檔案的解決辦法JVM
- 內購支付踩過的坑以及自己的解決途徑
- 記vscode無法啟動解決辦法VSCode
- 【Spark篇】---Spark故障解決(troubleshooting)Spark
- puppeteer 安裝失敗的解決辦法
- ORA-01034: ORACLE not available的解決辦法OracleAI
- idea Git Force Checkout後的解決辦法IdeaGit
- ORA-04031的傻瓜解決辦法(轉)
- php json提交亂碼的解決辦法PHPJSON
- web前端陣列塌陷的解決辦法Web前端陣列
- PHP提示Notice: Undefined variable的解決辦法PHPUndefined
- git出現Permission denied的解決辦法Git
- 方差與偏差的解釋和解決辦法
- vs 擴充套件無法安裝的解決辦法套件