Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Azkaban
 
  3752  次浏览      28
 2019-6-3
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚCSDN£¬±¾ÎĽéÉÜÁËAzkabanÊÇʲô£¬AzkabanµÄÊÊÓó¡¾°£¬ÒÔ¼°AzkabanµÄÈýÖÖÔËÐÐģʽºÍ×÷ÒµÁ÷Ö´Ðйý³ÌµÈÏà¹ØÄÚÈÝ¡£

1. AzkabanÊÇʲô£¿

AzkabanÊÇÓÉLinkedin¹«Ë¾ÍƳöµÄÒ»¸öÅúÁ¿¹¤×÷Á÷ÈÎÎñµ÷¶ÈÆ÷£¬Ö÷ÒªÓÃÓÚÔÚÒ»¸ö¹¤×÷Á÷ÄÚÒÔÒ»¸öÌØ¶¨µÄ˳ÐòÔËÐÐÒ»×鹤×÷ºÍÁ÷³Ì£¬ËüµÄÅäÖÃÊÇͨ¹ý¼òµ¥µÄkey:value¶ÔµÄ·½Ê½£¬Í¨¹ýÅäÖÃÖеÄdependencies À´ÉèÖÃÒÀÀµ¹ØÏµ£¬Õâ¸öÒÀÀµ¹ØÏµ±ØÐëÊÇÎÞ»·µÄ£¬·ñÔò»á±»ÊÓΪÎÞЧµÄ¹¤×÷Á÷¡£AzkabanʹÓÃjobÅäÖÃÎļþ½¨Á¢ÈÎÎñÖ®¼äµÄÒÀÀµ¹ØÏµ£¬²¢Ìṩһ¸öÒ×ÓÚʹÓõÄwebÓû§½çÃæÎ¬»¤ºÍ¸ú×ÙÄãµÄ¹¤×÷Á÷¡£

ÔÚ½éÉÜAzkaban֮ǰ£¬ÎÒÃÇÏÈÀ´¿´Ò»ÏÂÏÖÓеÄÁ½¸ö¹¤×÷Á÷ÈÎÎñµ÷¶Èϵͳ¡£ÖªÃû¶È±È½Ï¸ßµÄÓ¦¸ÃÊÇApache Oozie£¬µ«ÊÇÆäÅäÖù¤×÷Á÷µÄ¹ý³ÌÊDZàд´óÁ¿µÄXMLÅäÖ㬶øÇÒ´úÂ븴ÔӶȱȽϸߣ¬²»Ò×ÓÚ¶þ´Î¿ª·¢¡£ÁíÍâÒ»¸öÓ¦ÓÃÒ²±È½Ï¹ã·ºµÄµ÷¶ÈϵͳÊÇAirflow£¬µ«ÊÇÆä¿ª·¢ÓïÑÔÊÇPython¡£ÓÉÓÚÎÒÃÇÍŶÓÄÚ²¿Ê¹ÓÃJava×÷ΪÖ÷Á÷¿ª·¢ÓïÑÔ£¬ËùÒÔÑ¡Ð͵Äʱºò¾Í±»ÌÔÌ­µôÁË¡£ÎÒÃÇÑ¡ÔñAzkabanµÄÔ­Òò»ùÓÚÒÔϼ¸µã£º

Ìṩ¹¦ÄÜÇåÎú£¬¼òµ¥Ò×ÓõÄWeb UI½çÃæ

ÌṩjobÅäÖÃÎļþ¿ìËÙ½¨Á¢ÈÎÎñºÍÈÎÎñÖ®¼äµÄÒÀÀµ¹ØÏµ

Ìṩģ¿é»¯ºÍ¿É²å°ÎµÄ²å¼þ»úÖÆ£¬Ô­ÉúÖ§³Öcommand¡¢Java¡¢Hive¡¢Pig¡¢Hadoop

»ùÓÚJava¿ª·¢£¬´úÂë½á¹¹ÇåÎú£¬Ò×ÓÚ¶þ´Î¿ª·¢

2. AzkabanµÄÊÊÓó¡¾°

ʵ¼ÊÏîÄ¿Öо­³£ÓÐÕâЩ³¡¾°£ºÃ¿ÌìÓÐÒ»¸ö´óÈÎÎñ£¬Õâ¸ö´óÈÎÎñ¿ÉÒÔ·Ö³ÉA£¬B£¬C£¬DËĸöСÈÎÎñ£¬A£¬BÈÎÎñÖ®¼äûÓÐÒÀÀµ¹ØÏµ£¬CÈÎÎñÒÀÀµA£¬BÈÎÎñµÄ½á¹û£¬DÈÎÎñÒÀÀµCÈÎÎñµÄ½á¹û¡£Ò»°ãµÄ×ö·¨ÊÇ£¬¿ªÁ½¸öÖÕ¶ËͬʱִÐÐA,B£¬Á½¸ö¶¼Ö´ÐÐÍêÁËÔÙÖ´ÐÐC£¬×îºóÔÙÖ´ÐÐD¡£ÕâÑùµÄ»°£¬Õû¸öµÄÖ´Ðйý³Ì¶¼ÐèÒªÈ˹¤²Î¼Ó£¬²¢Çҵö¢×Ÿ÷ÈÎÎñµÄ½ø¶È¡£µ«ÊÇÎÒÃǵĺܶàÈÎÎñ¶¼ÊÇÔÚÉî¸ü°ëÒ¹Ö´Ðеģ¬Í¨¹ýд½Å±¾ÉèÖÃcrontabÖ´ÐС£Æäʵ£¬Õû¸ö¹ý³ÌÀàËÆÓÚÒ»¸öÓÐÏòÎÞ»·Í¼£¨DAG£©¡£Ã¿¸ö×ÓÈÎÎñÏ൱ÓÚ´óÈÎÎñÖеÄÒ»¸öÁ÷£¬ÈÎÎñµÄÆðµã¿ÉÒÔ´ÓûÓжȵĽڵ㿪ʼִÐУ¬ÈκÎûÓÐͨ·µÄ½ÚµãÖ®¼ä¿ÉÒÔͬʱִÐУ¬±ÈÈçÉÏÊöµÄA£¬B¡£×ܽáÆðÀ´µÄ»°£¬ÎÒÃÇÐèÒªµÄ¾ÍÊÇÒ»¸ö¹¤×÷Á÷µÄµ÷¶ÈÆ÷£¬¶øAzkaban¾ÍÊÇÄܽâ¾öÉÏÊöÎÊÌâµÄÒ»¸öµ÷¶ÈÆ÷¡£

3. Azkaban¼Ü¹¹

AzkabanÔÚLinkedInÉÏʵʩ£¬ÒÔ½â¾öHadoop×÷ÒµÒÀÀµÎÊÌâ¡£ÎÒÃÇÓй¤×÷ÐèÒª°´Ë³ÐòÔËÐУ¬´ÓETL¹¤×÷µ½Êý¾Ý·ÖÎö²úÆ·¡£×î³õÊǵ¥Ò»·þÎñÆ÷½â¾ö·½°¸£¬Ëæ×ŶàÄêÀ´HadoopÓû§ÊýÁ¿µÄÔö¼Ó£¬Azkaban ÒѾ­·¢Õ¹³ÉΪһ¸ö¸üÇ¿´óµÄ½â¾ö·½°¸¡£

AzkabanÓÉÈý¸ö¹Ø¼ü×é¼þ¹¹³É£º

¹ØÏµÐÍÊý¾Ý¿â£¨MySQL£©

AzkabanWebServer

AzkabanExecutorServer

3.1 ¹ØÏµÐÍÊý¾Ý¿â£¨MySQL£©

AzkabanʹÓÃÊý¾Ý¿â´æ´¢´ó²¿·Ö״̬£¬AzkabanWebServerºÍAzkabanExecutorServer¶¼ÐèÒª·ÃÎÊÊý¾Ý¿â¡£

AzkabanWebServerʹÓÃÊý¾Ý¿âµÄÔ­ÒòÈçÏ£º

ÏîÄ¿¹ÜÀí£ºÏîÄ¿¡¢ÏîĿȨÏÞÒÔ¼°ÉÏ´«µÄÎļþ¡£

Ö´ÐÐÁ÷״̬£º¸ú×ÙÖ´ÐÐÁ÷³ÌÒÔ¼°Ö´ÐгÌÐòÕýÔÚÔËÐеÄÁ÷³Ì¡£

ÒÔǰµÄÁ÷³Ì/×÷Òµ£ºÍ¨¹ýÒÔǰµÄ×÷ÒµºÍÁ÷³ÌÖ´ÐÐÒÔ¼°·ÃÎÊÆäÈÕÖ¾Îļþ½øÐÐËÑË÷¡£

¼Æ»®³ÌÐò£º±£Áô¼Æ»®×÷ÒµµÄ״̬¡£

SLA£º±£³ÖËùÓеÄSLA¹æÔò

AzkabanExecutorServerʹÓÃÊý¾Ý¿âµÄÔ­ÒòÈçÏ£º

·ÃÎÊÏîÄ¿£º´ÓÊý¾Ý¿â¼ìË÷ÏîÄ¿Îļþ¡£

Ö´ÐÐÁ÷³Ì/×÷Òµ£º¼ìË÷ºÍ¸üÐÂÕýÔÚÖ´ÐеÄ×÷ÒµÁ÷µÄÊý¾Ý

ÈÕÖ¾£º½«×÷ÒµºÍ¹¤×÷Á÷µÄÊä³öÈÕÖ¾´æ´¢µ½Êý¾Ý¿âÖС£

½»»¥ÒÀÀµ¹ØÏµ£ºÈç¹ûÒ»¸ö¹¤×÷Á÷ÔÚ²»Í¬µÄÖ´ÐÐÆ÷ÉÏÔËÐУ¬Ëü½«´ÓÊý¾Ý¿âÖлñȡ״̬¡£

3.2 AzkabanWebServer

AzkabanWebServerÊÇÕû¸öAzkaban¹¤×÷Á÷ϵͳµÄÖ÷Òª¹ÜÀíÕߣ¬Ëü¸ºÔðproject¹ÜÀí¡¢Óû§µÇ¼ÈÏÖ¤¡¢¶¨Ê±Ö´Ðй¤×÷Á÷¡¢¸ú×Ù¹¤×÷Á÷Ö´Ðнø¶ÈµÈһϵÁÐÈÎÎñ¡£Í¬Ê±£¬Ëü»¹ÌṩWeb·þÎñ²Ù×÷µÄ½Ó¿Ú£¬ÀûÓøýӿڣ¬Óû§¿ÉÒÔʹÓÃcurl»òÆäËûajaxµÄ·½Ê½£¬À´Ö´ÐÐazkabanµÄÏà¹Ø²Ù×÷¡£²Ù×÷°üÀ¨£ºÓû§µÇ¼¡¢´´½¨project¡¢ÉÏ´«workflow¡¢Ö´ÐÐworkflow¡¢²éѯworkflowµÄÖ´Ðнø¶È¡¢É±µôworkflowµÈһϵÁвÙ×÷£¬ÇÒÕâЩ²Ù×÷µÄ·µ»Ø½á¹û¾ùÊÇjsonµÄ¸ñʽ¡£²¢ÇÒAzkabanʹÓ÷½±ã£¬AzkabanʹÓÃÒÔ.jobΪºó׺ÃûµÄ¼üÖµÊôÐÔÎļþÀ´¶¨Ò幤×÷Á÷Öеĸ÷¸öÈÎÎñ£¬ÒÔ¼°Ê¹ÓÃdependenciesÊôÐÔÀ´¶¨Òå×÷Òµ¼äµÄÒÀÀµ¹ØÏµÁ´¡£ÕâЩ×÷ÒµÎļþºÍ¹ØÁªµÄ´úÂë×îÖÕÒÔ*.zipµÄ·½Ê½Í¨¹ýAzkaban UIÉÏ´«µ½Web·þÎñÆ÷ÉÏ¡£

3.3 AzkabanExecutorServer

ÒÔǰ°æ±¾µÄAzkabanÔÚµ¥¸ö·þÎñÖоßÓÐAzkabanWebServerºÍAzkabanExecutorServer¹¦ÄÜ£¬Ä¿Ç°AzkabanÒѽ«AzkabanExecutorServer·ÖÀë³É¶ÀÁ¢µÄ·þÎñÆ÷£¬²ð·ÖAzkabanExecutorServerµÄÔ­ÒòÓÐÈçϼ¸µã£º

ij¸öÈÎÎñÁ÷ʧ°Üºó£¬¿ÉÒÔ¸ü·½±ãµÄ½«ÆäÖØÐÂÖ´ÐÐ

±ãÓÚAzkabanÉý¼¶

AzkabanExecutorServerÖ÷Òª¸ºÔð¾ßÌåµÄ¹¤×÷Á÷µÄÌá½»¡¢Ö´ÐУ¬¿ÉÒÔÆô¶¯¶à¸öÖ´ÐзþÎñÆ÷£¬ËüÃÇͨ¹ýmysqlÊý¾Ý¿âÀ´Ð­µ÷ÈÎÎñµÄÖ´ÐС£

4. Azkaban×÷ÒµÁ÷Ö´Ðйý³Ì

Webserver¸ù¾ÝÄÚ´æÖлº´æµÄ¸÷ExecutorµÄ×ÊԴ״̬£¨WebserverÓÐÒ»¸öÏ̻߳á±éÀú¸÷¸öactive executor£¬È¥·¢ËÍhttpÇëÇó»ñÈ¡Æä×ÊԴ״̬ÐÅÏ¢»º´æµ½ÄÚ´æÖУ©£¬°´ÕÕÑ¡Ôñ²ßÂÔ£¨°üÀ¨executor×ÊԴ״̬¡¢×î½üÖ´ÐÐÁ÷¸öÊýµÈ£©Ñ¡ÔñÒ»¸öexecutorÏ·¢×÷ÒµÁ÷£»

executorÅжÏÊÇ·ñÉèÖÃ×÷ÒµÁ£¶È·ÖÅ䣬Èç¹ûδÉèÖÃ×÷ÒµÁ£¶È·ÖÅ䣬ÔòÔÚµ±Ç°executorÖ´ÐÐËùÓÐ×÷Òµ£»Èç¹ûÉèÖÃÁË×÷ÒµÁ£¶È·ÖÅ䣬Ôòµ±Ç°½Úµã»á³ÉΪ×÷Òµ·ÖÅäµÄ¾ö²ßÕߣ¬¼´·ÖÅä½Úµã£»

·ÖÅä½Úµã´Ózookeeper»ñÈ¡¸÷¸öexecutorµÄ×ÊԴ״̬ÐÅÏ¢£¬È»ºó¸ù¾Ý²ßÂÔÑ¡ÔñÒ»¸öexecutor·ÖÅä×÷Òµ£»

±»·ÖÅäµ½×÷ÒµµÄexecutor¼´³ÉΪִÐнڵ㣬ִÐÐ×÷Òµ£¬È»ºó¸üÐÂÊý¾Ý¿â¡£

5. Azkaban¼Ü¹¹µÄÈýÖÖÔËÐÐģʽ

ÔÚ°æ±¾3.0ÖУ¬AzkabanÌṩÁËÒÔÏÂÈýÖÖģʽ£º

solo server mode£º×î¼òµ¥µÄģʽ£¬Êý¾Ý¿âÄÚÖõÄH2Êý¾Ý¿â£¬AzkabanWebServerºÍAzkabanExecutorServer¶¼ÔÚÒ»¸ö½ø³ÌÖÐÔËÐУ¬ÈÎÎñÁ¿²»´óÏîÄ¿¿ÉÒÔ²ÉÓôËģʽ¡£

two server mode£ºÊý¾Ý¿âΪMySQL£¬¹ÜÀí·þÎñÆ÷ºÍÖ´ÐзþÎñÆ÷ÔÚ²»Í¬½ø³Ì£¬ÕâÖÖģʽÏ£¬AzkabanWebServerºÍAzkabanExecutorServer»¥²»Ó°Ïì¡£

multiple executor mode£º¸ÃģʽÏ£¬AzkabanWebServerºÍAzkabanExecutorServerÔËÐÐÔÚ²»Í¬Ö÷»úÉÏ£¬ÇÒAzkabanExecutorServer¿ÉÒÔÓжà¸ö¡£

ĿǰÎÒÃDzÉÓõÄÊÇmultiple executor mode·½Ê½£¬·Ö±ðÔÚ²»Í¬µÄÖ÷»úÉϲ¿Êð¶à¸öAzkabanExecutorServerÒÔÓ¦¶Ô¸ß²¢·¢¶¨Ê±ÈÎÎñÖ´ÐеÄÇé¿ö£¬´Ó¶ø¼õÇáµ¥¸ö·þÎñÆ÷µÄѹÁ¦¡£

WebServerºÍExecutorServerͬ²½soloÅäÖÃ

·Ö±ð±à¼­build.gradle Ìí¼ÓÈç¹û´úÂë¿é

from('../azkaban-solo-server/build/resources/main/conf') {
into 'conf'
}
from('../azkaban-solo-server/src/main/resources/commonprivate.properties') {
into 'plugins/jobtypes'
}
from('../azkaban-solo-server/src/main/resources/log4j.properties') {
into ''
}
from('../azkaban-solo-server/src/main/resources/commonprivate.properties') {
into ''
}

# Build and install distributions ./gradlew installDist

6. AzkabanʹÓÃ

6.1 ´´½¨ÏîÄ¿

½øÈëAzkabanºó£¬Äú½«¿´µ½¡°ÏîÄ¿¡±Ò³Ãæ¡£´ËÒ³Ãæ½«ÏÔʾÄú¾ßÓжÁȡȨÏÞµÄËùÓÐÏîÄ¿µÄÁÐ±í¡£Ö»ÓÐ×éȨÏÞ»ò¾ßÓÐREAD»òADMIN½ÇÉ«µÄÏîÄ¿²»»á³öÏÖ¡£

Èç¹û¸Õ¸Õ¿ªÊ¼£¬ÏîÄ¿Ò³Ãæ¿ÉÄÜΪ¿Õ¡£µ«ÊÇ£¬Äú¿ÉÒÔͨ¹ýµ¥»÷ËùÓÐÏîÄ¿À´²é¿´ËùÓÐÏÖÓÐÏîÄ¿¡£

µ¥»÷´´½¨ÏîÄ¿½«µ¯³öÒ»¸ö¶Ô»°¿ò¡£ÊäÈëÏîÄ¿µÄΨһÏîÄ¿Ãû³ÆºÍ˵Ã÷£¬ÏîÄ¿Ãû³Æ±ØÐëÒÔÓ¢ÎÄ×Öĸ¿ªÍ·£¬Ö»Äܰüº¬Êý×Ö¡¢Ó¢ÎÄ×Öĸ¡¢Ï»®Ïß¡¢ºáÏß ¡£ÒÔºó¿ÉÒÔ¸ü¸Ä˵Ã÷£¬µ«ÏîÄ¿Ãû³Æ²»ÄÜ¡£Èç¹ûÄúûÓп´µ½´Ë°´Å¥£¬³ýÁ˾ßÓÐÊʵ±È¨ÏÞµÄÓû§Ö®Í⣬´´½¨ÐÂÏîÄ¿µÄ¿ÉÄÜÐÔÒѱ»Ëø¶¨¡£

´´½¨ÏîÄ¿ºó£¬½«ÏÔʾһ¸ö¿ÕµÄÏîÄ¿Ò³Ãæ¡£Äú½«×Ô¶¯»ñµÃ¸ÃÏîÄ¿µÄADMIN״̬¡£Í¨¹ýµ¥»÷ȨÏÞ°´Å¥Ìí¼ÓºÍɾ³ýȨÏÞ¡£

Èç¹ûÄú¾ßÓÐÊʵ±µÄȨÏÞ£¨Èç¹ûÄú´´½¨ÏîÄ¿£¬ÔòÓ¦¸Ã¸ÃȨÏÞ£©£¬Äú¿ÉÒÔ´Ó¸ÃÒ³ÃæÉ¾³ýÏîÄ¿£¬¸üÐÂÃèÊö£¬ÉÏ´«ÎļþºÍ²é¿´ÏîÄ¿ÈÕÖ¾

6.2 ÉÏ´«ÏîÄ¿

µã»÷ÉÏ´«°´Å¥¡£Äú½«¿´µ½ÒÔ϶Ի°¿ò¡£

Ñ¡ÔñÒªÉÏ´«µÄ¹¤×÷Á÷ÎļþµÄ´æµµÎļþ¡£Ä¿Ç°£¬AzkabanÖ»Ö§³Öxxx.zipÎļþ¡£zipÓ¦°üº¬xxx.jobÔËÐÐ×÷ÒµËùÐèµÄÎļþºÍÈκÎÎļþ¡£×÷ÒµÃû³ÆÔÚÏîÄ¿ÖбØÐëÊÇΨһµÄ¡£

Azkaban½«ÑéÖ¤zipµÄÄÚÈÝ£¬ÒÔÈ·±£Âú×ãÒÀÀµ¹ØÏµ£¬²¢ÇÒûÓмì²âµ½Ñ­»·ÒÀÀµ¡£Èç¹û·¢ÏÖÈκÎÎÞЧµÄ¹¤×÷Á÷£¬ÉÏ´«½«Ê§°Ü¡£

ÉÏ´«¸²¸ÇÏîÄ¿ÖеÄËùÓÐÎļþ¡£ÔÚÉÏ´«ÐµÄzipÎļþºó£¬¶Ô×÷ÒµËù×öµÄÈκθü¸Ä¶¼½«±»Çå³ý¡£

6.3 ¹¤×÷Á÷ÊÓͼ

ͨ¹ýµã»÷Á÷³ÌÁ´½Ó£¬Äú¿ÉÒÔתµ½Á÷³ÌÊÓÍ¼Ò³Ãæ¡£´ÓÕâÀÄú½«¿´µ½Á÷³ÌµÄͼÐαíʾ¡£×ó²àÃæ°å°üº¬Á÷³ÌÖеÄ×÷ÒµÁÐ±í¡£

ÓÒ¼üµ¥»÷ÓÒ²àÃæ°åÖеÄ×÷Òµ»òͼÐÎÖеĽڵ㽫ÔÊÐíÄú´ò¿ªµ¥¸ö×÷Òµ¡£Äú»¹¿ÉÒÔ´Ó´ËÒ³Ãæ¼Æ»®ºÍÖ´ÐÐÁ÷³Ì¡£

µ¥»÷¡°Ö´ÐС±Ñ¡Ï½«ÏÔʾ´ËÁ÷³ÌµÄËùÓÐÖ´ÐмǼ¡£

6.4 ÏîĿȨÏÞ

´´½¨ÏîĿʱ£¬´´½¨Õß½«×Ô¶¯ÔÚÏîÄ¿ÉϸøÓèADMIN״̬¡£ÕâÔÊÐí´´½¨Õ߲鿴£¬ÉÏ´«£¬¸ü¸Ä×÷Òµ£¬ÔËÐÐÁ÷³Ì£¬É¾³ý²¢ÏòÏîÄ¿Ìí¼ÓÓû§È¨ÏÞ¡£¹ÜÀíÔ±¿ÉÒÔɾ³ýÆäËû¹ÜÀíÔ±£¬µ«²»ÄÜɾ³ý×Ô¼º¡£³ý·Ç¹ÜÀíÔ±±»¹ÜÀí½ÇÉ«µÄÓû§É¾³ý£¬·ñÔòÕâ»á×èÖ¹ÏîÄ¿³ÉΪ¹ÜÀíÔ±¡£

ȨÏÞÒ³Ãæ¿É´ÓÏîÄ¿Ò³Ãæ·ÃÎÊ¡£ÔÚȨÏÞÒ³ÃæÉÏ£¬¹ÜÀíÔ±¿ÉÒÔ½«ÆäËûÓû§£¬×é»ò´úÀíÓû§Ìí¼Óµ½ÏîÄ¿ÖС£

Ìí¼ÓÓû§È¨ÏÞΪÕâЩÓû§¸³ÓèÏîÄ¿ËùÖ¸¶¨µÄȨÏÞ¡£Í¨¹ýÈ¡ÏûÑ¡ÖÐËùÓÐȨÏÞÀ´É¾³ýÓû§È¨ÏÞ¡£

×éȨÏÞÔÊÐíÌØ¶¨×éÖеÄÿ¸öÈËÖ¸¶¨µÄȨÏÞ¡£Í¨¹ýÈ¡ÏûÑ¡ÖÐËùÓÐ×éȨÏÞÀ´É¾³ý×éȨÏÞ¡£

Èç¹û´úÀíÓû§ÒÑ´ò¿ª£¬Ôò´úÀíÓû§ÔÊÐíÏîÄ¿¹¤×÷Á÷×÷ΪÕâЩÓû§ÔËÐС£ÕâÓÐÖúÓÚËø¶¨ÄÄЩÎÞÍ·ÕÊ»§×÷Òµ¿ÉÒÔ´úÀí¡£Ìí¼Óºó£¬µã»÷¡°É¾³ý¡±°´Å¥¼´¿É½«Æäɾ³ý¡£

ÿ¸öÓû§¶¼Í¨¹ýUserManager½øÐÐÑéÖ¤£¬ÒÔ·ÀÖ¹Ìí¼ÓÎÞЧÓû§¡£×éºÍ´úÀíÓû§Ò²½«¼ì²éÒÔÈ·±£ËüÃÇÊÇÓÐЧµÄ£¬²¢²é¿´ÊÇ·ñÔÊÐí¹ÜÀíÔ±½«ÆäÌí¼Óµ½ÏîÄ¿ÖС£

¿ÉÒÔΪÓû§ºÍ×éÉèÖÃÒÔÏÂȨÏÞ£º

6.5 Ö´ÐÐÁ÷³ÌÊÓͼ

´ÓÁ÷³ÌÊÓÍ¼Ãæ°åÖУ¬Äú¿ÉÒÔÓÒ¼üµ¥»÷ͼÐβ¢½ûÓûòÆôÓÃ×÷Òµ¡£ÔÚÖ´ÐÐÆÚ¼ä½«½ûÓòÐÁô×÷Òµ£¬¾ÍÏñËüÃǵÄÒÀÀµ¹ØÏµÒ»Ñù¡£²ÐÕÏ×÷Òµ½«ÏÔʾ°ë͸Ã÷¡£

֪ͨѡÏî ֪ͨѡÏîÔÊÐíÓû§¸ü¸ÄÁ÷³ÌµÄ³É¹¦»òʧ°Ü֪ͨÐÐΪ¡£

֪ͨʧ°Ü

µÚÒ»¸ö¹ÊÕÏ - ¼ì²âµ½µÚÒ»¸ö¹ÊÕϺó·¢Ë͹ÊÕϵç×ÓÓʼþ¡£

Á÷³ÌÍê³É - Èç¹ûÁ÷³ÌµÄ×÷ҵʧ°Ü£¬Ëü½«ÔÚÁ÷³ÌÖеÄËùÓÐ×÷ÒµÍê³Éºó·¢Ë͹ÊÕϵç×ÓÓʼþ¡£

µç×ÓÓʼþ¸²¸Ç

Azkaban½«Ê¹ÓÃÁ÷ÖÐ×îÖÕ×÷ÒµÖÐÉèÖõÄĬÈÏ֪ͨµç×ÓÓʼþ¡£Èç¹û±»¸²¸Ç£¬Óû§¿ÉÒÔ¸ü¸Ä·¢ËÍʧ°Ü»ò³É¹¦·¢Ë͵ç×ÓÓʼþµÄµç×ÓÓʼþµØÖ·¡£Áбí¿ÉÒÔÓöººÅ£¬¿Õ¸ñ»ò·ÖºÅ·Ö¸ô¡£

¹ÊÕÏÑ¡Ïî

µ±Á÷³ÌÖеÄ×÷ҵʧ°Üʱ£¬Äú¿ÉÒÔ¿ØÖÆÆäÓàµÄÁ÷³ÌÈçºÎ³É¹¦¡£

Íê³Éµ±Ç°ÔËÐн«Íê³Éµ±Ç°ÔËÐеÄ×÷Òµ£¬µ«²»»áÆô¶¯ÐÂ×÷Òµ¡£FAILED FINISHINGÒ»µ©Íê³É£¬Á÷³Ì½«±»ÖÃÓÚ״̬²¢ÉèÖÃΪʧ°Ü¡£

È¡ÏûÈ«²¿½«Á¢¼´ÖÕÖ¹ËùÓÐÕýÔÚÔËÐеÄ×÷Òµ£¬²¢½«Ö´ÐÐÁ÷³ÌµÄ״̬ÉèÖÃΪFAILED¡£

Íê³ÉËùÓпÉÄÜ»áÔÚÁ÷³ÌÖмÌÐøÖ´ÐÐ×÷Òµ£¬Ö»ÒªÆäÒÀÀµÐԵõ½Âú×ã¼´¿É¡£FAILED FINISHINGÒ»µ©Íê³É£¬Á÷³Ì½«±»ÖÃÓÚ״̬²¢ÉèÖÃΪʧ°Ü¡£

²¢·¢Ñ¡Ïî

Èç¹ûÁ÷ͬʱִÐÐʱµ÷ÓÃÁ÷Ö´ÐУ¬Ôò¿ÉÒÔÉèÖöà¸öÑ¡Ïî¡£

Èç¹û¡° Ö´ÐС±Ñ¡ÏîÒѾ­ÔËÐУ¬Ôò²»»áÔËÐиÃÁ÷¡£

ÔËÐв¢·¢Ñ¡ÏÔËÐÐÁ÷³Ì£¬ÎÞÂÛËüÊÇ·ñÔËÐС£Ö´Ðв»Í¬µÄ¹¤×÷Ŀ¼¡£

¹ÜµÀÒÔÐÂÖ´Ðз½Ê½²»»á³¬¹ý²¢·¢Ö´Ðеķ½Ê½ÔËÐÐÁ÷³Ì¡£

¼¶±ð1£ºÖ´ÐÐ×÷ÒµAµÄ¿é£¬Ö±µ½ÉÏÒ»¸öÁ÷³ÌµÄ×÷ÒµAÍê³É¡£

¼¶±ð2£ºÖ´ÐÐ×÷ÒµAµÄ¿é£¬Ö±µ½ÉÏÒ»¸öÁ÷³ÌµÄ×÷ÒµAµÄº¢×ÓÒѾ­Íê³É¡£Èç¹ûÄúÐèÒªÔÚÒÑÖ´ÐÐÁ÷³ÌºóÃæÔËÐÐÁ÷³Ì£¬Õ⽫·Ç³£ÓÐÓá£

¹¤×÷Á÷Ñ¡Ïî

ÔÊÐíÓû§¸²¸Ç¹¤×÷Á÷²ÎÊý¡£¹¤×÷Á÷²ÎÊý¸²¸Ç×÷ÒµµÄÈ«¾ÖÊôÐÔ£¬¶ø²»ÊÇ×÷Òµ±¾ÉíµÄÊôÐÔ

6.6 Ö´ÐÐ

ºóÖ´ÐÐÁ÷³Ì£¬Ä㽫Ìá½»Ö´ÐÐÁ÷³ÌÒ³Ãæ¡£»òÕߣ¬Äú¿ÉÒÔ´Ó¡° Á÷³ÌÊÓͼ¡±Ò³ÃæµÄ¡°Ö´ÐС±Ñ¡Ï£¬¡°ÀúÊ·¼Ç¼¡±Ò³Ãæ»ò¡°Ö´ÐС±Ò³Ãæ·ÃÎÊÕâЩÁ÷³Ì¡£

´ËÒ³ÃæÀàËÆÓÚ¡°Á÷³ÌÊÓͼ¡±Ò³Ã棬µ«ÏÔʾÔËÐÐ×÷ÒµµÄ״̬¡£

Ñ¡Ôñ¹¤×÷ÁÐ±í½«¸ø³öÖ´Ðй¤×÷µÄʱ¼ä±í¡£Äú¿ÉÒÔÖ±½Ó´Ó´ËÁбíÖзÃÎÊ×÷ÒµºÍ×÷ÒµÈÕÖ¾¡£

Ö»ÒªÖ´ÐÐûÓÐÍê³É£¬¸ÃÒ³Ãæ½«×Ô¶¯¸üС£

Äú¿ÉÒÔÔÚÖ´ÐÐÁ÷³ÌÉÏÖ´ÐеÄһЩѡÏî°üÀ¨£º

È¡Ïû - ɱËÀËùÓÐÕýÔÚÔËÐеÄ×÷Òµ£¬²¢Á¢¼´Ê§°Ü¡£Á÷¶¯×´Ì¬½«±»É±ËÀ¡£

ÔÝÍ£ - ×èÖ¹ÐÂ×÷ÒµÔËÐС£Ä¿Ç°ÔËÐеÄ×÷ÒµÕÕ³£½øÐС£

»Ö¸´ - »Ö¸´ÔÝÍ£Ö´ÐС£

ÖØÊÔʧ°Ü - ½öµ±Á÷³Ì´¦ÓÚFAILED FINISHING״̬ʱ¿ÉÓᣵ±Á÷³ÌÈÔÈ»»î¶¯Ê±£¬ÖØÊÔ½«ÖØÐÂÆô¶¯ËùÓÐFAILED×÷Òµ¡£¡°³¢ÊÔ¡±½«ÏÔʾÔÚ¡°×÷ÒµÁÐ±í¡±Ò³ÃæÖС£

×¼±¸Ö´ÐÐ - ½öÔÚÍê³ÉµÄÁ÷³ÌÖпÉÓã¬ÎÞÂ۳ɹ¦»òʧ°Ü¡£Õ⽫×Ô¶¯½ûÓóɹ¦Íê³ÉµÄ×÷Òµ¡£

6.7 Ö´ÐÐÒ³Ãæ

µ¥»÷±êÌâÖеġ°Ö´ÐС±Ñ¡Ï½«ÏÔʾ¡°Ö´ÐС±Ò³Ãæ¡£´ËÒ³Ãæ½«ÏÔʾµ±Ç°ÔËÐеÄÖ´ÐÐÒÔ¼°×î½üÍê³ÉµÄÁ÷³Ì¡£

6.8 ÀúÊ·Ò³

µ±Ç°ÕýÔÚÖ´ÐеÄÁ÷³ÌÒÔ¼°Íê³ÉµÄÖ´ÐгÌÐò½«ÏÔʾÔÚ¡°ÀúÊ·¼Ç¼¡±Ò³ÃæÖС£ÌṩËÑË÷Ñ¡ÏîÀ´²éÕÒÄúÒª²éÕÒµÄÖ´ÐС£»òÕߣ¬Äú¿ÉÒÔÔÚ¡° Á÷ÊÓͼִÐС±Ñ¡ÏÉϲ鿴ÏÈǰִÐеÄÁ÷³Ì¡£

6.9 ¼Æ»®Á÷³Ì

´ÓÓÃÓÚÖ´ÐÐÁ÷³ÌµÄͬһ¸öÃæ°åÖУ¬Á÷³Ì¿ÉÒÔͨ¹ýµã»÷* Schedule *°´Å¥½øÐÐÅŶ¨¡£

½«ÎªÔ¤¶¨Á÷±£ÁôÈκÎÁ÷Ñ¡Ï¡£ÀýÈ磬Èç¹û×÷Òµ±»½ûÓã¬ÔòÔ¤¶¨Á÷³ÌµÄ×÷ÒµÒ²½«±»½ûÓá£

ʹÓÃAzkaban 3.3ÖеÄеÄÁé»îµ÷¶È¹¦ÄÜ£¬Óû§¿ÉÒÔÔÚQuartzÓï·¨Ö®ºó¶¨ÒåÒ»¸öcron×÷Òµ¡£ÓëQuartz»òcron²»Í¬µÄÒ»¸öÖØÒª±ä»¯ÊÇAzkaban×î¶àÒÔ×îСµÄÁ£¶ÈÔË×÷¡£Òò´Ë£¬UIÖеĵڶþ¸ö×ֶα»±ê¼ÇΪ¾²Ì¬¡°0¡±¡£¸ÃÁé»îµÄʱ¼ä±í°Ù¿Æ½âÊÍÁËϸ½ÚÈçºÎʹÓá£

°²Åźó£¬ËüÓ¦¸Ã³öÏÖÔڼƻ®Ò³ÃæÉÏ£¬Äú¿ÉÒÔÔÚÆäÖÐɾ³ý¼Æ»®×÷Òµ»òÉèÖÃSLAÑ¡Ïî¡£

6.10 SLA

ÒªÌí¼ÓSLA֪ͨ»òÇÀÕ¼£¬Çëµ¥»÷SLA°´Å¥¡£´ÓÕâÀïÄú¿ÉÒÔÉèÖÃSLA¾¯±¨µç×ÓÓʼþ¡£¹æÔò¿ÉÒÔÌí¼Ó²¢Ó¦ÓÃÓÚµ¥¸ö×÷Òµ»òÁ÷³Ì±¾Éí¡£Èç¹û³¬¹ý³ÖÐøÊ±¼äãÐÖµ£¬Ôò¿ÉÒÔÉèÖþ¯±¨µç×ÓÓʼþ£¬·ñÔòÁ÷³Ì¿ÉÄܻᱻ×Ô¶¯É±ËÀ¡£

¹¤×÷Ò³Ãæ ¹¤×÷×é³ÉÒ»¸öÁ÷³ÌµÄ¸÷¸öÈÎÎñ¡£Òª·ÃÎÊ×÷ÒµÒ³Ãæ£¬Äú¿ÉÒÔÓÒ¼üµ¥»÷Á÷³ÌÊÓͼ£¬Ö´ÐÐÁ÷³ÌÊÓͼ»òÏîÄ¿Ò³ÃæÖеÄ×÷Òµ¡£

6.11 ÈÎÎñÒ³Ãæ

ÔÚ´ËÒ³ÃæÖУ¬Äú¿ÉÒԲ鿴×÷ÒµµÄÒÀÀµ¹ØÏµºÍÒÀÀµ¹ØÏµÒÔ¼°×÷Òµ½«Ê¹ÓõÄÈ«¾ÖÊôÐÔ¡£

6.12 ÈÎÎñ±à¼­

µ¥»÷×÷Òµ±à¼­½«ÔÊÐíÄú±à¼­³ýÌØ¶¨±£Áô²ÎÊý£¨ÀýÈçtypeºÍ£©ÒÔÍâµÄËùÓÐ×÷ÒµÊôÐÔdependencies¡£Ö»Óе±×÷ÒµÉÐδ¿ªÊ¼ÔËÐÐʱ£¬¶Ô²ÎÊýµÄ¸ü¸Ä²Å»áÓ°ÏìÖ´ÐÐÁ÷³Ì¡£ÕâЩ¸²¸Ç×÷ÒµÊôÐÔ½«±»ÏÂÒ»¸öÏîÄ¿ÉÏ´«¸²¸Ç¡£

6.13 ¹¤×÷ÀúÊ·

Èκι¤×÷µÄÖØÊÔ½«ÏÔʾΪexecutionid.attemptÊý×Ö¡£

6.14 ¹¤×÷ÈÕÖ¾

×÷ÒµÈÕÖ¾´æ´¢ÔÚÊý¾Ý¿âÖС£ËüÃǰüº¬ËùÓÐstdoutºÍstderr×÷ÒµµÄÊä³ö¡£

¹¤×÷×ܽá

¸Ã×÷ҵժҪѡÏ°üº¬ÔÚ×÷ÒµÈÕÖ¾ÐÅÏ¢µÄÕªÒª¡£Õâ°üÀ¨£º

×÷ÒµÀàÐÍ - ×÷ÒµµÄ×÷ÒµÀàÐÍ

ÃüÁîÕªÒª - Æô¶¯×÷Òµ½ø³ÌµÄÃüÁÒÔ¼°µ¥¶ÀÏÔʾµÄÀà·¾¶ºÍÄÚ´æÉèÖõÈ×Ö¶Î

Pig / Hive×÷ÒµÕªÒª - PigºÍHive×÷ÒµµÄÌØ¶¨¶¨ÖÆ

µØÍ¼ËõС×÷Òµ - ½«Map-Reduce×÷ÒµµÄ×÷ÒµIDÁбíÓëÒÑÆô¶¯µÄ×÷ÒµÁ´½Óµ½Æä×÷Òµ¸ú×ÙÒ³Ãæ

7. Azkaban Job

7.1 ´®Ðж¨Ê±ÈÎÎñ¹¤×÷Á÷

zipĿ¼½á¹¹£º

 

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background-color:transparent;white-space:pre;margin-top:0px;">|--start.job
|--finish.job
</code>

start.job

type=command
command=echo "this is start.job"

finish.job

type=command
dependencies=start
command=echo "this is finish.job"
successEmail=test@example.com
failureEmail=test@example.com

7.2 ²¢Ðж¨Ê±ÈÎÎñ¹¤×÷Á÷

zipĿ¼½á¹¹£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background-color:transparent;white-space:pre;margin-top:0px;">|--start.job
|--step1.job
|--step2.job
|--step3.job
</code>

 

step1.job

type=command
dependencies=start
command=echo "this is step1.job"

step2.job

type=command
dependencies=start
command=echo "this is step2.job"

step3.job

type=command
dependencies=step1,step2
command=echo "this is step3.job"

7.3 java¶¨Ê±ÈÎÎñ¹¤×÷Á÷

zipĿ¼½á¹¹£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background-color:transparent;white-space:pre;margin-top:0px;">|--lib
| |--AzkabanJob.jar
|--azkabanJava.job
</code>

AzkabanJob.java

package com.example;

public class AzkabanJob {

public void run() {
// ¸ù¾ÝÐèÇó±àд¾ßÌå´úÂë
}

public static void main(String[] args) {
AzkabanJob azkabanJob = new AzkabanJob();
azkabanJob.run();
}
}

azkabanJava.job

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background-color:transparent;white-space:pre;margin-top:0px;"># azkabanJob.job
type=javaprocess
java.class=com.example.AzkabanJob
classpath=lib/*
</code>

7.4 ǶÈëʽ¶¨Ê±ÈÎÎñ¹¤×÷Á÷

Ò²¿ÉÒÔ½«¹¤×÷Á÷×÷ΪÆäËû¹¤×÷Á÷³ÌÖеĽڵã°üº¬ÎªÇ¶ÈëÁ÷¡£Òª´´½¨Ò»¸öǶÈëʽÁ÷£¬Ö»Ðè´´½¨Ò»¸ö.jobÎļþ£¬type=flow²¢½«Æäflow.nameÉèÖÃΪǶÈëʽ¹¤×÷Á÷µÄÃû³Æ¡£²¢ÇÒǶÈëʽµÄ¹¤×÷Á÷ÊÇ¿ÉÒÔµ¥¶ÀÅäÖö¨Ê±ÈÎÎñµÄ£¬ÀýÈ磺

zipĿ¼½á¹¹£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background-color:transparent;white-space:pre;margin-top:0px;">|--bin
| |--flow1.sh
| |--flow2.sh
| |--flow3.sh
|
|--start.job
|--step1.job
|--step2.job
|--flow1.job
|--flow2.job
|--flow3.job
|--subflow1.job
|--subflow2.job
</code>

subflow1.job

type=flow
flow.name=flow1
dependencies=start

subflow2.job

type=flow
flow.name=flow2
dependencies=start

flow1.job

type=command
dependencies=step1
command=sh ./bin/flow1.sh

flow2.job

type=command
dependencies=step2
command=sh ./bin/flow2.sh

flow3.job

type=command
dependencies=subflow1,subflow2
command=sh ./bin/flow3.sh

×¢Ò⣺ÕâÀïµÄbinĿ¼ºÍËùÓеÄ.jobλÓÚͬ¼¶Ä¿Â¼Ï£¬./bin/flow.shÆäÖеÄ.±íʾµ±Ç°Ä¿Â¼¡£

7.5 È«¾Ö±äÁ¿

ºó´ÁÃûΪ.propertiesµÄÎļþ½«»á×÷Ϊ²ÎÊýÎļþ¼ÓÔØ£¬²¢ÇÒÔÚflowÖÐÿ¸öjob¹²Ïí£¬ÊôÐÔÎļþͨ¹ýĿ¼µÄ·Ö²ã½á¹¹¼Ì³Ð

zipĿ¼½á¹¹

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background-color:transparent;white-space:pre;margin-top:0px;">|--common.properties
|--bin
| |--start.sh
| |--finish.sh
|--start.job
|--finish.job
|--flow
| |flow.properties
| |step1
</code>

common.properties

start.nofity.email=start@example.com
finish.nofity.email=finish@example.com
step.nofity.email=step@example.com

start.job

type=command
command=sh ./bin/start.sh
notify.emails=${start.nofity.email}

finish.job

type=command
command=sh ./bin/finish.sh
dependencies=start
notify.emails=${finish.nofity.email}

flow.properties

success.email=success@example.com

step.job

type=command
command=echo "this is step"
notify.emails=${step.nofity.email}
success.email=${success.email}

common.propertiesÊÇÈ«¾ÖÊôÐÔ£¬½«»á±»start.job¡¢finish.jobÒÔ¼°flowϵÄstep.jobʹÓ㬵«ÊÇstart.jobºÍfinish.job²»Äܼ̳Ðflow .propertiesµÄÊôÐÔ£¬ÒòΪËûÊÇÔÚÆäϲ㣬¶østep.jobÊÇ¿ÉÒԼ̳Ðflow.propertiesµÄ¡£

×¢Ò⣺xxx.propertiesÖÐÉùÃ÷µÄÊôÐÔÃû²»Äܰüº¬¿Õ¸ñ£¬±ÈÈç${success email}

7.6 Hive Job

hive.job


type=hive
user.to.proxy=Azkaban
azk.hive.action=execute.query
hive.query.01=drop table words;
hive.query.02=create table words (freq int, word string) row format delimited fields terminated by '\t' stored as textfile;
hive.query.03=describe words;
hive.query.04=load data local inpath "res/input" into table words;
hive.query.05=select * from words limit 10;
hive.query.06=select freq, count(1) as f2 from words group by freq sort by f2 desc limit 10;

7.7 Hadoop Job

zipĿ¼½á¹¹£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background-color:transparent;white-space:pre;margin-top:0px;">|--system.properties
|--pig.job
|--hadoop.job
</code>

system.properties


user.to.proxy=Azkaban
HDFSRoot=/tmp
param.inDataLocal=res/rpfarewell
param.inData=${HDFSRoot}/${user.to.proxy} /wordcountjavain
param.outData=${HDFSRoot}/${user.to.proxy} /wordcountjavaout

pig.job

type=pig
pig.script=src/wordcountpig.pig
user.to.proxy=azkabanHDFS
Root=/tmp
param.inDataLocal=res/rpfarewell
param.inData=${HDFSRoot}/${user.to.proxy} /wordcountpigin
param.outData=${HDFSRoot}/${user.to.proxy} /wordcountpigout

hadoop.job

type=hadoopJava
job.class=azkaban.jobtype.examples.java.WordCount
classpath=./lib/*,${hadoop.home}/lib/*
main.args=${param.inData} ${param.outData}
force.output.overwrite=true
input.path=${param.inData}
output.path=${param.outData}
dependencies=pig

8. Azkaban Job×î¼Ñʵ¼ù

ÒÑÕýʽʹÓÃAzkabanÖ´Ðж¨Ê±ÈÎÎñ£¬ÏÂÃæ½«ÒÔtalentÏîÄ¿×éµÄ¶¨Ê±ÈÎÎñ×÷Ϊ×î¼Ñʵ¼ù´úÂë½øÐн²½â£¬

Ŀ¼½á¹¹£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background-color:transparent;white-space:pre;margin-top:0px;">meritpay
|
|--conf
| |--application.properties
| |--bootstrap.yml
| |--logback.xml
| |--mybatis-config.xml
|
|--lib
| |--talent-base-0.0.1-SNAPSHOT.jar
| |--talent-meritpay-core-0.0.1-SNAPSHOT.jar
| |--talent-meritpay-job-0.0.1-SNAPSHOT.jar
| |--xxx.jar
|
|--ComputeTask.job
|--DataCheck.job
|--ExecutePlan.job
</code>

ExecutePlan.job

type=command
command=java -Xms64m -Xmx1024m -XX:MaxPermSize=64M -Dazkaban.job.id=ExecPlan -jar talent-meritpay-job-0.0.1-SNAPSHOT.jar

ComputeTask.job


type=command
command=java -Xms64m -Xmx1024m -XX:MaxPermSize=64M -Dazkaban.job.id=ExecTask -jar talent-meritpay-job-0.0.1-SNAPSHOT.jar
dependencies=ExecutePlan

DataCheck.job

type=command
command=java -Xms64m -Xmx1024m -XX:MaxPermSize=64M -Dazkaban.job.id=DataCheck -jar talent-meritpay-job-0.0.1-SNAPSHOT.jar
dependencies=ComputeTask

9. Azkaban Ajax API

azkabanÒ²ÌṩÁËAPI½Ó¿ÚÀ´Ê¹Óã¬ÕâÑù¿ÉÒÔ»ùÓÚazkabanʵÏÖ×Ô¼ºµÄ¹ÜÀí·½Ê½£¬ÕâЩ½Ó¿ÚÊÇͨ¹ýHTTPSµÄ·½Ê½Óëweb·þÎñÆ÷½øÐÐͨÐŵģ¬ÒòΪÔÚazkabanÖÐÓÐÓû§ºÍȨÏ޵ĸÅÄËùÒÔÔÚµ÷ÓÃAPI֮ǰÐèÒªµÇ¼£¬µÇ¼³É¹¦Ö®ºó»á·µ»ØÓû§Ò»¸ösession id£¬Ö®ºóËùÓеIJÙ×÷¶¼ÐèҪЯ´øÕâ¸öidÒÔÅжÏÓû§ÊÇ·ñÓÐȨÏÞ¡£Èç¹ûsession idÎÞЧ£¬ÄÇôµ÷ÓÃAPI»á·µ»Ø"error" : "session"µÄÐÅÏ¢£¬Èç¹û²»Ð¯´øsession.id²ÎÊý£¬»á·µ»ØµÇ½½çÃæµÄhtmlÎļþÄÚÈÝ£¨ÓÐЩsession idµÄ·ÃÎÊÒ²»á·µ»ØÕâÑùµÄÄÚÈÝ£©¡£azkabanÌṩµÄAPI°üÀ¨£º¾ßÌåÇë²ÎÕÕ¹Ù·½Îĵµ£ºhttp://azkaban.github.io/azkaban/docs/latest/#ajax-api

9.1 Authenticate

Óû§µÇ¼²Ù×÷£¬ÐèҪЯ´øÓû§ÃûºÍÃÜÂ룬Èç¹û³É¹¦µÇ¼Ôò·µ»ØÒ»¸ösession idÓÃÓÚÖ®ºóµÄÇëÇó¡£

ÇëÇó²ÎÊý£º

ʵÀý´úÂ룺

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background-color:transparent;white-space:pre;margin-top:0px;">curl -k -X POST --data "action=login&username=azkaban&password=azkaban" https://localhost:8443
</code>

·µ»Ø½á¹û£º

{
"status" : "success",
"session.id" : "c001aba5-a90f-4daf-8f11-62330d034c0a"
}

9.2 Create a Project

´´½¨Ò»¸öеÄproject£¬ÕâÐèÒªÔÚÈκιØÓÚÕâ¸öproject²Ù×÷֮ǰ½øÐУ¬ÐèÒªÊäÈëprojectµÄname×÷ΪÕâ¸öprojectµÄΨһ±êʾ£¬»¹ÐèÒª°üº¬Õâ¸öprojectµÄÃèÊöÐÅÏ¢£¬ÆäʵºÍÔÚweb Ò³ÃæÉÏ´´½¨projectµÄÊäÈëÒ»Ñù¡£

ÇëÇó²ÎÊý£º

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background-color:transparent;white-space:pre;margin-top:0px;">curl -k -X POST --data "session.id=c001aba5-a90f-4daf-8f11-62330d034c0a&name=MyProject&description=test" https://localhost:8443/manager?action=create
</code>

·µ»Ø½á¹û£º

{
"status":"success",
"path":"manager?project=MyProject",
"action":"redirect"
}

9.3 Delete a Project

ɾ³ýÒ»¸öÒѾ­´æÔÚµÄproject£¬¸ÃÇëÇóûÓлظ´ÐÅÏ¢£¬ÐèÒªÊäÈëprojectµÄ±êʶ¡£

ÇëÇó²ÎÊý£º

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background-color:transparent;white-space:pre;margin-top:0px;">curl -k -X POST --data "session.id=c001aba5-a90f-4daf-8f11-62330d034c0a&delete=true&project=azkaban" https://localhost:8443/manager
</code>

 

9.4 Upload a Project Zip

ÉÏ´«Ò»¸özipÎļþµ½Ò»¸öproject£¬Ò»°ãÔÚ´´½¨Ò»¸öprojectÍê³ÉÖ®ºó£¬Ö®ºóµÄÉÏ´«½«¸²¸ÇÒÔǰÉÏ´«µÄÄÚÈÝ¡£

ÇëÇó²ÎÊý£º

file ÏîÄ¿zipÎļþ£¬ÉÏ´«ÀàÐͱØÐëÊÇapplication/zip»òapplication/x-zip-compressed

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background-color:transparent;white-space:pre;margin-top:0px;">curl -k -i -H "Content-Type: multipart/mixed" -X POST --form 'session.id=c001aba5-a90f-4daf-8f11-62330d034c0a' --form 'ajax=upload' --form 'file=@myproject.zip;type=application/zip' --form 'project=MyProject;type/plain' https://localhost:8443/manager
</code>

·µ»Ø½á¹û£º

{
"error" : "Installation Failed.\nError unzipping file.",
"projectId" : "192",
"version" : "1"
}

9.5 Fetch Flows of a Project

»ñȡһ¸öprojectϵÄËùÓÐflowÐÅÏ¢£¬ÊäÈëÐèÒªÖ¸¶¨projectµÄ±êʶ£¬Ò»¸öprojectÏÂÃæ¿ÉÄÜ´æÔÚ¶à¸öflow£¬Êä³öµÄflowÖ»°üº¬flowId±êʶÿһ¸öflow¡£

ÇëÇó²ÎÊý£º

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background-color:transparent;white-space:pre;margin-top:0px;">curl -k --get --data "session.id=c001aba5-a90f-4daf-8f11-62330d034c0a&ajax=fetchprojectflows&project=MyProject"
https://localhost:8443/manager
</code>

·µ»Ø½á¹û£º

{
"project" : "MyProject",
"projectId" : 192,
"flows" : [ {
"flowId" : "test"
}, {
"flowId" : "test2"
} ]
}

9.6 Fetch Jobs of a Flow

»ñȡһ¸öflowÏÂËùÓÐjobµÄÐÅÏ¢£¬ÒòΪÔÚAPI¶Ëÿ¸öÃüÁî¶¼ÊǶÀÁ¢µÄ£¬ËùÒÔÕâÀïÐèÒªÊäÈëprojectµÄ±êʶºÍflowµÄ±êʶ£¬Êä³ö°üº¬Ã¿Ò»¸öjobµÄÐÅÏ¢£¬°üÀ¨jobµÄ±êʶ£¨id£©¡¢job ÀàÐÍÒÔ¼°Õâ¸öjobÖ±½ÓÒÔÀ´µÄjob¡£

ÇëÇó²ÎÊý£º

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background-color:transparent;white-space:pre;margin-top:0px;" >curl -k --get --data "session.id=c001aba5-a90f-4daf-8f11-62330d034c0a&ajax=fetchflowgraph&project =MyProject&flow=test"
https://localhost:8443/manager
</code>

·µ»Ø½á¹û£º

{
"project" : "MyProject",
"nodes" : [ {
"id" : "test-final",
"type" : "command",
"in" : [ "test-job-3" ]
}, {
"id" : "test-job-start",
"type" : "java"
}, {
"id" : "test-job-3",
"type" : "java",
"in" : [ "test-job-2" ]
}, {
"id" : "test-job-2",
"type" : "java",
"in" : [ "test-job-start" ]
} ],
"flow" : "test",
"projectId" : 192
}

9.7 Fetch Executions of a Flow

»ñÈ¡flowµÄÖ´ÐÐÇé¿ö£¬ÐèÒªÖÆ¶¨Ìض¨µÄprojectºÍflow£¬Õâ¸ö½Ó¿Ú¿ÉÒÔ·ÖÒ³·µ»Ø£¬ËùÒÔÐèÒªÖÆ¶¨startÖ¸¶¨¿ªÊ¼µÄindexºÍlengthÖ¸¶¨·µ»ØµÄ¸öÊý£¬ÒòΪÿһ¸öflow ¶¼¿ÉÒÔµ¥¶ÀµÄ»òÕß×÷ΪÆäËûflowµÄ×ÓflowÖ´ÐУ¬ÕâÀï·µ»Ø¸ÃflowÖ¸¶¨Çø¼äÄÚµÄÿһ´ÎÖ´ÐеÄÐÅÏ¢¡£Ã¿Ò»¸öÖ´ÐÐÐÅÏ¢°üÀ¨Æðʼʱ¼ä¡¢Ìá½»Ö´ÐеÄÓû§¡¢Ö´ÐеÄ״̬¡¢Ìύʱ¼ä¡¢Õâ´ÎÖ´ÐÐÔÚÈ«¾ÖµÄid£¨µÝÔöµÄexecid£©£¬projectid¡¢½áÊøÊ±¼äºÍflowId¡£

ÇëÇó²ÎÊý£º

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background-color:transparent;white-space:pre;margin-top:0px; ">curl -k --get --data "session.id=c001aba5-a90f-4daf-8f11- 62330d034c0a&ajax=fetchFlowExecutions&project =MyProject&flow
=test&start=0&length=1" https://localhost:8443/manager
</code>

·µ»Ø½á¹û£º

{
"executions" : [ {
"startTime" : 1407779928865,
"submitUser" : "1",
"status" : "FAILED",
"submitTime" : 1407779928829,
"execId" : 306,
"projectId" : 192,
"endTime" : 1407779950602,
"flowId" : "test"
}],
"total" : 16,
"project" : "MyProject",
"length" : 1,
"from" : 0,
"flow" : "test",
"projectId" : 192
}

9.8 Fetch Running Executions of a Flow

»ñÈ¡µ±Ç°ÕýÔÚÖ´ÐеÄflowµÄÖ´ÐÐÐÅÏ¢£¬ÊäÈë°üÀ¨projectºÍflowµÄ±êʶ£¬·µ»ØµÄÊǸÃflowÕýÔÚÖ´ÐеÄËùÓÐÖ´ÐÐid£¨È«¾ÖµÄexec id£©¡£

ÇëÇó²ÎÊý£º

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background- color:transparent;white-space:pre;margin-top:0px; ">curl -k --get --data "session.id=c001aba5-a90f-4daf-8f11-62330d034c0a&ajax=getRunning&project =MyProject&flow=test"
https://localhost:8443/executor
</code>

·µ»Ø½á¹û£º

{
"execIds": [301, 302]
}

9.9 Execute a Flow

Æô¶¯Ò»¸öflowµÄÖ´ÐУ¬Õâ¸öÊäÈë±È½Ï¶à£¬ÒòΪÔÚweb½çÃæÉÏÿ´ÎÆô¶¯flowµÄÖ´Ðж¼ÐèÒªÉèÖü¸ÏîÅäÖ㬿ÉÒÔÔڸýӿÚÉèÖóöÁ˵÷¶ÈÖ®ÍâµÄÆòÌÖÅäÖÃÐÅÏ¢£¬ÊäÈ뻹ÐèÒª°üÀ¨projectºÍflow µÄ±êʶ£¬Êä³öΪÕâ¸öflowµÄidºÍ±¾´ÎÖ´ÐеÄexec id

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit; background-color:transparent;white-space:pre;margin- top:0px;">curl -k --get --data 'session. id=c001aba5-a90f-4daf-8f11-62330d034c0a' --data 'ajax=executeFlow' --data
'project=MyProject' --data 'flow=test' https://localhost:8443/executor
</code>

·µ»Ø½á¹û£º

{
message: "Execution submitted successfully with exec id 295",
project: "foo-demo",
flow: "test",
execid: 295
}

9.10 Cancel a Flow Execution

È¡ÏûÒ»´ÎflowµÄÖ´ÐУ¬ÐèÒªÊäÈëµÄÊÇÈ«¾ÖµÄexec

ÇëÇó²ÎÊý£º

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit; background-color:transparent;white-space:pre;margin- top:0px;">curl -k --data "session.id= c001aba5-a90f-4daf-8f11- 62330d034c0a&ajax=cancelFlow&execid=302" https://localhost:8443/executor
</code>

·µ»Ø½á¹û£º

{
"error" : "Execution 302 of flow test isn't running."
}

9.11 Flexible scheduling using Cron

ʹÓÃʱ¼ä±í´ïʽÁé»îÅäÖö¨Ê±ÈÎÎñ

ÇëÇó²ÎÊý£º

cronExpression cronʱ¼ä±í´ïʽ£¬ÔÚAzkabanÖУ¬Ê¹ÓõÄÊÇQuartzʱ¼ä±í´ïʽ¸ñʽ

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background- color:transparent;white-space:pre;margin- top:0px;">curl -k -d ajax=scheduleCronFlow -d projectName=wtwt -d flow=azkaban-training --data- urlencode cronExpression="0 23/30 5,7-10 ? * 6#3" -b "azkaban.browser.session.id=c001aba5-a90f-4daf- 8f11-62330d034c0a" http://localhost:8081/schedule
</code>

·µ»Ø½á¹û£º

{
"message" : "PROJECT_NAME.FLOW_NAME scheduled.",
"status" : "success"
}

9.12 Fetch a Schedule

¸ù¾ÝÏîÄ¿Ãû³ÆºÍ×÷ÒµÁ÷ID»ñÈ¡Æä¶ÔÓ¦µÄʱ¼ä¶¨Ê±ÈÎÎñÐÅÏ¢

ÇëÇó²ÎÊý£º

cronExpression cronʱ¼ä±í´ïʽ£¬ÔÚAzkabanÖУ¬Ê¹ÓõÄÊÇQuartzʱ¼ä±í´ïʽ¸ñʽ

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background- color:transparent;white-space:pre;margin-top:0px; ">curl -k --get --data "session.id= c001aba5-a90f-4daf-8f11- 62330d034c0a&ajax=fetchSchedule&projectId=1 &flowId=test" http://localhost:8081/schedule
</code>

·µ»Ø½á¹û£º


{
"schedule" : {
"cronExpression" : "0 * 9 ? * *",
"nextExecTime" : "2017-04-01 09:00:00",
"period" : "null",
"submitUser" : "azkaban",
"executionOptions" : {
"notifyOnFirstFailure" : false,
"notifyOnLastFailure" : false,
"failureEmails" : [ ],
"successEmails" : [ ],
"pipelineLevel" : null,
"queueLevel" : 0,
"concurrentOption" : "skip",
"mailCreator" : "default",
"memoryCheck" : true,
"flowParameters" : {
},
"failureAction" : "FINISH_CURRENTLY_RUNNING",
"failureEmailsOverridden" : false,
"successEmailsOverridden" : false,
"pipelineExecutionId" : null,
"disabledJobs" : [ ]
},
"scheduleId" : "3",
"firstSchedTime" : "2017-03-31 11:45:21"
}
}

9.13 Unschedule a Flow

È¡Ïû×÷ÒµÁ÷µÄ¶¨Ê±ÅäÖÃ

ÇëÇó²ÎÊý£º

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono' , 'Courier New', 'andale mono', 'lucida console' , monospace;padding:0px;color:inherit;background- color:transparent;white-space:pre;margin- top:0px;">curl -k https://HOST:PORT/schedule -d "action=removeSched&scheduleId=3" -b azkaban.browser.session.id=c001aba5-a90f-4daf- 8f11-62330d034c0a
</code>

·µ»Ø½á¹û£º

{
"message" : "flow FLOW_NAME removed from Schedules.",
"status" : "success"
}

Pause a Flow Execution

ÔÝÍ£Ò»´ÎÖ´ÐУ¬ÊäÈëΪexec id¡£Èç¹ûÕâ¸öÖ´Ðв»ÊÇ´¦ÓÚrunning״̬£¬»á·µ»Ø´íÎóÐÅÏ¢¡£

ÇëÇó²ÎÊý£º

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit;background- color:transparent;white-space:pre;margin- top:0px;">curl -k https://HOST:PORT/schedule -d "action=removeSched&scheduleId=3" -b azkaban.browser.session.id=c001aba5-a90f-4daf- 8f11-62330d034c0a
</code>

·µ»Ø½á¹û£º

{
"message" : "flow FLOW_NAME removed from Schedules.",
"status" : "success"
}

9.14 Resume a Flow Execution

ÖØÐÂÆô¶¯Ò»´ÎÖ´ÐУ¬ÊäÈëΪexec id£¬Èç¹ûÕâ´ÎÖ´ÐÐÒѾ­ÔÚ½øÐУ¬²»·µ»ØÈκδíÎó£¬Èç¹ûËü²»ÔÙÔËÐÐÔò·µ»Ø´íÎóÐÅÏ¢¡£

ÇëÇó²ÎÊý£º

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit; background-color:transparent;white-space:pre;margin- top:0px;">curl -k --data "session.id=c001aba5-a90f-4daf-8f11-62330d034c0a&ajax=pauseFlow&execid=303" https://localhost:8443/executor
</code>

·µ»Ø½á¹û£º

{
"error" : "Execution 303 of flow test isn't running."
}

9.15 Resume a Flow Execution

¸ø¶¨Ò»¸öexec id£¬¸ÃAPI½«»Ö¸´ÔÝÍ£µÄÔËÐÐÁ÷³Ì¡£Èç¹ûÖ´ÐÐÒѾ­±»»Ö¸´£¬Ëü²»»á·µ»ØÈκδíÎó; Èç¹ûÖ´ÐÐûÓÐÔËÐУ¬Ëü½«·µ»ØÒ»Ìõ´íÎóÏûÏ¢¡£

ÇëÇó²ÎÊý£º

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit; background-color:transparent;white-space:pre; margin-top:0px;">curl -k --data "session.id=c001aba5-a90f-4daf-8f11- 62330d034c0a&ajax=resumeFlow&execid=303" https://localhost:8443/executor
</code>

·µ»Ø½á¹û£º

{
"error" : "Execution 303 of flow test isn't running."
}

9.16 Fetch a Flow Execution

»ñȡһ´ÎÖ´ÐеÄËùÓÐÐÅÏ¢£¬ÊäÈëΪexec id£¬Êä³ö°üÀ¨Õâ´ÎÖ´ÐеÄÊôÐÔ£¨²Î¼û7£©£¬»¹°üÀ¨Õâ´ÎÖ´ÐеÄËùÓеÄjobµÄÖ´ÐÐÇé¿ö¡£

ÇëÇó²ÎÊý£º

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit; background-color:transparent;white-space:pre;margin- top:0px;">curl -k --data "session.id=c001aba5-a90f-4daf-8f11- 62330d034c0a&ajax=fetchexecflow&execid=304" https://localhost:8443/executor
</code>

·µ»Ø½á¹û£º

{
"attempt" : 0,
"submitUser" : "1",
"updateTime" : 1407779495095,
"status" : "FAILED",
"submitTime" : 1407779473318,
"projectId" : 192,
"flow" : "test",
"endTime" : 1407779495093,
"type" : null,
"nestedId" : "test",
"startTime" : 1407779473354,
"id" : "test",
"project" : "test-azkaban",
"nodes" : [ {
"attempt" : 0,
"startTime" : 1407779495077,
"id" : "test",
"updateTime" : 1407779495077,
"status" : "CANCELLED",
"nestedId" : "test",
"type" : "command",
"endTime" : 1407779495077,
"in" : [ "test-foo" ]
}],
"flowId" : "test",
"execid" : 304
}

9.17 Fetch Execution Job Logs

»ñȡһ´ÎÖ´ÐÐÖеÄÒ»¸öjobµÄÖ´ÐÐÈÕÖ¾£¬¿ÉÒÔ½«jobµÄÖ´ÐÐÈÕÖ¾×÷Ϊһ¸öÎļþ£¬ÕâÀïÐèÒªÖÆ¶¨exec

ÇëÇó²ÎÊý£º

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit; background-color:transparent;white-space:pre;margin-top:0px; ">curl -k --data "session.id=c001aba5-a90f-4daf-8f11- 62330d034c0a&ajax=fetchExecJobLogs&execid=297 &jobId=test-foobar&offset=0&length=100" https://localhost:8443/executor
</code>

·µ»Ø½á¹û£º

{
"data" : "05-08-2014 16:53:02 PDT test-foobar INFO - Starting job test-foobar at 140728278",
"length" : 100,
"offset" : 0
}

9.18 Fetch Flow Execution Updates

Õâ¸öÊÇ·µ»ØÉϴβ鿴֮ºóÿ¸öÈÎÎñµÄÖ´ÐÐÇé¿ö£¿Õâ¸öÓеãÒÉ»ó¡£Ó¦¸ÃÊÇÔÚflowÖ´ÐеÄʱºòÖ´Ðнø¶ÈµÄÐÅÏ¢»ñÈ¡¡£

ÇëÇó²ÎÊý£º

ʵÀý£º

<code style="font-family:Menlo, 'Liberation Mono', Consolas, 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace;padding:0px;color:inherit; background-color:transparent;white-space:pre;margin-top:0px; ">curl -k --data "execid=301&lastUpdateTime=- 1&session.id=c001aba5-a90f-4daf-8f11-62330d034c0a" https://localhost:8443/executor?ajax= fetchexecflowupdate
</code>

·µ»Ø½á¹û£º

{
"id" : "test",
"startTime" : 1407778382894,
"attempt" : 0,
"status" : "FAILED",
"updateTime" : 1407778404708,
"nodes" : [ {
"attempt" : 0,
"startTime" : 1407778404683,
"id" : "test",
"updateTime" : 1407778404683,
"status" : "CANCELLED",
"endTime" : 1407778404683
}, {
"attempt" : 0,
"startTime" : 1407778382913,
"id" : "test-job-1",
"updateTime" : 1407778393850,
"status" : "SUCCEEDED",
"endTime" : 1407778393845
}, {
"attempt" : 0,
"startTime" : 1407778393849,
"id" : "test-job-2",
"updateTime" : 1407778404679,
"status" : "FAILED",
"endTime" : 1407778404675
}, {
"attempt" : 0,
"startTime" : 1407778404675,
"id" : "test-job-3",
"updateTime" : 1407778404675,
"status" : "CANCELLED",
"endTime" : 1407778404675
} ],
"flow" : "test",
"endTime" : 1407778404705
}

´ÓÕâÀïµÄ½Ó¿Ú¿ÉÒÔ¿´³ö£¬azkabanÌṩµÄAPIÖ»ÄÜÓÃÓÚ¼òµ¥´´½¨project¡¢flow£¬²é¿´project¡¢flow¡¢executeµÈ²Ù×÷£¬¶øweb½çÃæµÄ²Ù×÷Òª±ÈÕâ·á¸»µÃ¶à£¬Èç¹ûÎÒÃÇÏ£Íû»ùÓÚazkaban½øÐпª·¢µÄ»°£¬ÔÚÕâЩ½Ó¿ÚµÄ»ù´¡ÉÏ£¬ÎÒ¾õµÃ»¹¿ÉÒÔ¶ÔazkabanµÄÊý¾Ý¿â½øÐзÖÎö£¬´ÓÊý¾Ý¿âÖеõ½ÎÒÃÇÏëÒªµÄÐÅÏ¢£¨»ù±¾µÄд²Ù×÷¶¼Äܹ»Í¨¹ýÕâЩAPIʵÏÖ£¬ËùÒÔÎÒÃÇÖ»ÐèÒª´ÓÊý¾Ý¿âÖжÁÈ¡£©¡£µ«ÊÇÕâÑùÏà¶ÔÓÚʹÓÃAPI»¹ÊÇÓиö±×¶Ë£¬±Ï¾¹Ëæ×Ű汾µÄ¸üÐÂÊý¾Ý¿âµÄ½á¹¹¿ÉÄܻᷢÉú±ä»¯£¬µ«ÊÇÕâÒ²²»Ê§ÎªÒ»ÖÖ·½Ê½¡£

10. Azkaban²å¼þ

10.1 Hadoop Security

Azkaban×î³£ÓÃÔÚHadoopµÈ´óÊý¾Ýƽ̨ÖС£AzkabanµÄ×÷ÒµÀàÐͲå¼þϵͳÔÊÐí´ó¶àÊýÁé»îµÄÖ§³ÖÕâЩϵͳ¡£

AzkabanÄܹ»Ö§³ÖËùÓÐHadoop°æ±¾£¬Ö§³ÖHadoop Security¹¦ÄÜ; AzkabanÄܹ»Ö§³Ö¸÷ÖÖ²»Í¬°æ±¾µÄÉú̬ϵͳ×é¼þ£¬Èçͬһ¸öʵÀýÖеIJ»Í¬°æ±¾µÄpig£¬hive¡£

Hadoop Security×î³£¼ûµÄʵÏÖ·½Ê½ÊÇÒÀÀµHadoopSecurityManagerͨ¹ý°²È«·½Ê½ÓëHadoop¼¯Èº½øÐÐͨÐźÍÈ·±£HadoopµÄ°²È«¡£

¾ßÌåÇë²Î¿¼Hadoop Security

10.2 Azkaban HDFSä¯ÀÀÆ÷

Azkaban HDFSä¯ÀÀÆ÷ÊÇÒ»¸ö²å¼þ£¬¿ÉÒÔÈÃÄú²é¿´HDFS FileSystem²¢½âÂë¶àÖÖÎļþÀàÐÍ¡£Ëü×î³õ´´½¨ÓÚLinkedIn£¬ÒԲ鿴AvroÎļþ£¬LinkedinµÄBinaryJson¸ñʽºÍÎı¾Îļþ¡£Ëæ×ÅÕâ¸ö²å¼þ½øÒ»²½³ÉÊ죬ÎÒÃÇ¿ÉÄÜ»áÔÚ½«À´Ìí¼Ó²»Í¬ÎļþÀàÐ͵ĽâÂë¡£

ÏÂÔØHDFS²å¼þ,²¢½«Æä½âѹËõµ½Web·þÎñÆ÷µÄ²å¼þĿ¼ÖУ¬Ä¬ÈÏĿ¼ÊÇ/azkaban-web-server/plugins/viewer/

¾ßÌåÇë²Î¿¼HDFS Browser

10.3 Jobtype²å¼þ

Jobtype²å¼þÈ·¶¨µ¥¸ö×÷ÒµÔÚ±¾µØ»òÔ¶³ÌȺ¼¯ÉϵÄʵ¼ÊÔËÐÐÇé¿ö¡£ËüÌṩÁ˺ܴóµÄ±ãÀû£º¿ÉÒÔÌí¼Ó»ò¸ü¸ÄÈκι¤×÷ÀàÐÍ£¬¶ø²»ÓýӴ¥AzkabanºËÐÄ´úÂë; ¿ÉÒÔÇáËɵØÀ©Õ¹AzkabanÀ´ÔËÐв»Í¬µÄhadoop°æ±¾»ò·Ö·¢°æ±¾; ÔÚÌí¼ÓÏàͬÀàÐ͵Äа汾µÄͬʱ£¬¿ÉÒÔ±£Áô¾É°æ±¾¡£µ«ÊÇ£¬ÓɹÜÀíÕâЩ²å¼þµÄ¹ÜÀíÔ±À´È·±£°²×°ºÍÅäÖÃÕýÈ·¡£

ÔÚAzkabanExecutorServerÆô¶¯ºó£¬Azkaban½«³¢ÊÔ¼ÓÔØËùÓпÉÒÔÕÒµ½µÄ×÷ÒµÀàÐͲå¼þ¡£Azkaban½«×ö·Ç³£¼òµ¥µÄ²âÊԺͶªµô»µµÄ¡£Ó¦¸Ã×ÜÊdz¢ÊÔÔËÐÐһЩ²âÊÔ×÷Òµ£¬ÒÔÈ·±£¹¤×÷ÀàÐÍÕæÕý°´Ô¤ÆÚ¹¤×÷¡£

¾ßÌåÇë²Î¿¼JobType Plugins

   
3752 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ