±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ51cto£¬±¾ÎÄÖ÷Òª½éÉÜÁ˼¸ÖÖ¿ªÔ´½â¾ö·½°¸¡¢¶öÁËôµ÷¶ÈÏµÍ³ÌØÐÔÒÔ¼°µ÷¶ÈϵͳÕûÌå¼Ü¹¹µÈ¡£ |
|
Ëæ×ŶöÁËôÔÚ´óÊý¾ÝÓ¦ÓõIJ»¶ÏÉîÈ룬ÐèÒª½â¾öÈÎÎñÊýÁ¿Ôö³¤¿ì¡¢ÈÎÎñ¶àÑù»¯¡¢ÈÎÎñ¹ØÏµ¸´ÔÓ¡¢ÈÎÎñÖ´ÐÐЧÂʵͼ°ÈÎÎñʧ°Ü²»¿É¿ØµÈÎÊÌâ¡£

¶öÁËô´óÊý¾Ýƽ̨ÏÖ×´£ºÃ¿ÌìÍê³É´óÊý¾ÝÈÎÎñ¼ÆËã 54000+;½Úµã¼¯Èº 85 ̨¡£
¿ªÔ´½â¾ö·½°¸
Ooize
Ooize »ùÓÚ¹¤×÷Á÷µ÷¶ÈÒýÇæ£¬ÊÇÑÅ»¢µÄ¿ªÔ´ÏîÄ¿£¬ÊôÓÚ Java Web Ó¦ÓóÌÐò¡£ÓÉ Oozie
Client ºÍ Oozie Server Á½¸ö×é¼þ¹¹³É¡£

Oozie Server ÔËÐÐÓÚ Java Servlet ÈÝÆ÷(Tomcat)ÖÐµÄ Web ³ÌÐò¡£¹¤×÷Á÷±ØÐëÊÇÒ»¸öÓÐÏòÎÞ»·Í¼£¬Êµ¼ÊÉÏ
Oozie ¾ÍÏ൱ÓÚ Hadoop µÄÒ»¸ö¿Í»§¶Ë¡£
µ±Óû§ÐèÒªÖ´Ðжà¸ö¹ØÁªµÄ MR ÈÎÎñʱ£¬Ö»ÐèÒª½« MR Ö´ÐÐ˳ÐòдÈë workflow.xml£¬È»ºóʹÓÃ
Oozie Ìá½»±¾´ÎÈÎÎñ£¬Oozie »áÍйܴËÈÎÎñÁ÷¡£
AzKaban

AzKaban ÊÇÒ»Ì×¼òµ¥µÄÈÎÎñµ÷¶È·þÎñ£¬ÊÇ Linkedin µÄ¿ªÔ´ÏîÄ¿£¬¿ª·¢ÓïÑÔΪ Java£¬°üÀ¨
Web Server¡¢DB Server¡¢Executor Server¡£
ËüÓÃÓÚÔÚÒ»¸ö¹¤×÷Á÷ÄÚÒÔÒ»¸öÌØ¶¨µÄ˳ÐòÔËÐÐÒ»×鹤×÷ºÍÁ÷³Ì£¬¶¨ÒåÁËÒ»ÖÖ KV Îļþ¸ñʽÀ´½¨Á¢ÈÎÎñÖ®¼äµÄÒÀÀµ¹ØÏµ£¬²¢Ìṩһ¸öÒ×ÓÚʹÓõÄ
Web Óû§½çÃæÎ¬»¤ºÍ¸ú×ÙÄãµÄ¹¤×÷Á÷¡£
AirFlow

AirFlow ÊÇÒ»¸ö±àÅÅ¡¢µ÷¶ÈºÍ¼à¿Ø Workflow µÄƽ̨£¬ÓÉ Airbnb ¿ªÔ´£¬ÏÖÔÚÔÚ
Apache Software Foundation ·õ»¯¡£
AirFlow ½« Workflow ±àÅÅΪ tasks ×é³ÉµÄ DAGs£¬µ÷¶ÈÆ÷ÔÚÒ»×é Workers
Éϰ´ÕÕÖ¸¶¨µÄÒÀÀµ¹ØÏµÖ´ÐÐ tasks¡£
ͬʱ£¬AirFlow ÌṩÁ˷ḻµÄÃüÁîÐй¤¾ßºÍ¼òµ¥Ò×ÓõÄÓû§½çÃæÒÔ±ãÓû§²é¿´ºÍ²Ù×÷£¬²¢ÇÒ AirFlow
ÌṩÁË¼à¿ØºÍ±¨¾¯ÏµÍ³¡£
¶öÁËôµ÷¶ÈÏµÍ³ÌØÐÔ
¶öÁËôµ÷¶ÈÏµÍ³ÌØÐÔÈçÏ£º
ÈÎÎñ´´½¨¼òµ¥£¬Ö´ÐÐÆµÂÊÖ§³Ö cron ±í´ïʽ¡£
ÈÎÎñ²ð·ÖΪ¶àÖÖÈÎÎñÀàÐÍ£¬Ö§³Ö 19 ÖÖÈÎÎñÀàÐÍ(¼ÆËã¡¢ÍÆËÍ¡¢³éÈ¡¡¢¼ì²â)¡£
ÈÎÎñÒÀÀµÅäÖüòµ¥£¬Ö§³Ö²»Í¬ÖÜÆÚÆ¥Å䣬Ìá¹©ÍÆ¼öÒÀÀµ£¬DAG VIEW ¹¦ÄÜ¡£
µ÷¶ÈÓëÖ´ÐÐÖ§³Ö HA£¬Æ½»¬·¢²¼£¬å´»ú»Ö¸´£¬¸ºÔؾùºâ£¬¼à¿Ø¸æ¾¯£¬¹ÊÕÏÅŲ飬¿ìËÙÀ©ÈÝ£¬×ÊÔ´¸ôÀë¡£
Ö§³ÖÈÎÎñÀàÐÍ£º
¼ÆË㣺Hive¡¢Spark¡¢PySpark¡¢MR¡¢Kylin¡£
ÍÆËÍ£ºMySQL ÍÆËÍ¡¢HBase ÍÆËÍ¡¢Redis ÍÆËÍ¡¢Cassandra ÍÆËÍ¡¢HiveToX
ÍÆËÍ¡¢MySQL ¶àÍÆ¡£
³éÈ¡£ºÊý¾Ý³éÈ¡¡£
¼ì²â£ºDal-slave ¼ì²â¡¢Êý¾ÝÖÊÁ¿¼ì²â¡¢Edsink ¼ì²â¡¢³éÈ¡Êý¾Ý¼ì²â¡¢Êý¾ÝÓÐЧÆÚ¡¢µ¼Èëµ¼³öУÑé¡£
ÆäËû£ºÓʼþ¶¨Ê±ÈÎÎñ¡£
¶öÁËôµ÷¶ÈϵͳÕûÌå¼Ü¹¹

¶öÁËôµ÷¶ÈϵͳÕûÌå¼Ü¹¹°üÀ¨ÈçÏ 5 ¸ö²¿·Ö£º
Web ·þÎñ£ºÖ÷ÒªÌṩÈÎÎñ´´½¨¡¢ÊµÀý¹ÜÀí¡¢ÈÎÎñÒÀÀµ¹ÜÀí¡¢Worker ¿ØÖÆ¡¢ÈÎÎñ¼à¿Ø¸æ¾¯µÈ¡£
µ÷¶ÈÖ´ÐУºÖ÷ÒªÓÉÖ÷±¸ Scheduler ºÍ¶à¸ö Worker ½Úµã×é³É£¬¸ºÔðÈÎÎñµÄµ÷¶ÈÓëÖ´ÐС£
»ù´¡·þÎñ£ºÌṩÁË Eless ×ÔÖú·¢²¼£¬ELK ¹ÊÕÏÅŲ飬Huskar ÅäÖÃÖÐÐÄ£¬Etrace Âñµã¼à¿Ø£¬DOG
¸æ¾¯µÈ¹¦ÄÜ¡£
µ×²ã·þÎñ£ºÌṩ Hive¡¢Spark¡¢Presto¡¢Kylin¡¢Hadoop Ö§³Ö¡£
¹«¹²ÉèÊ©£º°üÀ¨ MySQL¡¢Redis¡¢Zookeeper¡£

ÈÎÎñÔËÐйý³ÌÈçÉÏͼ£º
Web Service ÌṩµÄ API ´´½¨ÈÎÎñºÍÒÀÀµ¹ØÏµ£¬½«ÈÎÎñÐÅÏ¢´æÈë MySQL¡£
Scheduler ¶¨Ê±Éú³ÉµÚ¶þÌìËùÓÐÈÎÎñʵÀý£¬²¢¶¨Ê±ÂÖѯ¼ì²é²¢¸Ä±äÈÎÎñ״̬Ϊ Ready(ÊÇ·ñµ½ÁËÖ´ÐÐʱ¼ä£¬ÊÇ·ñÒÀÀµÒÑÍê³É)¡£
Worker Æô¶¯Ê±×¢²áÐÅÏ¢ÖÁ Zookeeper£¬²¢¶¨Ê±Éϱ¨»úÆ÷״̬¸ø Scheduler¡£
Scheduler µÄ ZkWorkerManager ¼àÌý Zookeeper£¬»ñÈ¡ Worker
µÄ×¢²áÐÅÏ¢¡£
»ñÈ¡ Ready µÄÈÎÎñ£¬TaskPacketFactory ½«ÈÎÎñ¹¹Ôì³É TaskPacket£¬Ê¹ÓöÔÓ¦µÄ
SubmitPolicy ͶµÝÈÎÎñ¸ø Worker¡£
Worker ͨ¹ý Thrift ½ÓÊÕÈÎÎñ£¬½«ÈÎÎñ½âÎö³É InterpreterContext£¬½»¸ø¶ÔÓ¦µÄ
Interpreter Ö´ÐУ¬×îÖÕÓÉ Docker ÔËÐÐÈÎÎñ¡£
Docker Ö´ÐÐÇé¿ö·µ»Ø¸ø Worker£¬Worker »Øµ÷¸ø Scheduler ½«×´Ì¬Ð´Èë MySQL¡£
¶öÁËôµ÷¶Èϵͳ¹¦ÄÜ
ÈÎÎñÒÀÀµ


ÈÎÎñÒÀÀµÍ¨¹ýÈçÏÂÁ½ÖÖ·½Ê½ÅäÖãº
ÍÆ¼öÒÀÀµ£ºÊÇͨ¹ýÈÎÎñÖ´ÐÐÍ꽫±íºÍÁеÄÐÅÏ¢´æÈë MySQL£¬ÓɶöÁËôѪԵϵͳ¸ù¾Ý±íµÄ¹ØÁª½øÐÐÍÆ¼ö¡£
ÊÖ¶¯ÒÀÀµ£ºÔòÊÇÈËΪͨ¹ý½çÃæÉèÖñíµÄÒÀÀµ¹ØÏµ¡£ÒÀÀµ¹ØÏµÖ§³Ö²»Í¬ÖÜÆÚµÄÈÎÎñÒÀÀµ£¬Æ«ÒÆÁ¿Ö§³Ö±í´ïʽ¡¾£¬¡¿¡¾~¡¿¡£
ʧ°Ü¿ìËÙ×Ô¶¯ÖØÊÔ
µ±ÈÎÎñÖ´ÐÐʧ°Üʱ£¬ÏµÍ³×Ô¶¯ÖØÐµ÷Æð£¬Ä¬ÈÏÖØÊÔ 3 ´Î;µ±ÈÎÎñͶµÝ¹ý³ÌÖУ¬½ÚµãÒò×ÊÔ´½ôÕžܾøÍ¶µÝ£¬µ÷¶È»á¸ù¾Ý¸ºÔؾùºâ²ßÂÔ³¢ÊÔͶµÝÁíһ̨»úÆ÷¡£
×ÔÖú¹ÊÕÏÅŲé

ÈÎÎñÖ´ÐдíÎó¹ÊÕÏÅŲ飺½ÚµãÌṩ HTTP ·þÎñ£¬½«ÈÎÎñÖ´ÐеÄÈÕ־ͨ¹ý HTTP ·µ»Ø¸ø Web Service
²¢Õ¹Ê¾µ½½çÃæÉÏ£¬ÌṩÓû§×ÔÖúÅŲ顣»òÕßͨ¹ýÒ³ÃæÉϵÄÁ¬½Ó·ÃÎʶöÁËô´íÎó·ÖÎöƽ̨(Grace)×Ô¶¯·ÖÎö¡£
ÈÎÎñ·ÇÖ´ÐдíÎóÅŲ飺ÈÎÎñµ÷¶ÈºÍÖ´ÐÐͨ¹ý Flume ½«ÈÎÎñÈÕÖ¾½øÐÐÊÕ¼¯£¬Í¨¹ýÔÚ ELK ÉÏËÑË÷È«¾Ö
ID ¼´¿É²é¿´µ÷¶ÈºÍÖ´ÐÐÇé¿ö¡£
¼à¿Ø¸æ¾¯
ÈÎÎñ¼à¿Ø¸æ¾¯£º¸ù¾ÝÓû§ÉèÖõĸ澯¹æÔòºÍ¸æ¾¯ÆµÂÊ£¬¶ÔÈÎÎñÖ´Ðг¬¹ýÍê³Éʱ¼äºÍʧ°ÜµÄ½øÐÐÊÖ»ú¡¢Óʼþ¡¢¶¤¶¤¸æ¾¯¡£
¹ÊÕÏ¼à¿ØºÍ¸æ¾¯£ºµ÷¶ÈºÍÖ´ÐÐ½Úµã½øÐÐ Etrace Âñµã£¬Í¨¹ý¶Ô½ÓÊÕ¡¢Ö´ÐС¢»Øµ÷µÈ¹Ø¼üµã½øÐмà²â£¬µ±Ö¸±êµÍÓÚÆäËû½Úµãʱ¼ä´°¿Úƽ¾ùֵʱ£¬½øÐи澯¡£
µ÷¶È&Ö´ÐÐ

µ÷¶ÈÖ÷±¸×Ô¶¯Çл»
µ÷¶ÈÆ÷ͨ¹ýÏò Zookeeper ×¢²á£¬²¢Ëæ»úÑ¡¾Ù³ö Leader Ìṩµ÷¶È·þÎñ¡£·Ç Leader
·þÎñ¼àÌý Leader ״̬²¢ Wait£¬µ± Leader ³öÏÖ¹ÊÕÏ£¬Á¢¼´Çл»Îª Leader ½ÇÉ«Ìṩ·þÎñ¡£
å´»ú»Ö¸´¡¢×ÔÎÒÐÞ¸´
µ±ËùÓе÷¶È¶¼å´»úʱ£¬µ÷¶È·þÎñδ»Ö¸´ÆÚ¼ä£¬Worker Ö´ÐÐ½Úµã»Øµ÷»á³öÏÖÒì³£¡£
´ËʱÈÎÎñ״̬»á´æÈë±¾µØÎļþÊý¾Ý¿â£¬²¢¶¨Ê±ÖØÊԻص÷¡£µ±µ÷¶È·þÎñ»Ö¸´Ê±£¬ÈÎÎñ״̬»Ö¸´Õý³£¡£
µ± Worker Ö´Ðнڵãå´»úʱ£¬½ÚµãÉϵÄÈÎÎñ»á´¦ÓÚÔËÐÐÖС£µ±½ÚµãÖØÆôʱ£¬Worker »á×ÔÎÒÐÞ¸´ÔËÐÐÖеÄÈÎÎñ£¬½«½ÚµãÉÏδµ÷ÆðµÄÈÎÎñÖØÐµ÷Æð£¬ÒѾÔËÐÐÖеÄÈÎÎñͨ¹ý¶ÁÈ¡
Docker Ö´ÐÐÍêдÈë±¾µØµÄ״̬Îļþ½øÐлָ´¡£
ƽ»¬·¢²¼
µ± Worker ½Úµã½øÐа汾Éý¼¶Ê±£¬ÔËÐÐÖеÄÈÎÎñ½øÐÐ×ÔÎÒÐÞ¸´£¬Í¬ÉÏ¡£
×ÊÔ´¸ôÀëºÍ¿ìËÙÀ©ÈÝ
ͨ¹ý Docker ÏÞÖÆÃ¿¸öÈÎÎñµÄ Memory ºÍ CPU ×ÊԴʹÓÃ;½«ÒÀÀµµÄµ×²ã·þÎñ´ò°ü³É¾µÏñ£¬À©ÈÝʱ±ã¿ÉÒԺܷ½±ãµÄ¹¹½¨ÐèÒªµÄ»·¾³¡£
½Úµã¹ÊÕÏά»¤

µ±½Úµã·¢Éú¹ÊÕÏ»òÐèҪά»¤Ê±£¬Worker Ö´Ðнڵãͨ¹ý Web ½çÃæ¼´¿É½øÐÐÉÏÏßÏÂÏß·þÎñ£¬ÏÂÏߺóÈÏΪ²»ÔÙ½ÓÊÕÈÎÎñ£¬µ«²»Ó°Ïì½ÚµãÉÏÔËÐÐÖеÄÈÎÎñÔËÐС£ |