µ±Ç°Î»ÖãºÖ÷Ò³ > ²é¿´ÄÚÈÝ

Yarnµ÷¶ÈÆ÷(Scheduler)Ïê½â

·¢²¼Ê±¼ä£º2021-06-21 00:00| ÓРλÅóÓѲ鿴

¼ò½é£º±¾ÎÄתÔØ×Ô΢ÐŹ«Öںš¸Java´óÊý¾ÝÓëÊý¾Ý²Ö¿â¡¹£¬×÷ÕßÀ϶­¡£×ªÔر¾ÎÄÇëÁªÏµJava´óÊý¾ÝÓëÊý¾Ý²Ö¿â¹«Öںš£ Ŀ¼ 1. Yarnµ÷¶ÈÆ÷½éÉÜ FIFO(ÏȽøÏȳöµ÷¶ÈÆ÷) Capacity(ÈÝÁ¿µ÷¶ÈÆ÷) Fair(¹«Æ½µ÷¶ÈÆ÷) FairÓëCapacityÇø±ð 2.Yarnµ÷¶ÈÆ÷ÅäÖà Fair CapacityÅäÖÃ(ĬÈÏ¡­¡­

±¾ÎÄתÔØ×Ô΢ÐŹ«Öںš¸Java´óÊý¾ÝÓëÊý¾Ý²Ö¿â¡¹£¬×÷ÕßÀ϶­¡£×ªÔر¾ÎÄÇëÁªÏµJava´óÊý¾ÝÓëÊý¾Ý²Ö¿â¹«Öںš£ 

Ŀ¼

1. Yarnµ÷¶ÈÆ÷½éÉÜ

  • FIFO(ÏȽøÏȳöµ÷¶ÈÆ÷)
  • Capacity(ÈÝÁ¿µ÷¶ÈÆ÷)
  • Fair(¹«Æ½µ÷¶ÈÆ÷)
  • FairÓëCapacityÇø±ð

2.Yarnµ÷¶ÈÆ÷ÅäÖÃ

  • Fair
  • CapacityÅäÖÃ(ĬÈÏÅäÖÃ)
  • FIFO

ÀíÏëÇé¿öÏ£¬ÎÒÃÇÓ¦ÓöÔYarn×ÊÔ´µÄÇëÇóÓ¦¸ÃÁ¢¿ÌµÃµ½Âú×㣬µ«ÏÖʵÇé¿ö×ÊÔ´ÍùÍùÊÇÓÐÏ޵ģ¬ÌرðÊÇÔÚÒ»¸öºÜ·±Ã¦µÄ¼¯Èº£¬Ò»¸öÓ¦ÓÃ×ÊÔ´µÄÇëÇó¾­³£ÐèÒªµÈ´ýÒ»¶Îʱ¼ä²ÅÄܵĵ½ÏàÓ¦µÄ×ÊÔ´¡£ÔÚYarnÖУ¬¸ºÔð¸øÓ¦Ó÷ÖÅä×ÊÔ´µÄ¾ÍÊÇScheduler¡£Æäʵµ÷¶È±¾Éí¾ÍÊÇÒ»¸öÄÑÌ⣬ºÜÄÑÕÒµ½Ò»¸öÍêÃÀµÄ²ßÂÔ¿ÉÒÔ½â¾öËùÓеÄÓ¦Óó¡¾°¡£Îª´Ë£¬YarnÌṩÁ˶àÖÖµ÷¶ÈÆ÷ºÍ¿ÉÅäÖõIJßÂÔ¹©ÎÒÃÇÑ¡Ôñ¡£YARN¼Ü¹¹ÈçÏÂ:

  • ResourceManager(RM)£º¸ºÔð¶Ô¸÷NMÉϵÄ×ÊÔ´½øÐÐͳһ¹ÜÀíºÍµ÷¶È£¬½«AM·ÖÅä¿ÕÏеÄContainerÔËÐв¢¼à¿ØÆäÔËÐÐ״̬¡£¶ÔAMÉêÇëµÄ×ÊÔ´ÇëÇó·ÖÅäÏàÓ¦µÄ¿ÕÏÐContainer¡£Ö÷ÒªÓÉÁ½¸ö×é¼þ¹¹³É£ºµ÷¶ÈÆ÷(Scheduler)ºÍÓ¦ÓóÌÐò¹ÜÀíÆ÷(Applications Manager)¡£
  • µ÷¶ÈÆ÷(Scheduler)£ºµ÷¶ÈÆ÷¸ù¾ÝÈÝÁ¿¡¢¶ÓÁеÈÏÞÖÆÌõ¼þ(Èçÿ¸ö¶ÓÁзÖÅäÒ»¶¨µÄ×ÊÔ´£¬×î¶àÖ´ÐÐÒ»¶¨ÊýÁ¿µÄ×÷ÒµµÈ)£¬½«ÏµÍ³ÖеÄ×ÊÔ´·ÖÅä¸ø¸÷¸öÕýÔÚÔËÐеÄÓ¦ÓóÌÐò¡£µ÷¶ÈÆ÷½ö¸ù¾Ý¸÷¸öÓ¦ÓóÌÐòµÄ×ÊÔ´ÐèÇó½øÐÐ×ÊÔ´·ÖÅ䣬¶ø×ÊÔ´·ÖÅ䵥λÊÇContainer£¬´Ó¶øÏÞ¶¨Ã¿¸öÈÎÎñʹÓõÄ×ÊÔ´Á¿¡£Scheduler²»¸ºÔð¼à¿Ø»òÕ߸ú×ÙÓ¦ÓóÌÐòµÄ״̬£¬Ò²²»¸ºÔðÈÎÎñÒòΪ¸÷ÖÖÔ­Òò¶øÐèÒªµÄÖØÆô(ÓÉApplicationMaster¸ºÔð)¡£×ÜÖ®£¬µ÷¶ÈÆ÷¸ù¾ÝÓ¦ÓóÌÐòµÄ×ÊÔ´ÒªÇó£¬ÒÔ¼°¼¯Èº»úÆ÷µÄ×ÊÔ´Çé¿ö£¬ÎªÓóÌÐò·ÖÅä·â×°ÔÚContainerÖеÄ×ÊÔ´¡£µ÷¶ÈÆ÷Êǿɲå°ÎµÄ£¬ÀýÈçCapacityScheduler¡¢FairScheduler¡£(PS£ºÔÚʵ¼ÊÓ¦ÓÃÖУ¬Ö»ÐèÒª¼òµ¥ÅäÖü´¿É)
  • Ó¦ÓóÌÐò¹ÜÀíÆ÷(Application Manager)£ºÓ¦ÓóÌÐò¹ÜÀíÆ÷¸ºÔð¹ÜÀíÕû¸öϵͳÖÐËùÓÐÓ¦ÓóÌÐò£¬°üÀ¨Ó¦ÓóÌÐòÌá½»¡¢Óëµ÷¶ÈÆ÷ЭÉÌ×ÊÔ´ÒÔÆô¶¯AM¡¢¼à¿ØAMÔËÐÐ״̬²¢ÔÚʧ°ÜʱÖØÐÂÆô¶¯µÈ£¬¸ú×Ù·Ö¸øµÄContainerµÄ½ø¶È¡¢×´Ì¬Ò²ÊÇÆäÖ°Ôð¡£ApplicationMasterÊÇÓ¦Óÿò¼Ü£¬Ëü¸ºÔðÏòResourceManagerЭµ÷×ÊÔ´£¬²¢ÇÒÓëNodeManagerЭͬ¹¤×÷Íê³ÉTaskµÄÖ´Ðкͼà¿Ø¡£MapReduce¾ÍÊÇÔ­ÉúÖ§³ÖµÄÒ»ÖÖ¿ò¼Ü£¬¿ÉÒÔÔÚYARNÉÏÔËÐÐMapreduce×÷Òµ¡£Óкܶà·Ö²¼Ê½Ó¦Óö¼¿ª·¢Á˶ÔÓ¦µÄÓ¦ÓóÌÐò¿ò¼Ü£¬ÓÃÓÚÔÚYARNÉÏÔËÐÐÈÎÎñ£¬ÀýÈçSpark£¬StormµÈ¡£Èç¹ûÐèÒª£¬ÎÒÃÇÒ²¿ÉÒÔ×Ô¼ºÐ´Ò»¸ö·ûºÏ¹æ·¶µÄYARN application¡£
  • NodeManager(NM)£ºNMÊÇÿ¸ö½ÚµãÉϵÄ×ÊÔ´ºÍÈÎÎñ¹ÜÀíÆ÷¡£Ëü»á¶¨Ê±µØÏòRM»ã±¨±¾½ÚµãÉϵÄ×ÊԴʹÓÃÇé¿öºÍ¸÷¸öContainerµÄÔËÐÐ״̬;ͬʱ»á½ÓÊÕ²¢´¦ÀíÀ´×ÔAMµÄContainer Æô¶¯/Í£Ö¹µÈÇëÇó¡£ApplicationMaster(AM)£ºÓû§Ìá½»µÄÓ¦ÓóÌÐò¾ù°üº¬Ò»¸öAM£¬¸ºÔðÓ¦Óõļà¿Ø£¬¸ú×ÙÓ¦ÓÃÖ´ÐÐ״̬£¬ÖØÆôʧ°ÜÈÎÎñµÈ¡£
  • Container£ºÊÇYARNÖеÄ×ÊÔ´³éÏó£¬Ëü·â×°ÁËij¸ö½ÚµãÉϵĶàά¶È×ÊÔ´£¬ÈçÄÚ´æ¡¢CPU¡¢´ÅÅÌ¡¢ÍøÂçµÈ£¬µ±AMÏòRMÉêÇë×ÊԴʱ£¬RMΪAM·µ»ØµÄ×ÊÔ´±ãÊÇÓÃContainer ±íʾµÄ¡£YARN»áΪÿ¸öÈÎÎñ·ÖÅäÒ»¸öContainerÇÒ¸ÃÈÎÎñÖ»ÄÜʹÓøÃContainerÖÐÃèÊöµÄ×ÊÔ´¡£

1. Yarnµ÷¶ÈÆ÷½éÉÜ

1.1. FIFO (ÏȽøÏȳöµ÷¶ÈÆ÷)

FIFO Scheduler°ÑÓ¦Óð´Ìá½»µÄ˳ÐòÅųÉÒ»¸ö¶ÓÁУ¬ÕâÊÇÒ»¸öÏȽøÏȳö¶ÓÁУ¬ÔÚ½øÐÐ×ÊÔ´·ÖÅäµÄʱºò£¬Ïȸø¶ÓÁÐÖÐ×îÍ·ÉϵÄÓ¦ÓýøÐзÖÅä×ÊÔ´£¬´ý×îÍ·ÉϵÄÓ¦ÓÃÐèÇóÂú×ãºóÔÙ¸øÏÂÒ»¸ö·ÖÅ䣬ÒÔ´ËÀàÍÆ¡£FIFO SchedulerÊÇ×î¼òµ¥Ò²ÊÇ×îÈÝÒ×Àí½âµÄµ÷¶ÈÆ÷£¬Ò²²»ÐèÒªÈκÎÅäÖ㬵«Ëü²¢²»ÊÊÓÃÓÚ¹²Ïí¼¯Èº¡£´óµÄÓ¦ÓÿÉÄÜ»áÕ¼ÓÃËùÓм¯Èº×ÊÔ´£¬Õâ¾Íµ¼ÖÂÆäËüÓ¦Óñ»×èÈû¡£ÔÚ¹²Ïí¼¯ÈºÖУ¬¸üÊʺϲÉÓÃCapacity Scheduler»òFair Scheduler£¬ÕâÁ½¸öµ÷¶ÈÆ÷¶¼ÔÊÐí´óÈÎÎñºÍСÈÎÎñÔÚÌá½»µÄͬʱ»ñµÃÒ»¶¨µÄϵͳ×ÊÔ´¡£ÏÂÃæ“Yarnµ÷¶ÈÆ÷¶Ô±Èͼ”չʾÁËÕ⼸¸öµ÷¶ÈÆ÷µÄÇø±ð£¬´ÓͼÖпÉÒÔ¿´³ö£¬ÔÚFIFO µ÷¶ÈÆ÷ÖУ¬Ð¡ÈÎÎñ»á±»´óÈÎÎñ×èÈû¡£

1.2. Capacity (ÈÝÁ¿µ÷¶ÈÆ÷)

yarn-site.xmlÖÐĬÈÏÅäÖõÄ×ÊÔ´µ÷¶ÈÆ÷¡£¶ø¶ÔÓÚCapacityµ÷¶ÈÆ÷£¬ÓÐÒ»¸öרÃŵĶÓÁÐÓÃÀ´ÔËÐÐСÈÎÎñ£¬µ«ÊÇΪСÈÎÎñרÃÅÉèÖÃÒ»¸ö¶ÓÁлáÔ¤ÏÈÕ¼ÓÃÒ»¶¨µÄ¼¯Èº×ÊÔ´£¬Õâ¾Íµ¼Ö´óÈÎÎñµÄÖ´ÐÐʱ¼ä»áÂäºóÓÚʹÓÃFIFOµ÷¶ÈÆ÷ʱµÄʱ¼ä¡£ÓÃÕâ¸ö×ÊÔ´µ÷¶ÈÆ÷£¬¾Í¿ÉÒÔÅäÖÃyarn×ÊÔ´¶ÓÁУ¬Õâ¸öºóÃæºó½éÉÜÓõ½¡£

1.3. Fair (¹«Æ½µ÷¶ÈÆ÷)

Fairµ÷¶ÈÆ÷µÄÉè¼ÆÄ¿±êÊÇΪËùÓеÄÓ¦Ó÷ÖÅ乫ƽµÄ×ÊÔ´(¶Ô¹«Æ½µÄ¶¨Òå¿ÉÒÔͨ¹ý²ÎÊýÀ´ÉèÖÃ)¡£ÔÚÉÏÃæµÄ“Yarnµ÷¶ÈÆ÷¶Ô±Èͼ”չʾÁËÒ»¸ö¶ÓÁÐÖÐÁ½¸öÓ¦ÓõĹ«Æ½µ÷¶È;µ±È»£¬¹«Æ½µ÷¶ÈÔÚÒ²¿ÉÒÔÔÚ¶à¸ö¶ÓÁм乤×÷¡£¾Ù¸öÀý×Ó£¬¼ÙÉèÓÐÁ½¸öÓû§AºÍB£¬ËûÃÇ·Ö±ðÓµÓÐÒ»¸ö¶ÓÁС£µ±AÆô¶¯Ò»¸öjob¶øBûÓÐÈÎÎñʱ£¬A»á»ñµÃÈ«²¿¼¯Èº×ÊÔ´;µ±BÆô¶¯Ò»¸öjobºó£¬AµÄjob»á¼ÌÐøÔËÐУ¬²»¹ýÒ»»á¶ùÖ®ºóÁ½¸öÈÎÎñ»á¸÷×Ô»ñµÃÒ»°ëµÄ¼¯Èº×ÊÔ´¡£Èç¹û´ËʱBÔÙÆô¶¯µÚ¶þ¸öjob²¢ÇÒÆäËüjob»¹ÔÚÔËÐУ¬ÔòËü½«»áºÍBµÄµÚÒ»¸öjob¹²ÏíBÕâ¸ö¶ÓÁеÄ×ÊÔ´£¬Ò²¾ÍÊÇBµÄÁ½¸öjob»áÓÃÓÚËÄ·ÖÖ®Ò»µÄ¼¯Èº×ÊÔ´£¬¶øAµÄjobÈÔÈ»ÓÃÓÚ¼¯ÈºÒ»°ëµÄ×ÊÔ´£¬½á¹û¾ÍÊÇ×ÊÔ´×îÖÕÔÚÁ½¸öÓû§Ö®¼äƽµÈµÄ¹²Ïí¡£ÔÚFairµ÷¶ÈÆ÷ÖУ¬ÎÒÃDz»ÐèÒªÔ¤ÏÈÕ¼ÓÃÒ»¶¨µÄϵͳ×ÊÔ´£¬Fairµ÷¶ÈÆ÷»áΪËùÓÐÔËÐеÄjob¶¯Ì¬µÄµ÷Õûϵͳ×ÊÔ´¡£µ±µÚÒ»¸ö´ójobÌύʱ£¬Ö»ÓÐÕâÒ»¸öjobÔÚÔËÐУ¬´ËʱËü»ñµÃÁËËùÓм¯Èº×ÊÔ´;µ±µÚ¶þ¸öСÈÎÎñÌá½»ºó£¬Fairµ÷¶ÈÆ÷»á·ÖÅäÒ»°ë×ÊÔ´¸øÕâ¸öСÈÎÎñ£¬ÈÃÕâÁ½¸öÈÎÎñ¹«Æ½µÄ¹²Ïí¼¯Èº×ÊÔ´¡£

a) ¹«Æ½µ÷¶ÈÆ÷£¬¾ÍÊÇÄܹ»¹²ÏíÕû¸ö¼¯ÈºµÄ×ÊÔ´

b) ²»ÓÃÔ¤ÏÈÕ¼ÓÃ×ÊÔ´£¬Ã¿Ò»¸ö×÷Òµ¶¼Êǹ²ÏíµÄ

c) ÿµ±Ìá½»Ò»¸ö×÷ÒµµÄʱºò£¬¾Í»áÕ¼ÓÃÕû¸ö×ÊÔ´¡£Èç¹ûÔÙÌá½»Ò»¸ö×÷Òµ£¬ÄÇôµÚÒ»¸ö×÷Òµ¾Í»á·Ö¸øµÚ¶þ¸ö×÷ÒµÒ»²¿·Ö×ÊÔ´£¬µÚÒ»¸ö×÷ÒµÒ²¾ÍÊÍ·ÅÒ»²¿·Ö×ÊÔ´¡£ÔÙÌá½»ÆäËûµÄ×÷ҵʱ£¬Ò²Í¬Àí¡£¡£¡£¡£Ò²¾ÍÊÇ˵ÿһ¸ö×÷Òµ½øÀ´£¬¶¼Óлú»á»ñÈ¡×ÊÔ´¡£

1.4. Fair SchedulerÓëCapacity SchedulerÇø±ð

  • ×ÊÔ´¹«Æ½¹²Ïí£ºÔÚÿ¸ö¶ÓÁÐÖУ¬Fair Scheduler¿ÉÑ¡Ôñ°´ÕÕFIFO¡¢Fair»òDRF²ßÂÔΪӦÓóÌÐò·ÖÅä×ÊÔ´¡£Fair²ßÂÔ¼´Æ½¾ù·ÖÅ䣬ĬÈÏÇé¿öÏ£¬Ã¿¸ö¶ÓÁвÉÓø÷½Ê½·ÖÅä×ÊÔ´
  • Ö§³Ö×ÊÔ´ÇÀÕ¼£ºµ±Ä³¸ö¶ÓÁÐÖÐÓÐÊ£Óà×ÊԴʱ£¬µ÷¶ÈÆ÷»á½«ÕâЩ×ÊÔ´¹²Ïí¸øÆäËû¶ÓÁУ¬¶øµ±¸Ã¶ÓÁÐÖÐÓÐеÄÓ¦ÓóÌÐòÌύʱ£¬µ÷¶ÈÆ÷ҪΪËü»ØÊÕ×ÊÔ´¡£ÎªÁ˾¡¿ÉÄܽµµÍ²»±ØÒªµÄ¼ÆËãÀË·Ñ£¬µ÷¶ÈÆ÷²ÉÓÃÁËÏȵȴýÔÙÇ¿ÖÆ»ØÊյIJßÂÔ£¬¼´Èç¹ûµÈ´ýÒ»¶Îʱ¼äºóÉÐÓÐδ¹é»¹µÄ×ÊÔ´£¬Ôò»á½øÐÐ×ÊÔ´ÇÀÕ¼;´ÓÄÇЩ³¬¶îʹÓÃ×ÊÔ´µÄ¶ÓÁÐÖÐɱËÀÒ»²¿·ÖÈÎÎñ£¬½ø¶øÊÍ·Å×ÊÔ´
  • ¸ºÔؾùºâ£ºFair SchedulerÌṩÁËÒ»¸ö»ùÓÚÈÎÎñÊýµÄ¸ºÔؾùºâ»úÖÆ£¬¸Ã»úÖƾ¡¿ÉÄܽ«ÏµÍ³ÖеÄÈÎÎñ¾ùÔÈ·ÖÅäµ½¸÷¸ö½ÚµãÉÏ¡£´ËÍ⣬Óû§Ò²¿ÉÒÔ¸ù¾Ý×Ô¼ºµÄÐèÇóÉè¼Æ¸ºÔؾùºâ»úÖÆ
  • µ÷¶È²ßÂÔÁé»îÅäÖãºFiar SchedulerÔÊÐí¹ÜÀíԱΪÿ¸ö¶ÓÁе¥¶ÀÉèÖõ÷¶È²ßÂÔ(µ±Ç°Ö§³ÖFIFO¡¢Fair»òDRFÈýÖÖ)
  • Ìá¸ßСӦÓóÌÐòÏìӦʱ¼ä£ºÓÉÓÚ²ÉÓÃÁË×î´ó×îС¹«Æ½Ëã·¨£¬Ð¡×÷Òµ¿ÉÒÔ¿ìËÙ»ñÈ¡×ÊÔ´²¢ÔËÐÐÍê³É

2.Yarnµ÷¶ÈÆ÷ÅäÖÃ

yarn×ÊÔ´µ÷¶ÈÆ÷ÊÇÔÚyarn-site.xmlÖÐÅäÖá£

2.1. Fair Scheduler

Fair SchedulerµÄÅäÖÃÑ¡Ïî°üÀ¨Á½²¿·Ö:

Ò»²¿·ÖÔÚyarn-site.xmlÖУ¬Ö÷ÒªÓÃÓÚÅäÖõ÷¶ÈÆ÷¼¶±ðµÄ²ÎÊý

Ò»²¿·ÖÔÚÒ»¸ö×Ô¶¨ÒåÅäÖÃÎļþ(ĬÈÏÊÇfair-scheduler.xml)ÖУ¬Ö÷ÒªÓÃÓÚÅäÖø÷¸ö¶ÓÁеÄ×ÊÔ´Á¿¡¢È¨ÖصÈÐÅÏ¢¡£

2.1.1 yarn-site.xml

yarn-site.xml½éÉÜ

  1. <!– scheduler start –> 
  2. <property> 
  3.     <name>yarn.resourcemanager.scheduler.class</name
  4.     <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value> 
  5.     <description>ÅäÖÃYarnʹÓõĵ÷¶ÈÆ÷²å¼þÀàÃû£»Fair Scheduler¶ÔÓ¦µÄÊÇ£ºorg.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</description> 
  6. </property> 
  7. <property> 
  8.     <name>yarn.scheduler.fair.allocation.file</name
  9.     <value>/etc/hadoop/conf/fair-scheduler.xml</value> 
  10.     <description>ÅäÖÃ×ÊÔ´³ØÒÔ¼°ÆäÊôÐÔÅä¶îµÄXMLÎļþ·¾¶£¨±¾µØ·¾¶£©</description> 
  11. </property> 
  12. <property> 
  13.     <name>yarn.scheduler.fair.preemption</name
  14.     <value>true</value> 
  15.     <description>¿ªÆô×ÊÔ´ÇÀÕ¼,default is True</description> 
  16. </property> 
  17. <property> 
  18.     <name>yarn.scheduler.fair.user-as-default-queue</name
  19.     <value>true</value> 
  20.     <description>ÉèÖóÉtrue£¬µ±ÈÎÎñÖÐδָ¶¨×ÊÔ´³ØµÄʱºò£¬½«ÒÔÓû§Ãû×÷Ϊ×ÊÔ´³ØÃû¡£Õâ¸öÅäÖþÍʵÏÖÁ˸ù¾ÝÓû§Ãû×Ô¶¯·ÖÅä×ÊÔ´³Ø¡£default is True</description> 
  21. </property> 
  22. <property> 
  23.     <name>yarn.scheduler.fair.allow-undeclared-pools</name
  24.     <value>false</value> 
  25.     <description>ÊÇ·ñÔÊÐí´´½¨Î´¶¨ÒåµÄ×ÊÔ´³Ø¡£Èç¹ûÉèÖóÉtrue£¬yarn½«»á×Ô¶¯´´½¨ÈÎÎñÖÐÖ¸¶¨µÄ䶨Òå¹ýµÄ×ÊÔ´³Ø¡£ÉèÖóÉfalseÖ®ºó£¬ÈÎÎñÖÐÖ¸¶¨µÄ䶨ÒåµÄ×ÊÔ´³Ø½«ÎÞЧ£¬¸ÃÈÎÎñ»á±»·ÖÅäµ½default×ÊÔ´³ØÖС£,default is True</description> 
  26. </property> 
  27. <!– scheduler end –> 

2.1.2 fair-scheduler.xml

¼ÙÉèÔÚÉú²ú»·¾³YarnÖУ¬×ܹ²ÓÐËÄÀàÓû§ÐèҪʹÓü¯Èº£¬production¡¢spark¡¢default¡¢streaming¡£ÎªÁËʹÆäÌá½»µÄÈÎÎñ²»ÊÜÓ°Ï죬ÎÒÃÇÔÚYarnÉϹ滮ÅäÖÃÁËËĸö×ÊÔ´³Ø£¬·Ö±ðΪproduction,spark,default,streaming¡£²¢¸ù¾Ýʵ¼ÊÒµÎñÇé¿ö£¬ÎªÃ¿¸ö×ÊÔ´³Ø·ÖÅäÁËÏàÓ¦µÄ×ÊÔ´¼°ÓÅÏȼ¶µÈ,defaultÓÃÓÚ¿ª·¢²âÊÔÄ¿µÄ.

ResourceManagerÉÏfair-scheduler.xmlÅäÖÃÈçÏ£º

  1. <?xml version="1.0"?> 
  2. <allocations> 
  3.     <queue name="root"
  4.         <aclSubmitApps></aclSubmitApps> 
  5.         <aclAdministerApps></aclAdministerApps> 
  6.         <queue name="production"
  7.             <minResources>8192mb,8vcores</minResources> 
  8.             <maxResources>419840mb,125vcores</maxResources> 
  9.             <maxRunningApps>60</maxRunningApps> 
  10.             <schedulingMode>fair</schedulingMode> 
  11.             <weight>7.5</weight> 
  12.             <aclSubmitApps>*</aclSubmitApps> 
  13.             <aclAdministerApps>production</aclAdministerApps> 
  14.         </queue> 
  15.         <queue name="spark"
  16.             <minResources>8192mb,8vcores</minResources> 
  17.             <maxResources>376480mb,110vcores</maxResources> 
  18.             <maxRunningApps>50</maxRunningApps> 
  19.             <schedulingMode>fair</schedulingMode> 
  20.             <weight>1</weight> 
  21.             <aclSubmitApps>*</aclSubmitApps> 
  22.             <aclAdministerApps>spark</aclAdministerApps> 
  23.         </queue> 
  24.         <queue name="default"
  25.             <minResources>8192mb,8vcores</minResources> 
  26.             <maxResources>202400mb,20vcores</maxResources> 
  27.             <maxRunningApps>20</maxRunningApps> 
  28.             <schedulingMode>FIFO</schedulingMode> 
  29.             <weight>0.5</weight> 
  30.             <aclSubmitApps>*</aclSubmitApps> 
  31.             <aclAdministerApps>*</aclAdministerApps> 
  32.         </queue> 
  33.         <queue name="streaming"
  34.             <minResources>8192mb,8vcores</minResources> 
  35.             <maxResources>69120mb,16vcores</maxResources> 
  36.             <maxRunningApps>20</maxRunningApps> 
  37.             <schedulingMode>fair</schedulingMode> 
  38.             <aclSubmitApps>*</aclSubmitApps> 
  39.             <weight>1</weight> 
  40.             <aclAdministerApps>streaming</aclAdministerApps> 
  41.         </queue> 
  42.     </queue> 
  43.     <user name="production"
  44.         <!-- ¶ÔÓÚÌض¨Óû§µÄÅäÖÃ:production×î¶à¿ÉÒÔͬʱÔËÐеÄÈÎÎñ --> 
  45.         <maxRunningApps>100</maxRunningApps> 
  46.     </user
  47.     <user name="default"
  48.         <!-- ¶ÔÓÚĬÈÏÓû§ÅäÖÃ×î¶à¿ÉÒÔͬʱÔËÐеÄÈÎÎñ --> 
  49.         <maxRunningApps>10</maxRunningApps> 
  50.     </user
  51.  
  52.     <!-- users max running apps --> 
  53.     <userMaxAppsDefault>50</userMaxAppsDefault> 
  54.     <!--ĬÈϵÄÓû§×î¶à¿ÉÒÔͬʱÔËÐеÄÈÎÎñ --> 
  55.     <queuePlacementPolicy> 
  56.         <rule name="specified"/>  
  57.         <rule name="primaryGroup" create="false" /> 
  58.         <rule name="secondaryGroupExistingQueue" create="false" /> 
  59.         <rule name="default" queue="default"/> 
  60.     </queuePlacementPolicy> 
  61. </allocations> 

²ÎÊý½éÉÜ:

  • minResources:×îÉÙ×ÊÔ´±£Ö¤Á¿£¬ÉèÖøñʽΪ“X mb, Y vcores”£¬µ±Ò»¸ö¶ÓÁеÄ×îÉÙ×ÊÔ´±£Ö¤Á¿Î´Âú×ãʱ£¬Ëü½«ÓÅÏÈÓÚÆäËûͬ¼¶¶ÓÁлñµÃ×ÊÔ´£¬¶ÔÓÚ²»Í¬µÄµ÷¶È²ßÂÔ(ºóÃæ»áÏêϸ½éÉÜ)£¬×îÉÙ×ÊÔ´±£Ö¤Á¿µÄº¬Ò岻ͬ£¬¶ÔÓÚfair²ßÂÔ£¬ÔòÖ»¿¼ÂÇÄÚ´æ×ÊÔ´£¬¼´Èç¹ûÒ»¸ö¶ÓÁÐʹÓõÄÄÚ´æ×ÊÔ´³¬¹ýÁËËüµÄ×îÉÙ×ÊÔ´Á¿£¬ÔòÈÏΪËüÒѵõ½ÁËÂú×ã;¶ÔÓÚdrf²ßÂÔ£¬Ôò¿¼ÂÇÖ÷×ÊԴʹÓõÄ×ÊÔ´Á¿£¬¼´Èç¹ûÒ»¸ö¶ÓÁеÄÖ÷×ÊÔ´Á¿³¬¹ýËüµÄ×îÉÙ×ÊÔ´Á¿£¬ÔòÈÏΪËüÒѵõ½ÁËÂú×ã¡£
  • maxResources:×î¶à¿ÉÒÔʹÓõÄ×ÊÔ´Á¿£¬fair scheduler»á±£Ö¤Ã¿¸ö¶ÓÁÐʹÓõÄ×ÊÔ´Á¿²»»á³¬¹ý¸Ã¶ÓÁеÄ×î¶à¿ÉʹÓÃ×ÊÔ´Á¿¡£
  • maxRunningApps:×î¶àͬʱÔËÐеÄÓ¦ÓóÌÐòÊýÄ¿¡£Í¨¹ýÏÞÖƸÃÊýÄ¿£¬¿É·ÀÖ¹³¬Á¿Map TaskͬʱÔËÐÐʱ²úÉúµÄÖмäÊä³ö½á¹û³Å±¬´ÅÅÌ¡£
  • weight:×ÊÔ´³ØȨÖØ,Ö÷ÒªÓÃÔÚ×ÊÔ´¹²Ïí֮ʱ£¬weightÔ½´ó£¬Äõ½µÄ×ÊÔ´Ô½¶à¡£±ÈÈçÒ»¸öpoolÖÐÓÐ20GBÄÚ´æÓò»ÁË£¬Õâʱºò¿ÉÒÔ¹²Ïí¸øÆäËûpool£¬ÆäËûÿ¸öpoolÄöàÉÙ£¬¾ÍÊÇÓÉȨÖؾö¶¨µÄ
  • aclSubmitApps:¿ÉÏò¶ÓÁÐÖÐÌá½»Ó¦ÓóÌÐòµÄLinuxÓû§»òÓû§×éÁÐ±í£¬Ä¬ÈÏÇé¿öÏÂΪ“*”£¬±íʾÈκÎÓû§¾ù¿ÉÒÔÏò¸Ã¶ÓÁÐÌá½»Ó¦ÓóÌÐò¡£ÐèҪעÒâµÄÊÇ£¬¸ÃÊôÐÔ¾ßÓм̳ÐÐÔ£¬¼´×Ó¶ÓÁеÄÁбí»á¼Ì³Ð¸¸¶ÓÁеÄÁÐ±í¡£ÅäÖøÃÊôÐÔʱ£¬Óû§Ö®¼ä»òÓû§×éÖ®¼äÓÓ£¬”·Ö¸î£¬Óû§ºÍÓû§×éÖ®¼äÓÿոñ·Ö¸î£¬±ÈÈç“user1, user2 group1,group2”¡£
  • aclAdministerApps:ÔÊÐí¹ÜÀíÈÎÎñµÄÓû§ÃûºÍ×é;Ò»¸ö¶ÓÁеĹÜÀíÔ±¿É¹ÜÀí¸Ã¶ÓÁÐÖеÄ×ÊÔ´ºÍÓ¦ÓóÌÐò£¬±ÈÈç¿ÉɱËÀÈÎÒâÓ¦ÓóÌÐò¡£
  • minSharePreemptionTimeout £º×îС¹²ÏíÁ¿ÇÀռʱ¼ä¡£Èç¹ûÒ»¸ö×ÊÔ´³ØÔÚ¸Ãʱ¼äÄÚʹÓõÄ×ÊÔ´Á¿Ò»Ö±µÍÓÚ×îС×ÊÔ´Á¿£¬Ôò¿ªÊ¼ÇÀÕ¼×ÊÔ´¡£
  • schedulingMode/schedulingPolicy£º¶ÓÁвÉÓõĵ÷¶Èģʽ£¬¿ÉÒÔÊÇfifo¡¢fair»òÕßdrf¡£
  • ¹ÜÀíÔ±Ò²¿ÉΪµ¥¸öÓû§Ìí¼ÓmaxRunningJobsÊôÐÔÏÞÖÆÆä×î¶àͬʱÔËÐеÄÓ¦ÓóÌÐòÊýÄ¿¡£´ËÍ⣬¹ÜÀíÔ±Ò²¿Éͨ¹ýÒÔϲÎÊýÉèÖÃÒÔÉÏÊôÐÔµÄĬÈÏÖµ£º
  • userMaxJobsDefault£ºÓû§µÄmaxRunningJobsÊôÐÔµÄĬÈÏÖµ¡£
  • defaultMinSharePreemptionTimeout £º¶ÓÁеÄminSharePreemptionTimeoutÊôÐÔµÄĬÈÏÖµ¡£
  • defaultPoolSchedulingMode£º¶ÓÁеÄschedulingModeÊôÐÔµÄĬÈÏÖµ¡£
  • fairSharePreemptionTimeout£º¹«Æ½¹²ÏíÁ¿ÇÀռʱ¼ä¡£Èç¹ûÒ»¸ö×ÊÔ´³ØÔÚ¸Ãʱ¼äÄÚʹÓÃ×ÊÔ´Á¿Ò»Ö±µÍÓÚ¹«Æ½¹²ÏíÁ¿µÄÒ»°ë£¬Ôò¿ªÊ¼ÇÀÕ¼×ÊÔ´¡£

ÕâÑù£¬Ã¿¸öÓû§×éϵÄÓû§Ìá½»ÈÎÎñʱºò£¬»áµ½ÏàÓ¦µÄ×ÊÔ´³ØÖУ¬¶ø²»Ó°ÏìÆäËûÒµÎñ¡£¶ÓÁеIJã´ÎÊÇͨ¹ýǶÌ×

ÔªËØʵÏֵġ£ËùÓеĶÓÁж¼ÊÇroot¶ÓÁеĺ¢×Ó£¬¼´Ê¹Ã»ÓÐÅäµ½ÔªËØÀï¡£Fairµ÷¶ÈÆ÷ÖеĶÓÁÐÓÐÒ»¸öȨÖØÊôÐÔ(Õâ¸öȨÖؾÍÊǶԹ«Æ½µÄ¶¨Òå)£¬²¢°ÑÕâ¸öÊôÐÔ×÷Ϊ¹«Æ½µ÷¶ÈµÄÒÀ¾Ý¡£ÔÚÕâ¸öÀý×ÓÖУ¬µ±µ÷¶ÈÆ÷·ÖÅ伯Ⱥ7.5,1,1,0.5×ÊÔ´¸øproduction,spark,streaming,defaultʱ±ãÊÓ×÷¹«Æ½,ÕâÀïµÄȨÖز¢²»Êǰٷֱȡ£×¢Ò⣬¶ÔÓÚÔÚûÓÐÅäÖÃÎļþʱ°´Óû§×Ô¶¯´´½¨µÄ¶ÓÁУ¬ËüÃÇÈÔÓÐȨÖز¢ÇÒȨÖØֵΪ1¡£Ã¿¸ö¶ÓÁÐÄÚ²¿ÈÔ¿ÉÒÔÓв»Í¬µÄµ÷¶È²ßÂÔ¡£¶ÓÁеÄĬÈϵ÷¶È²ßÂÔ¿ÉÒÔͨ¹ý¶¥¼¶ÔªËؽøÐÐÅäÖã¬Èç¹ûûÓÐÅäÖã¬Ä¬ÈϲÉÓù«Æ½µ÷¶È¡£¾¡¹ÜÊÇFairµ÷¶ÈÆ÷£¬ÆäÈÔÖ§³ÖÔÚ¶ÓÁ춱ð½øÐÐFIFOµ÷¶È¡£Ã¿¸ö¶ÓÁеĵ÷¶È²ßÂÔ¿ÉÒÔ±»ÆäÄÚ²¿µÄÔªËظ²¸Ç£¬ÔÚÉÏÃæÕâ¸öÀý×ÓÖУ¬default¶ÓÁоͱ»Ö¸¶¨²ÉÓÃfifo½øÐе÷¶È£¬ËùÒÔ£¬¶ÔÓÚÌá½»µ½default¶ÓÁеÄÈÎÎñ¾Í¿ÉÒÔ°´ÕÕFIFO¹æÔò˳ÐòµÄÖ´ÐÐÁË¡£ÐèҪעÒ⣬spark,production,streaming,defaultÖ®¼äµÄµ÷¶ÈÈÔÈ»Êǹ«Æ½µ÷¶È¡£Ã¿¸ö¶ÓÁпÉÅäÖÃ×î´ó¡¢×îС×ÊÔ´Õ¼ÓÃÊýºÍ×î´ó¿ÉÔËÐеÄÓ¦ÓõÄÊýÁ¿¡£

Fairµ÷¶ÈÆ÷²ÉÓÃÁËÒ»Ì×»ùÓÚ¹æÔòµÄϵͳÀ´È·¶¨Ó¦ÓÃÓ¦¸Ã·Åµ½Äĸö¶ÓÁС£ÔÚÉÏÃæµÄÀý×ÓÖУ¬ÔªËض¨ÒåÁËÒ»¸ö¹æÔòÁÐ±í£¬ÆäÖеÄÿ¸ö¹æÔò»á±»Öð¸ö³¢ÊÔÖ±µ½Æ¥Åä³É¹¦¡£ÀýÈ磬ÉÏÀýµÚÒ»¸ö¹æÔòspecified£¬Ôò»á°ÑÓ¦Ó÷ŵ½ËüÖ¸¶¨µÄ¶ÓÁÐÖУ¬ÈôÕâ¸öÓ¦ÓÃûÓÐÖ¸¶¨¶ÓÁÐÃû»ò¶ÓÁÐÃû²»´æÔÚ£¬Ôò˵Ã÷²»Æ¥ÅäÕâ¸ö¹æÔò£¬È»ºó³¢ÊÔÏÂÒ»¸ö¹æÔò¡£primaryGroup¹æÔò»á³¢ÊÔ°ÑÓ¦Ó÷ÅÔÚÒÔÓû§ËùÔÚµÄUnix×éÃûÃüÃûµÄ¶ÓÁÐÖУ¬Èç¹ûûÓÐÕâ¸ö¶ÓÁУ¬²»´´½¨¶ÓÁÐת¶ø³¢ÊÔÏÂÒ»¸ö¹æÔò¡£µ±Ç°ÃæËùÓйæÔò²»Âú×ãʱ£¬Ôò´¥·¢default¹æÔò£¬°ÑÓ¦Ó÷ÅÔÚdefault¶ÓÁÐÖС£

µ±È»£¬ÎÒÃÇ¿ÉÒÔ²»ÅäÖÃqueuePlacementPolicy¹æÔò£¬µ÷¶ÈÆ÷ÔòĬÈϲÉÓÃÈçϹæÔò£º

  1. <queuePlacementPolicy> 
  2.       <rule name="specified" /> 
  3.       <rule name="user" /> 
  4. </queuePlacementPolicy> 

ÉÏÃæ¹æÔòÒâ˼Êdzý·Ç¶ÓÁб»×¼È·µÄ¶¨Ò壬·ñÔò»áÒÔÓû§ÃûΪ¶ÓÁÐÃû´´½¨¶ÓÁС£»¹ÓÐÒ»¸ö¼òµ¥µÄÅäÖòßÂÔ¿ÉÒÔʹµÃËùÓеÄÓ¦Ó÷ÅÈëͬһ¸ö¶ÓÁÐ(default)£¬ÕâÑù¾Í¿ÉÒÔÈÃËùÓÐÓ¦ÓÃÖ®¼äƽµÈ¹²Ïí¼¯Èº¶ø²»ÊÇÔÚÓû§Ö®¼ä¡£Õâ¸öÅäÖõĶ¨ÒåÈçÏ£º

  1. <queuePlacementPolicy> 
  2.      <rule name="default" /> 
  3. </queuePlacementPolicy> 

ʵÏÖÉÏÃ湦ÄÜÎÒÃÇ»¹¿ÉÒÔ²»Ê¹ÓÃÅäÖÃÎļþ£¬Ö±½ÓÉèÖÃyarn.scheduler.fair.user-as-default-queue=false£¬ÕâÑùÓ¦Óñã»á±»·ÅÈëdefault ¶ÓÁУ¬¶ø²»ÊǸ÷¸öÓû§Ãû¶ÓÁС£ÁíÍ⣬ÎÒÃÇ»¹¿ÉÒÔÉèÖÃyarn.scheduler.fair.allow-undeclared-pools=false£¬ÕâÑùÓû§¾ÍÎÞ·¨´´½¨¶ÓÁÐÁË¡£

µ±Ò»¸öjobÌá½»µ½Ò»¸ö·±Ã¦¼¯ÈºÖеĿնÓÁÐʱ£¬job²¢²»»áÂíÉÏÖ´ÐУ¬¶øÊÇ×èÈûÖ±µ½ÕýÔÚÔËÐеÄjobÊÍ·Åϵͳ×ÊÔ´¡£ÎªÁËʹÌá½»jobµÄÖ´ÐÐʱ¼ä¸ü¾ßÔ¤²âÐÔ(¿ÉÒÔÉèÖõȴýµÄ³¬Ê±Ê±¼ä)£¬Fairµ÷¶ÈÆ÷Ö§³ÖÇÀÕ¼¡£ÇÀÕ¼¾ÍÊÇÔÊÐíµ÷¶ÈÆ÷ɱµôÕ¼Óó¬¹ýÆäÓ¦Õ¼·Ý¶î×ÊÔ´¶ÓÁеÄcontainers£¬ÕâЩcontainers×ÊÔ´±ã¿É±»·ÖÅäµ½Ó¦¸ÃÏíÓÐÕâЩ·Ý¶î×ÊÔ´µÄ¶ÓÁÐÖС£ÐèҪעÒâÇÀÕ¼»á½µµÍ¼¯ÈºµÄÖ´ÐÐЧÂÊ£¬ÒòΪ±»ÖÕÖ¹µÄcontainersÐèÒª±»ÖØÐÂÖ´ÐС£¿ÉÒÔͨ¹ýÉèÖÃÒ»¸öÈ«¾ÖµÄ²ÎÊýyarn.scheduler.fair.preemption=trueÀ´ÆôÓÃÇÀÕ¼¹¦ÄÜ¡£´ËÍ⣬»¹ÓÐÁ½¸ö²ÎÊýÓÃÀ´¿ØÖÆÇÀÕ¼µÄ¹ýÆÚʱ¼ä(ÕâÁ½¸ö²ÎÊýĬÈÏûÓÐÅäÖã¬ÐèÒªÖÁÉÙÅäÖÃÒ»¸öÀ´ÔÊÐíÇÀÕ¼Container)£º

  1. minSharePreemptionTimeout 
  2. fairSharePreemptionTimeout 

Èç¹û¶ÓÁÐÔÚminimum share preemption timeoutÖ¸¶¨µÄʱ¼äÄÚδ»ñµÃ×îСµÄ×ÊÔ´±£ÕÏ£¬µ÷¶ÈÆ÷¾Í»áÇÀÕ¼containers¡£ÎÒÃÇ¿ÉÒÔͨ¹ýÅäÖÃÎļþÖеĶ¥¼¶ÔªËØ</defaultminsharepreemptiontimeout></defaultminsharepreemptiontimeout></defaultminsharepreemptiontimeout></defaultminsharepreemptiontimeout></defaultminsharepreemptiontimeout></defaultminsharepreemptiontimeout></defaultminsharepreemptiontimeout></defaultminsharepreemptiontimeout></defaultminsharepreemptiontimeout></defaultminsharepreemptiontimeout></defaultminsharepreemptiontimeout></defaultminsharepreemptiontimeout></defaultminsharepreemptiontimeout>ΪËùÓжÓÁÐÅäÖÃÕâ¸ö³¬Ê±Ê±¼ä;ÎÒÃÇ»¹¿ÉÒÔÔÚÔªËØÄÚÅäÖÃÔªËØÀ´ÎªÄ³¸ö¶ÓÁÐÖ¸¶¨³¬Ê±Ê±¼ä¡£</defaultminsharepreemptiontimeout>

ÓëÖ®ÀàËÆ£¬Èç¹û¶ÓÁÐÔÚfair share preemption timeoutÖ¸¶¨Ê±¼äÄÚδ»ñµÃƽµÈµÄ×ÊÔ´µÄÒ»°ë£¨Õâ¸ö±ÈÀý¿ÉÒÔÅäÖã©£¬µ÷¶ÈÆ÷Ôò»á½øÐÐÇÀÕ¼containers¡£Õâ¸ö³¬Ê±Ê±¼ä¿ÉÒÔͨ¹ý¶¥¼¶ÔªËØ<defaultfairsharepreemptiontimeout style="font-size: inherit;color: inherit;line-height: inherit;">ºÍÔªËؼ¶ÔªËØ·Ö±ðÅäÖÃËùÓжÓÁкÍij¸ö¶ÓÁеij¬Ê±Ê±¼ä¡£ÉÏÃæÌáµ½µÄ±ÈÀý¿ÉÒÔͨ¹ý<defaultfairsharepreemptionthreshold style="font-size: inherit;color: inherit;line-height: inherit;">(ÅäÖÃËùÓжÓÁÐ)ºÍ(ÅäÖÃij¸ö¶ÓÁÐ)½øÐÐÅäÖã¬Ä¬ÈÏÊÇ0.5¡£</defaultfairsharepreemptionthreshold></defaultfairsharepreemptiontimeout>

ÐèҪעÒâµÄÊÇ£¬ËùÓпͻ§¶ËÌá½»ÈÎÎñµÄÓû§ºÍÓû§×éµÄ¶ÔÓ¦¹Øϵ£¬ÐèҪά»¤ÔÚResourceManagerÉÏ£¬ResourceManagerÔÚ·ÖÅä×ÊÔ´³Øʱºò£¬ÊÇ´ÓResourceManagerÉ϶ÁÈ¡Óû§ºÍÓû§×éµÄ¶ÔÓ¦¹ØϵµÄ£¬·ñÔò¾Í»á±»·ÖÅäµ½default×ÊÔ´³Ø¡£ÔÚÈÕÖ¾ÖгöÏÖ”UserGroupInformation: No groups available for user”ÀàËƵľ¯¸æ¡£¶ø¿Í»§¶Ë»úÆ÷ÉϵÄÓû§¶ÔÓ¦µÄÓû§×éÎ޹ؽôÒª¡£

ÿ´ÎÔÚResourceManagerÉÏÐÂÔöÓû§»òÕßµ÷Õû×ÊÔ´³ØÅä¶îºó£¬ÐèÒªÖ´ÐÐÏÂÃæµÄÃüÁîË¢ÐÂʹÆäÉúЧ.

yarn rmadmin -refreshQueues yarn rmadmin -refreshUserToGroupsMappings

¶¯Ì¬¸üÐÂÖ»Ö§³ÖÐÞ¸Ä×ÊÔ´³ØÅä¶î£¬Èç¹ûÊÇÐÂÔö»ò¼õÉÙ×ÊÔ´³Ø£¬ÔòÐèÒªÖØÆôYarn¼¯Èº.

Fair Scheduer¸÷×ÊÔ´³ØÅäÖü°Ê¹ÓÃÇé¿ö£¬ÔÚResourceManagerµÄWEB¼à¿ØÒ³ÃæÉÏÒ²¿ÉÒÔ¿´µ½: http://ResourceManagerHost:8088/cluster/scheduler

2.2 Capacity ÅäÖÃ

hadoop2.7ĬÈÏʹÓõÄÊÇCapacity SchedulerÈÝÁ¿µ÷¶ÈÆ÷

yarn-site.xml

  1. <property> 
  2.   <name>yarn.resourcemanager.scheduler.class</name
  3.   <value>org.apache.hadoop.yarn.server.resourcemanager.capacity.CapacityScheduler</value> 
  4. </property> 

Capacity µ÷¶ÈÆ÷ÔÊÐí¶à¸ö×éÖ¯¹²ÏíÕû¸ö¼¯Èº£¬Ã¿¸ö×éÖ¯¿ÉÒÔ»ñµÃ¼¯ÈºµÄÒ»²¿·Ö¼ÆËãÄÜÁ¦¡£Í¨¹ýΪÿ¸ö×éÖ¯·ÖÅäרÃŵĶÓÁУ¬È»ºóÔÙΪÿ¸ö¶ÓÁзÖÅäÒ»¶¨µÄ¼¯Èº×ÊÔ´£¬ÕâÑùÕû¸ö¼¯Èº¾Í¿ÉÒÔͨ¹ýÉèÖöà¸ö¶ÓÁеķ½Ê½¸ø¶à¸ö×éÖ¯Ìṩ·þÎñÁË¡£³ý´ËÖ®Í⣬¶ÓÁÐÄÚ²¿ÓÖ¿ÉÒÔ´¹Ö±»®·Ö£¬ÕâÑùÒ»¸ö×éÖ¯ÄÚ²¿µÄ¶à¸ö³ÉÔ±¾Í¿ÉÒÔ¹²ÏíÕâ¸ö¶ÓÁÐ×ÊÔ´ÁË£¬ÔÚÒ»¸ö¶ÓÁÐÄÚ²¿£¬×ÊÔ´µÄµ÷¶ÈÊDzÉÓõÄÊÇÏȽøÏȳö(FIFO)²ßÂÔ¡£

Ò»¸öjob¿ÉÄÜʹÓò»ÁËÕû¸ö¶ÓÁеÄ×ÊÔ´¡£È»¶øÈç¹ûÕâ¸ö¶ÓÁÐÖÐÔËÐжà¸öjob£¬Èç¹ûÕâ¸ö¶ÓÁеÄ×ÊÔ´¹»Óã¬ÄÇô¾Í·ÖÅä¸øÕâЩjob£¬Èç¹ûÕâ¸ö¶ÓÁеÄ×ÊÔ´²»¹»ÓÃÁËÄØ?ÆäʵCapacityµ÷¶ÈÆ÷ÈÔ¿ÉÄÜ·ÖÅä¶îÍâµÄ×ÊÔ´¸øÕâ¸ö¶ÓÁУ¬Õâ¾ÍÊÇ“µ¯ÐÔ¶ÓÁД(queue elasticity)µÄ¸ÅÄî¡£

ÔÚÕý³£µÄ²Ù×÷ÖУ¬Capacityµ÷¶ÈÆ÷²»»áÇ¿ÖÆÊÍ·ÅContainer£¬µ±Ò»¸ö¶ÓÁÐ×ÊÔ´²»¹»ÓÃʱ£¬Õâ¸ö¶ÓÁÐÖ»ÄÜ»ñµÃÆäËü¶ÓÁÐÊͷźóµÄContainer×ÊÔ´¡£µ±È»£¬ÎÒÃÇ¿ÉÒÔΪ¶ÓÁÐÉèÖÃÒ»¸ö×î´ó×ÊԴʹÓÃÁ¿£¬ÒÔÃâÕâ¸ö¶ÓÁйý¶àµÄÕ¼ÓÿÕÏÐ×ÊÔ´£¬µ¼ÖÂÆäËü¶ÓÁÐÎÞ·¨Ê¹ÓÃÕâЩ¿ÕÏÐ×ÊÔ´£¬Õâ¾ÍÊÇ”µ¯ÐÔ¶ÓÁДÐèҪȨºâµÄµØ·½¡£

¼ÙÉèÎÒÃÇÓÐÈçϲã´ÎµÄ¶ÓÁУº

  1. root 
  2. ©À©¤©¤ prod 
  3. ©¸©¤©¤ dev 
  4.     ©À©¤©¤ eng 
  5.     ©¸©¤©¤ science 

ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄCapacityµ÷¶ÈÆ÷µÄÅäÖÃÎļþ£¬ÎļþÃûΪcapacity-scheduler.xml¡£ÔÚÕâ¸öÅäÖÃÖУ¬ÔÚroot¶ÓÁÐÏÂÃ涨ÒåÁËÁ½¸ö×Ó¶ÓÁÐprodºÍdev£¬·Ö±ðÕ¼40%ºÍ60%µÄÈÝÁ¿¡£ÐèҪעÒ⣬һ¸ö¶ÓÁеÄÅäÖÃÊÇͨ¹ýÊôÐÔyarn.sheduler.capacity..Ö¸¶¨µÄ£¬´ú±íµÄÊǶÓÁеļ̳ÐÊ÷£¬Èçroot.prod¶ÓÁУ¬Ò»°ãÖ¸capacityºÍmaximum-capacity¡£

  1. <?xml version="1.0"?> 
  2. <configuration> 
  3.     <property> 
  4.         <name>yarn.scheduler.capacity.root.queues(/&eae) 
  5.         <value>prod,dev</value> 
  6.     </property> 
  7.     <property> 
  8.         <name>yarn.scheduler.capacity.root.dev.queues</tta*e>  
  9.         <value>eng,science</value> 
  10.     </property> 
  11.     <property> 
  12.         <name>yarn.scheduler.capacity.root.prod.capacity</name
  13.         <value>40</value> 
  14.     </property> 
  15.     <property> 
  16.         <name>yarn.scheduler.capacity.root.dev.capacity</name
  17.         <value >60</value> 
  18.     </property> 
  19.     <property> 
  20.         <name>yarn.scheduler.capacity.root.dev.maximuin-capacity</name
  21.         <value>75</value> 
  22.     </property> 
  23.     <property> 
  24.         <name>yarn.scheduler.capacity.root.dev.eng.capacity</name
  25.         <value >50</value> 
  26.     </property> 
  27.     <property> 
  28.         <name>yarn.scheduler.capacity.root.dev.science.capacity</name
  29.         <value >50</value> 
  30.     </property> 
  31. </configuration> 

ÎÒÃÇ¿ÉÒÔ¿´µ½£¬dev¶ÓÁÐÓÖ±»·Ö³ÉÁËengºÍscienceÁ½¸öÏàͬÈÝÁ¿µÄ×Ó¶ÓÁС£devµÄmaximum-capacityÊôÐÔ±»ÉèÖóÉÁË75%£¬ËùÒÔ¼´Ê¹prod¶ÓÁÐÍêÈ«¿ÕÏÐdevÒ²²»»áÕ¼ÓÃÈ«²¿¼¯Èº×ÊÔ´£¬Ò²¾ÍÊÇ˵£¬prod¶ÓÁÐÈÔÓÐ25%µÄ¿ÉÓÃ×ÊÔ´ÓÃÀ´Ó¦¼±¡£ÎÒÃÇ×¢Òâµ½£¬engºÍscienceÁ½¸ö¶ÓÁÐûÓÐÉèÖÃmaximum-capacityÊôÐÔ£¬Ò²¾ÍÊÇ˵eng»òscience¶ÓÁÐÖеÄjob¿ÉÄÜ»áÓõ½Õû¸ödev¶ÓÁеÄËùÓÐ×ÊÔ´(×î¶àΪ¼¯ÈºµÄ75%)¡£¶øÀàËƵģ¬prodÓÉÓÚûÓÐÉèÖÃmaximum-capacityÊôÐÔ£¬ËüÓпÉÄÜ»áÕ¼Óü¯ÈºÈ«²¿×ÊÔ´¡£CapacityÈÝÆ÷³ýÁË¿ÉÒÔÅäÖöÓÁм°ÆäÈÝÁ¿Í⣬ÎÒÃÇ»¹¿ÉÒÔÅäÖÃÒ»¸öÓû§»òÓ¦ÓÿÉÒÔ·ÖÅäµÄ×î´ó×ÊÔ´ÊýÁ¿¡¢¿ÉÒÔͬʱÔËÐжàÉÙÓ¦ÓᢶÓÁеÄACLÈÏÖ¤µÈ¡£

¹ØÓÚ¶ÓÁеÄÉèÖã¬ÕâÈ¡¾öÓÚÎÒÃǾßÌåµÄÓ¦ÓᣱÈÈ磬ÔÚMapReduceÖУ¬ÎÒÃÇ¿ÉÒÔͨ¹ýmapreduce.job.queuenameÊôÐÔÖ¸¶¨ÒªÓõĶÓÁС£Èç¹û¶ÓÁв»´æÔÚ£¬ÎÒÃÇÔÚÌá½»ÈÎÎñʱ¾Í»áÊÕµ½´íÎó¡£Èç¹ûÎÒÃÇûÓж¨ÒåÈκζÓÁУ¬ËùÓеÄÓ¦Óý«»á·ÅÔÚÒ»¸ödefault¶ÓÁÐÖС£

×¢Ò⣺¶ÔÓÚCapacityµ÷¶ÈÆ÷£¬ÎÒÃǵĶÓÁÐÃû±ØÐëÊǶÓÁÐÊ÷ÖеÄ×îºóÒ»²¿·Ö£¬Èç¹ûÎÒÃÇʹÓöÓÁÐÊ÷Ôò²»»á±»Ê¶±ð¡£±ÈÈ磬ÔÚÉÏÃæÅäÖÃÖУ¬ÎÒÃÇʹÓÃprodºÍeng×÷Ϊ¶ÓÁÐÃûÊÇ¿ÉÒԵģ¬µ«ÊÇÈç¹ûÎÒÃÇÓÃroot.dev.eng»òÕßdev.engÊÇÎÞЧµÄ¡£

2.3 FIFO Scheduler

yarn-site.xmlÎļþ

  1. <property> 
  2.   <name>yarn.resourcemanager.scheduler.class</name
  3.   <value>org.apache.hadoop.yarn.server.resourcemanager.fifo.FifoScheduler</value> 
  4. </property> 

±¾ÎÄתÔØ×ÔÍøÂ磬ԭÎÄÁ´½Ó£ºhttps://mp.weixin.qq.com/s/jMvWKCuB-U0wri6ZwqqhMg
±¾Õ¾²¿·ÖÄÚÈÝתÔØÓÚÍøÂ磬°æȨ¹éÔ­×÷ÕßËùÓУ¬×ªÔØ֮ĿµÄÔÚÓÚ´«²¥¸ü¶àÓÅÐã¼¼ÊõÄÚÈÝ£¬ÈçÓÐÇÖȨÇëÁªÏµQQ/΢ÐÅ£º153890879ɾ³ý£¬Ð»Ð»£¡
ÉÏһƪ£ºÀ䷹г´£ºÀí½âJDKÖÐUUIDµÄµ×²ãʵÏÖ ÏÂһƪ£ºÃ»ÓÐÁË

ÍƼöͼÎÄ

  • ÖÜÅÅÐÐ
  • ÔÂÅÅÐÐ
  • ×ÜÅÅÐÐ

Ëæ»úÍƼö