1. 程式人生 > >yarn架構調優,資料本地化

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公平模式是生產常用。小任務來了,大任務就讓點資源給你唄。