1. 程式人生 > 其它 >大資料基礎之YARN

大資料基礎之YARN

https://hadoop.apache.org
A framework for job scheduling and cluster resource management.

一 部署

角色

ResourceManager、NodeManager

客戶端

Job、AppMaster、Container

AppMaster是一個YARN job執行時第一個由ResourceManager啟動的container,然後負責整個job的執行,包括container的申請、啟動、kill、狀態檢查等。
每種型別的job都需要提供自己的AppMaster。
YARN只提供了MapReduce型別job的AppMaster。

Spark on YARN的AppMaster:

org.apache.spark.deploy.yarn.ApplicationMaster

HA

zk節點

/yarn-leader-election/${yarn.resourcemanager.cluster-id}/ActiveBreadCrumb
/yarn-leader-election/${yarn.resourcemanager.cluster-id}/ActiveStandbyElectorLock

程式碼:

org.apache.hadoop.yarn.server.resourcemanager.EmbeddedElectorService

二 常用命令

yarn node
yarn queue -status root
yarn top
yarn application -list -appStates ALL -appTypes MapReduce|more
yarn rmadmin
yarn logs -applicationid=$applicationId

三 資源管理

計算資源

CPU、記憶體

管理

queue
scheduler

  • FIFO:先進先出
  • Capacity:按百分比配置
  • Fair:按具體的核數和記憶體數配置

四 API

http://:8088$ip/ws/v1/cluster/metrics
http://:8088$ip/ws/v1/cluster/scheduler


http://:8088$ip/ws/v1/cluster/apps

通過API獲取指標之後對接ELK

五 資料本地性 Data Locality

Moving Computation is Cheaper than Moving Data

Spark Task分配過程

job->stage-task
resourceOffer會呼叫getAllowedLocalityLevel來獲取當前允許啟動任務的locality級別,getAllowedLocalityLevel內部通過時間delay以及是否有更多task來控制允許哪些級別,比如一開始只允許PROCESS_LOCAL級別,delay一段時間之後,再允許啟動PROCESS_LOCAL和NODE_LOCAL級別的task

Data Locality等級:PROCESS_LOCAL, NODE_LOCAL, NO_PREF, RACK_LOCAL, ANY
配置:spark.locality.wait

Impala

Efficiently retrieving data from HDFS is a challenge for all SQL-on-Hadoop systems. In order to perform data scans from both disk and memory at or near hardware speed, Impala uses an HDFS feature called short-circuit local reads to bypass the DataNode protocol when reading from local disk. Impala can read at almost disk bandwidth (approx.100MB/s per disk) and is typically able to saturate all available disks. We have measured that with 12 disks, Impala is capable of sustaining I/O at 1.2GB/sec.