spark on yarn 的資源排程器設定.
最近一段時間 發現了一個問題. 就是即便在整個叢集 不忙的時候, 也會某幾個節點, 會被spark on yarn 的任務跑滿.
而不是把任務均勻的分配到到多幾個節點上.
百思不解.
於是開始各個方面的調查. 從spark 方面沒有發現什麼問題. 回過頭來看yarn .
發現原來使我們的資源排程的配置上有點問題.
<property>
<name>yarn.scheduler.capacity.resource-calculator</name>
<!--value>org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator</value-->
<value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
<description>
The ResourceCalculator implementation to be used to compare
Resources in the scheduler.
The default i.e. DefaultResourceCalculator only uses Memory while
DominantResourceCalculator uses dominant-resource to compare
multi-dimensional resources such as Memory, CPU etc.
</description>
</property>
問題就出在這裡了. default 排程器, 只關注node 的記憶體 情況, 根據記憶體情況來分派任務.
這就是導致, 如果一個spark 任務向yarn 申請container 的時候, yarn 只關注了 某幾個點的記憶體情況.
如果記憶體滿足 spark 的要求, 就可能把所有的container 都分派到一個node 去,導致這個node 節點 負載飈高.
比如 spark 申請 10個 1g 記憶體的container . 然後 yarn 發現有2個節點 各有5g 空閒記憶體, 但是卻只有3個cpu 空閒.
那麼可能就會只有這倆node 來跑這10個container , 而不是把10個container 分配到10個node上去.
然後就出現我們前面說的情況. 記憶體充足但是cpu不足. 導致spark 的container 只有3個在執行. 另外倆個要等待 .
然後就出現我們前面說的情況. 記憶體充足但是cpu不足. 導致spark 的container 只有3個在執行. 另外倆個要等待 .
這也符合我們前面看到的現象.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-2135645/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Spark篇】---Spark資源排程和任務排程Spark
- Spark - [03] 資源排程模式Spark模式
- 不可不知的資源管理排程器Hadoop YarnHadoopYarn
- Spark中資源排程和任務排程Spark
- 【深入淺出 Yarn 架構與實現】5-3 Yarn 排程器資源搶佔模型Yarn架構模型
- spark排程管理Spark
- 【Spark篇】---Spark中資源和任務排程原始碼分析與資源配置引數應用Spark原始碼
- 備忘:npm 和 yarn 的常用源設定NPMYarn
- spark on yarn 資料插入mysqlSparkYarnMySql
- 稀疏感知&稀疏預定義資料排程器
- Spark on Yarn 和Spark on MesosSparkYarn
- Spark UI (基於Yarn) 分析與定製SparkUIYarn
- 12 Spark on YARNSparkYarn
- hive on spark on yarnHiveSparkYarn
- Spark中shuffle的觸發和排程Spark
- 5、基礎篇-資源排程
- Flink排程之排程器、排程策略、排程模式模式
- Spark on Yarn 實踐SparkYarn
- Spark:Yarn-client與Yarn-clusterSparkYarnclient
- 用海豚排程器定時排程從Kafka到HDFS的kettle任務指令碼Kafka指令碼
- Hadoop YARN:排程效能最佳化實踐HadoopYarn
- 學習Hadoop生態第一步:Yarn基本原理和資源排程解析!HadoopYarn
- Android系統“資源排程框架”Android框架
- spark 與 yarn 結合SparkYarn
- 搭建spark on yarn 叢集SparkYarn
- Spark on Yarn 環境搭建SparkYarn
- 排程器簡介,以及Linux的排程策略Linux
- Pod的排程是由排程器(kube-scheduler)
- 深入理解Yarn的架構及作業排程機制Yarn架構
- Go排程器系列(2)巨集觀看排程器Go
- 虛擬機器搭建的資源分配設定虛擬機
- 學習Timer類,定製自己的排程器
- 開源專案推薦 - 巨鯨任務排程平臺(Spark、Flink)Spark
- k8s預設排程器關於pod申請資源過濾的原始碼細節K8S原始碼
- Hadoop 系列(二)—— 叢集資源管理器 YARNHadoopYarn
- Spark開發-Yarn cluster模式SparkYarn模式
- Go語言排程器之主動排程(20)Go
- Go排程器系列(3)圖解排程原理Go圖解