yarn架構調優,資料本地化
yarn的指令
在/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/bin
路徑下
,執行jar包。
yarn jar ./share/hadoop/mapreduce2/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount /ruozedata /output5
yarn jar也等同於hadoop jar
yarn 和mapred其實功能相似,之所以用yarn是因為yarn 不光光執行MR ,還有Hive 和Spark,可統一使用。
mapred job -list -kill job-id yarn application -kill <Application ID> Kills the application. -list
container調優
詳情可看http://blog.itpub.net/30089851/viewspace-2127851/
何為container?
Container:容器 Yarn的資源的抽象,
封裝了某個節點的多維度資源,如記憶體 cpu,磁碟,網路
當AM向RM申請資源時,RM為AM返回的資源就是使用container來標識
資源分配
假設電腦有48G記憶體可以分配。分配方式如下:
25%給Linux ,最低15%
75%給大資料程序 : 36G記憶體 大資料程序,dn和nm部署在一臺機上,不同機器要網路io傳輸,這就是資料本地化。
DN程序: 配置4G記憶體 在hadoop-env.sh設定 重啟生效
最大最小記憶體
export HADOOP_DATANODE_OPTS="-Xms2048m -Xmx2048m $HADOOP_DATANODE_OPTS"
NM: 2G 在yarn-env.sh配置
YARN_OPTS="$YARN_OPTS -Xms2048m -Xmx2048m"
配置後
還剩: 36-4-2=30G 是給容器的
這30G的是所有容器的記憶體
假如一個container裝3G,可以有10個container
30G 1
想要設定這個,在yarn-env.sh配置
常規設定
yarn.nodemanager.resource.memory-mb 30G yarn.scheduler.minimum-allocation-mb 2G yarn.scheduler.maximum-allocation-mb 30G
一開始設2g,後面視情況慢慢漲
2g—》15g—》30G OOM
yarn.nodemanager.pmem-check-enabled true 實體記憶體,超出會kill容器 其任務也kill
yarn.nodemanager.vmem-pmem-ratio 2.1 1m pvmen-->2.1m vmen
yarn.nodemanager.vmem-check-enabled true 虛擬記憶體,
虛擬cpu
vcore:虛擬cpu的core yarn自己引入的新概念
電腦 i5 4core
電腦 i7 4core
同樣是1個core,效能不一樣,用虛擬core的方式可提高cpu資源配用的合理性
yarn.nodemanager.resource.cpu-vcores 12
yarn.scheduler.minimum-allocation-vcores 1 The minimum allocation for every container request at the RM, in terms of virtual CPU cores. Requests lower than this will throw a InvalidResourceRequestException.
yarn.scheduler.maximum-allocation-vcores 12
Yarn的排程器
分為:FIFO,Capacity,Fair三種模式
縱軸是資源利用,橫軸是時間。
1.FIFO先進先出模式要排隊的,前面的沒執行完,後面的沒法執行。
2.Capacity Scheduler 計算模式,相當於給其他 程序開一個一直存在的佇列,資源利用不高。
3.Fair Scheduler公平模式是生產常用。小任務來了,大任務就讓點資源給你唄。