yarn的誕生:hadoop1.x版本JobTracker的作用是資源管理和任務的調度,當存在多個計算框架時,比如說spark,如果兩個計算框架都有着自己的資源管理模塊,就會存在資源競爭,不便於管理。此時就需要一個公共的資源管理模塊,這就產生了YARN.
hadoop2.x上的mapreduce是基於YARN 的,YARN支持多個計算框架,就比如說剛才說的SPARk.
YARN的工作原理圖:
Yarn上可以支持多個計算框架(MapReduce,spark)
Yarn上的每一個Node Manager 都與每一個dataNode與之對應
Yarn原理過程:
一個客戶端A向resource manager 提交請求,resource manager就會會產生一個application master(相當於mapreduce1.x中的jobTracker中的調度模塊),resource manager會在hdfs中獲取split的信息(被切成了多少塊),然后向resource manager申請有多少個mapTask,然后resource manager 會產生多個Container分布在多個節點上(分布在哪個節點上由resource manager控制)
一個客戶端B向resource manager 提交請求,resource manager又會會產生一個application master(相當於mapreduce1.x中的jobTracker中的調度模塊),resource manager會在hdfs中獲取split的信息(被切成了多少塊),然后向resource manager申請有多少個mapTask,然后resource manager 會產生多個Container(默認占用空間1個G)分布在多個節點上(分布在哪個節點上由resource manager控制)
Resource manager 又會存在單點故障,此時又需要用到ha來實現高可用性。
mapTask 和 reduceTask都是在節點上的container上運行的。
將yarn配置好后,執行hadoop上的mapreduce例子,進行簡單的測試。
Hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /usr/root/text.txt /data/wc/output
注意:/data/wc/output目錄必須是空的,或者不存在的。否則的話,hadoop會報錯。
下面是yarn-site.xml的配置:
|
Mapred-site.xml文件中的配置:
<configuration> <!—mapreduce 基於yarn來實現離線計算的,基礎開關 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> |