1. Enable YARN capacity scheduler
yarn-site.xml<property> <name>yarn.resourcemanager.scheduler.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value> </property>
2. Setup queues
The CapacityScheduler has a pre-defined queue called root. All queueus in the system are children of the root queue.The configuration for CapacityScheduler uses a concept called queue path to configure the hierarchy of queues. The queue path is the full path of the queue's hierarchy, starting at root, with . (dot) as the delimiter.
For example, below are 3 level queue path. (Yep, I = NBA fan.)
Starting at "root", "Spurs", "Heat" are the name of level 2 queue;
"Duncan", "Parker" are children of "Spurs", "James","Wade" are children of "Heat".
capacity-scheduler.xml
<property> <name>yarn.scheduler.capacity.root.queues</name> <value>Spurs,Heat</value> <description> Level 2: Children of "root" queue. </description> </property> <property> <name>yarn.scheduler.capacity.root.Spurs.queues</name> <value>Duncan,Parker</value> <description> Level 3: Children of "Spurs" queue. </description> </property> <property> <name>yarn.scheduler.capacity.root.Heat.queues</name> <value>James,Wade</value> <description> Level 3: Children of "Heat" queue. </description> </property>
3. Resource Allocation
Suppose Spurs beats Heat 60-40 in Finals.Duncan and Parker each got 50% points of Spurs total points;
James got 90% points of Heat total point while Wade only got 10%.
Please note that:
- The sum of capacities for all queues, at each level, must be equal to 100.
- Applications in the queue may consume more resources than the queue's capacity if there are free resources, providing elasticity.
<property> <name>yarn.scheduler.capacity.root.Spurs.capacity</name> <value>60</value> <description>Spurs won with 60% points.</description> </property> <property> <name>yarn.scheduler.capacity.root.Spurs.Duncan.capacity</name> <value>50</value> <description>Duncan is never old, and got 50% Spurs total points.</description> </property> <property> <name>yarn.scheduler.capacity.root.Spurs.Parker.capacity</name> <value>50</value> <description>Parker got 50% Spurs total points.</description> </property> <property> <name>yarn.scheduler.capacity.root.Heat.capacity</name> <value>40</value> <description>Heat only got 40% points.</description> </property> <property> <name>yarn.scheduler.capacity.root.Heat.James.capacity</name> <value>90</value> <description>James got 90% Heat total points.</description> </property> <property> <name>yarn.scheduler.capacity.root.Heat.Wade.capacity</name> <value>10</value> <description>Wade only got 10% Heat total points.</description> </property>
4. Activate Queues
Imagine in 2024, Duncan and Parker are still fighting together in Spurs, while James and Wade already got retired.capacity-scheduler.xml
<property> <name>yarn.scheduler.capacity.root.Spurs.state</name> <value>RUNNING</value> <description> The state of the Spurs queue. State can be one of RUNNING or STOPPED. </description> </property> <property> <name>yarn.scheduler.capacity.root.Heat.state</name> <value>RUNNING</value> </property> <property> <name>yarn.scheduler.capacity.root.Spurs.Duncan.state</name> <value>RUNNING</value> </property> <property> <name>yarn.scheduler.capacity.root.Spurs.Parker.state</name> <value>RUNNING</value> </property> <property> <name>yarn.scheduler.capacity.root.Heat.James.state</name> <value>STOPPED</value> </property> <property> <name>yarn.scheduler.capacity.root.Heat.Wade.state</name> <value>STOPPED</value> </property>
5. Control Access to Queues
Property acl_submit_applications can be set to "user1,user2 group1,group".Or "*" (asterisk) to allow access to all users and groups, Or " " (space character) to block access to all users and groups.
<property> <name>yarn.scheduler.capacity.root.acl_submit_applications</name> <value>hadoop,yarn,mapred,hdfs</value> <description> The ACL of who can submit jobs to the root queue. </description> </property> <property> <name>yarn.scheduler.capacity.root.Spurs.acl_submit_applications</name> <value>tim,tony</value> </property> <property> <name>yarn.scheduler.capacity.root.Heat.acl_administer_queue</name> <value>lebron,dwyane</value> </property> <property> <name>yarn.scheduler.capacity.root.Spurs.Duncan.acl_submit_applications</name> <value>tim</value> </property> <property> <name>yarn.scheduler.capacity.root.Spurs.Parker.acl_submit_applications</name> <value>tony</value> </property> <property> <name>yarn.scheduler.capacity.root.Heat.James.acl_submit_applications</name> <value>lebron</value> </property> <property> <name>yarn.scheduler.capacity.root.Heat.Wade.acl_submit_applications</name> <value>dwyane</value> </property>
6. User Resource Limit of Queue
yarn.scheduler.capacity.<queue path>.minimum-user-limit-percentSuppose it is set to 25.
1 user | This user can get 100% queue capacity. |
2 users | Each user can get 50% queue capacity at most. |
3 users | Each user can get 33% queue capacity at most. |
4 users | Each user can get 25% queue capacicy at most. |
5 users | 5th user must wait for resource to be freed. |
7. User Resource Hard Limit.
yarn.scheduler.capacity.<queue path>.user-limit-factorDifferent values means:
1 | Any user can only occupy at most the queue's configured capacity. |
2 | Any user can only occupy at most twice of queue's configured capacity. |
0.5 | Any user can only occupy at most half of queue's configured capacity. |
This can avoid one queue growing to a monster.
8. Refresh Queues
yarn rmadmin -refreshQueues
9. Show queues
[root@hdm]# mapred queue -list ====================== Queue Name : Heat Queue State : running Scheduling Info : Capacity: 40.0, MaximumCapacity: 1.0, CurrentCapacity: 0.0 ====================== Queue Name : James Queue State : stopped Scheduling Info : Capacity: 90.0, MaximumCapacity: 1.0, CurrentCapacity: 0.0 ====================== Queue Name : Wade Queue State : stopped Scheduling Info : Capacity: 10.0, MaximumCapacity: 1.0, CurrentCapacity: 0.0 ====================== Queue Name : Spurs Queue State : running Scheduling Info : Capacity: 60.000004, MaximumCapacity: 1.0, CurrentCapacity: 0.0 ====================== Queue Name : Duncan Queue State : running Scheduling Info : Capacity: 50.0, MaximumCapacity: 1.0, CurrentCapacity: 0.0 ====================== Queue Name : Parker Queue State : stopped Scheduling Info : Capacity: 50.0, MaximumCapacity: 1.0, CurrentCapacity: 0.0
10. Show user ACLs
[tim@hdm ~]$ mapred queue -showacls
Queue acls for user : tim
Queue Operations
=====================
root ADMINISTER_QUEUE
Heat ADMINISTER_QUEUE
James ADMINISTER_QUEUE
Wade ADMINISTER_QUEUE
Spurs ADMINISTER_QUEUE,SUBMIT_APPLICATIONS
Duncan ADMINISTER_QUEUE,SUBMIT_APPLICATIONS
Parker ADMINISTER_QUEUE,SUBMIT_APPLICATIONS
If Kerberos is enabled, below steps need to be done firstly:Firstly go to KDC host to create the principal for user "tim":
[root@admin ~]# kadmin.local Authenticating as principal root/admin@OPENKBINFO.COM with password. kadmin.local: addprinc tim WARNING: no policy specified for tim@OPENKBINFO.COM; defaulting to no policy Enter password for principal "tim@OPENKBINFO.COM": Re-enter password for principal "tim@OPENKBINFO.COM": Principal "tim@OPENKBINFO.COM" created.Then go to "hdm" logon "tim" user:
[root@hdm ]# su - tim
[tim@hdm ~]# kinit
Password for tim@OPENKBINFO.COM:
11. Test Yarn Job
Using "-D mapreduce.job.queuename=<Queue name>" to submit the job to the queue.hadoop fs -rmr /tmp/test_input
hadoop fs -mkdir /tmp/test_input
hadoop fs -rmr /user/tim/test_output
hadoop fs -copyFromLocal /usr/lib/gphd/hadoop/CHANGES.txt /tmp/test_input
yarn jar /usr/lib/gphd/hadoop-mapreduce/hadoop-mapreduce-examples.jar wordcount -D mapreduce.job.queuename=Duncan /tmp/test_input /user/tim/test_output
hadoop fs -cat /user/tim/test_output/part*
If you try to submit to wrong queues, below error will show up:ERROR security.UserGroupInformation: PriviledgedActionException as:tim@OPENKBINFO.COM (auth:KERBEROS) cause:java.io.IOException: Failed to run job : org.apache.hadoop.security.AccessControlException: User tim cannot submit applications to queue root.Heat.James java.io.IOException: Failed to run job : org.apache.hadoop.security.AccessControlException: User tim cannot submit applications to queue root.Heat.James
C501AE622C
ReplyDeletekiralık hacker
hacker arıyorum
belek
kadriye
serik
03531C5684
ReplyDeleteTakipçi Satın Al
Whiteout Survival Hediye Kodu
Google Konum Ekleme
Danone Sürpriz Kodları
War Robots Hediye Kodu