±³¾°£ºÈ¥Äê10Ô£¬ÎÒÃÇʵÏÖÁËSpark
1.5.2°æ±¾ÔËÐÐÔÚMesosÕâ¸ö×ÊÔ´¹ÜÀí¿ò¼ÜÉÏ¡£ËæºóSpark³öÁËа汾ÎÒÃÇÓÖ¶ÔSpark½øÐÐÁËСÉý¼¶£¬Éý¼¶²¢Ã»ÓÐʲô̫´óµÄÄѶȣ¬ÑØÓÃ֮ǰµÄÐ޸ĹýµÄ´úÂëÖØÐ±àÒë£¬Ìæ»»Ò»Ï°ü£¬°ÑÀúÊ·ÈÎÎñÈ«²¿·¢Ò»±é¾ÍÄܺܺõÄÉý¼¶µ½1.6.1Ò²¾ÍÊÇÏÖÔÚ¼¯ÈºµÄ°æ±¾£¬1.6.2²¢Ã»ÓÐÉý¼¶ÒòΪ¸Ð¾õ¸Ä¶¯²»ÊǺܴ󡣵½ÏÖÔÚÕýºÃÒ»ÄêµÄʱ¼ä£¬ÏßÉÏÒѾע²áÁË44
¸öSparkÈÎÎñ£¬ÆäÖÐ28¸öΪStreamingÈÎÎñ£¬ÔÚÔËÐÐÕâЩÈÎÎñµÄ¹ý³ÌÖУ¬ÎÒÃÇÓöµ½Á˺ܶàÎÊÌ⣬ÆäÖÐ×î´óµÄÎÊÌâÊǶ¯Ì¬À©ÈÝÎÊÌ⣬¼´µ±ÒµÎñÏßÔö¼Ó¸ü¸´ÔӵĴúÂëÂß¼»òÕßÒµÎñµÄÔö³¤µ¼Ö´¦ÀíÁ¿ÉÏÉýµÄʱºò»áʹSparkÒò¼ÆËã×ÊÔ´²»×㣬ÕâʱºòÈç¹ûûÓÐ×öÁ÷Á¿¿ØÖÆÔòSparkÈÎÎñ»áÒòÄÚ´æ³ÐÊܲ»Á˶øÊ§°Ü£¬Èç¹û×öÁËÁ÷Á¿¿ØÖÆÔòKafkaµÄlag»áÓжѻý£¬ÕâʱºòÒ»°ã¾ÍÐèÒªÔö¼Ó¸ü¶àµÄexecutorÀ´´¦Àí£¬µ«ÊÇÔö¼Ó¶àÉÙºÏÊÊÒ»°ã²»Ì«ºÃÅжϣ¬ÓÚÊÇÒª·´¸´µØÐÞ¸ÄÅäÖÃÖØÐ·¢²¼À´ÕÒµ½Ò»¸öºÏÀíµÄÅäÖá£
ÎÒÃÇÔÚMarathonÉÏʹÓÃLogstashµÄʱºòÒ²ÓÐÀàËÆµÄÎÊÌ⣬µ±ÓÉÓÚ½ÓÈëÒ»¸ö±È½Ï´óµÄÈÕÖ¾µ¼ÖÂÁ÷Á¿Í»È»Ôö¼ÓʹµÃLogstash´¦Àí²»ÁËʱ£¬KafkaµÄLag²úÉú¶Ñ»ý£¬ÕâʱÎÒÃÇÖ»ÐèÖ±½ÓÉÏMarathonµÄ½çÃæÉϵãScaleÈ»ºóÌîÈë¸ü´óµÄʵÀýÊý×Ö¾ÍÄÜÆô¶¯ÁËһЩLogstashʵÀý×Ô¶¯Æ½ºâµØÈ¥´¦ÀíÁË¡£µ±·¢ÏÖij¸ö½áµãÊÇÂý½áµã²»¸É»îµÄʱºò£¬Ö»ÐèÒªÔÚMarathonÉϽ«¶ÔÓ¦µÄÈÎÎñKillµô¾Í»á×Ô¶¯ÔÙ·¢Ò»¸öÈÎÎñÌæ²¹ËûµÄλÖã¬ÄÇôLogstash¼ÈÈ»¶¼¿ÉÒÔ×öµ½ÎªÊ²Ã´Spark²»¿ÉÒÔ£¿Òò´ËÎÒÃǾö¶¨ÔÚSpark
2.0°æ±¾µÄʱºòÀ´ÊµÏÖÕâ¸ö¹¦ÄÜ£¬Í¬Ê±ÎÒÃÇÒ²»á¸Ä½øÆäËüµÄһЩÎÊÌ⣬ÁíÍâSpark2.0ÊÇÒ»¸ö±È½Ï´óµÄ°æ±¾Éý¼¶£¬ÅäÖÃÓë֮ǰµÄ1.6.1²»Í¬£¬²»ÄÜ×öµ½Ö±½ÓÈ«²¿ÖØ·¢Ò»±éÈÎÎñÀ´×öµ½È«²¿Éý¼¶¡£

£¨ ͼ1£©Ê¹ÓÃLogstashµÄ¹ÜÀí¼Ü¹¹
Mesos-dispacher¼Ü¹¹ÓëÎÊÌâ
ÔÚÕâÀïÎÒÃÇÊ×ÏȽéÉÜһЩMesosµÄһЩÏà¹Ø¸ÅÄMesosµÄFrameworkÊÇ×ÊÔ´·ÖÅäÓëµ÷¶ÈµÄ·¢ÆðÕߣ¬Spark×Ô´øÁËÒ»¸öspark-mesos-dispacherµÄFrameworkÓÃÀ´¹ÜÀíSparkµÄ×ÊÔ´µ÷¶È¡£¶øMarathonÒ²ÊÇÒ»¸öFrameworkËûµÄ±¾ÖʺÍmesos-dispacher»òspark
schedularÏàͬ¡£

£¨Í¼2£©Mesos-dispacher¼Ü¹¹
ÔÚͼ2ÔÚÕâ¸ö¼Ü¹¹ÖУ¬ÄãÊ×ÏȵÃÏòmesos×¢²áÒ»¸ömesos-dispacherµÄFramework£¬È»ºó£¬Í¨¹ýspark-sumbit½Å±¾À´Ïòmesos-dispacher·¢²¼ÈÎÎñ£¬mesos-dispacher½Óµ½ÈÎÎñÒÔºó¿ªÊ¼µ÷¶ÈËû¸ºÔð·¢Ò»¸öSpark
Driver£¬È»ºódriverÔÚmesosģʽÏ£¬Ëû»áÔÙ´ÎÏòmesos×¢²áÕâ¸öÈÎÎñµÄFrameworkÒ²¾ÍÊÇÎÒÃÇ¿´µ½µÄSpark
UI£¬Ò²¿ÉÒÔÀí½âΪËû×Ô¼ºÒ²ÊǸöµ÷¶ÈÆ÷£¬È»ºóÕâ¸öFramework¸ù¾ÝÅäÖÃÀ´ÏòMesosÉêÇë×ÊÔ´À´·¢Ò»Ð©Spark
Executor¡£ 
£¨Í¼3£©Mesos-dispacher¹¦ÄܽØÍ¼
´Óͼ3¿ÉÒÔ¿´³ö£¬mesos-dispacherÖ»ÌṩÁËϹ¦ÄÜ£º
ËûÖ»ÌṩÁËÒ»¸öÅäÖò鿴µÄ½çÃæ£¬¿ÉÒÔ¿´µ½×ÊÔ´·ÖÅäµÄÐÅÏ¢£¬µã½øÈ¥ÒÔºó¿ÉÒÔ¿´µ½SparkConfµÄһЩ²ÎÊý£¬µ«ÊÇÕâ¸öÎÒÃÇÔÚÒµÎñÏß·¢²¼µÄʱºòÒѾÄõ½ÁËÕâЩÅäÖã¬ÔÚÕâÀïÖ»ÄÜÈ·ÈÏÏÂDriverÊÇ·ñÅäÖÃÕýÈ·£¬²¢ÇÒÔÚSparkUIÉÏÒ²ÄÜ¿´µ½¡£
Ëû×Ô´øÒ»¸öDriver¶ÓÁУ¬Ëû»á°´Ë³ÐòÒÀ´Î·¢²¼£¬µ±×ÊÔ´²»×ãʱ»áÔÚ¶ÓÁÐÀïµÈ´ý¡£
Ëû×Ô´øÒ»¸öDriverµÄHA¹¦ÄÜ£¬µ«Êǵ±ÄãÌá½»Driver´úÂëÓÐÎÊÌ⣬Ëû»á²»¶ÏµØ·´¸´ÖØ·¢£¬±È½ÏÄÑɱµô£¬µ«Ò²ÊÇÄÜɱµôµÄ£¬²¢ÇÒûÓдÎÊýÏÞÖÆ¡£ËùÒÔÎÒÃÇÒ»°ãÒ²²»¿ª·ÅÕâ¸ö¹¦ÄÜ¡£
ËùÒÔmesos-dispacher²¢²»ÊÇÒ»¸öÍ걸µÄFramework£¬ÔÚÎÒÃÇʹÓõĹý³ÌÖз¢ÏÖÁË´æÔÚÒÔϵÄÎÊÌ⣺
ÔÚÎÒÃÇ·¢²¼SparkµÄʱºòÐèÒªÏòmesos-dispacherÌṩһ¸öSPARK_EXECUTOR_URIµÄÅäÖÃÀ´ÌṩSPARKÔËÐл·¾³µÄµØÖ·£¬Ò»¿ªÊ¼ÎÒÃÇÊÇʹÓÃhttpµÄ·½Ê½À´·Å»·¾³µÄ£¬µ«ÊÇÔÚÒ»´ÎÐèÒª·¢60¸öexecutorµÄʱºòÁ÷Á¿´òÂúÁË£¬ÔÒòÊÇÎÒÃDZàÒë³öÀ´µÄSparkµÄ»·¾³°ü´ó¸Å250MB£¬ÔÚ·¢²¼µÄʱºò60̨»úÆ÷ͬʱÀÈ¡Õâ¸ö»·¾³¾Í°ÑÁ÷Á¿´ò±¬ÁË¡£Òò´ËÎÒÃǵĽâ¾ö·½°¸¾ÍÊÇÔÚÿһ̨»úÆ÷É϶¼²¿ÊðSparkµÄ»·¾³£¬°ÑSPARK_EXECUTOR_URIÉè³É±¾µØÄ¿Â¼À´½â¾öÕâ¸öÎÊÌâ¡£
½çÃæÉϵÄÅäÖò¢²»»áÕæÕýµØÍ¬²½µ½driver»òexecutor¡£ÓÉÓÚSPARKµÄÅäÖúÜÁé»î£¬ÄãµÄmesos-dispacherÆô¶¯µÄʱºò»á¶ÁÈ¡spark-defalut.confÀ´¼ÓÔØÅäÖã¬Ã¿´Î·¢²¼Ê±ËûÓÖ»á´Óspark-env.confÀï¶ÁÈ¡ÅäÖ㬷¢driverµÄʱºò£¬driverÓÖ»á´ÓËûµÄjar°üÀïµÄÅäÖöÁÈ¡ÅäÖã¬Óû§×Ô¼ºÒ²¿ÉÒÔÉèÖÃsparkConfµÄÅäÖã¬executorµÄjar°üÀïͬÑùÒ²ÓÐÅäÖã¬×îÖÕÄã»á·¢ÏÖÓÐЩÅäÖÃÉèÁËÉúЧÁË£¬ÓÐЩÅäÖõÄÉèÖÃËûûÓд«µÝ£¬´Ó¶øÔì³ÉÅäÖûìÂÒ¡£
mesos-dispacher»ù±¾¹¦ÄÜȱʧ¡£mesos-dispacherËäÈ»ÊÇרÃÅΪmesosÉè¼ÆµÄ£¬µ«ÊÇËû¶ÔmesosµÄ»ù±¾¹¦ÄÜ£¬ÈçroleºÍconstrainÖ§³Ö¶¼²»ºÃ£¬Èç¹û²»Ð޸ĴúÂëÊÇÎÞ·¨Ö§³ÖroleºÍconstrain£¬¹ØÓÚÕâ¸öÎÒÌá½»Á˸öÒ»PR²¢ÇÒÔÚSpark2.0ÒѾûÓÐÕâ¸öÎÊÌâÁË¡£
mesos-dispacher²¢²»ÄÜÔËÐÐʱÐÞ¸ÄÅäÖ㬱ØÐëÖØÆô¡£±ÈÈçÎÒÃÇÉÏÁËһЩлúÆ÷£¬´òÁËÆäËüһЩ±êÇ©»òÕßÊǶà±êÇ©£¬Èç¹ûÏëʹÆäÉúЧ±ØÐëÍ£Ö¹mesos-dispacherÔÙÆô¶¯²ÅÄÜÉúЧ£¬ÎÞ·¨ÔÚÔËÐÐʱÐ޸ġ£mesos-dispacherĬÈϹ¤×÷ÔÚ·ÇHAģʽÏ£¬Òò´ËÔÚÆô¶¯mesos-dispacherÔÚµÄʱºòÒ»¶¨Òª¼ÓÉÏMesosrµÄzkÕâÑùµ±Í£Ö¹ÁËmesos-dispacherÒÔºó£¬ÔÚmesos-dispacherÉϵÄÈÎÎñ½«²»»áÊܵ½Ó°Ï죬µ±ÖØÐÂÆô¶¯mesos-dispacherµÄʱºò»á×Ô¶¯½Ó¹ÜÈÎÎñ¡£
ûÓж¯Ì¬À©Èݹ¦ÄÜ¡£ÎÒÃÇÏ£Íû×öµ½µÄ¾ÍÊÇ¿ÉÒÔÈÃSpark¿ÉÒÔÔÚÔËÐÐʱÔö¼ÓʵÀý»ò¼õÉÙ£¬µ«ÊÇÊÜÓڼܹ¹ÏÞÖÆmesos-dispacherÖ»ÄܹÜÀídriver£¬Èç¹û¸Ämesos-dispacherµÄ´úÂëµÄ»°Ö»ÄÜʵÏÖ¶¯Ì¬À©driverûÓÐÒâÒå¡£
´ËÍâÒ²ÓÐÁíÒ»ÖÖ·½°¸¾ÍÊǰïÖúSpark¸Ä½øËûµÄFrameworkʹËû¸üÇ¿´ó£¬µ«ÊÇÎÒÃÇ·¢ÏÖÖ»ÐèÒªMarathonÕâÒ»¸öÓÅÐãµÄFramework¾Í¿ÉÒÔÁË£¬Öظ´ÔìÂÖ×ӵijɱ¾±È½Ï´ó¡£Í¬Ê±Ò²²»Ï£Íû¶ÔSpark´úÂëÓйý¶àµÄÐ޸ģ¬ÕâÑù²»ÀûÓÚÉý¼¶¡£
Marathon+Dockerͳһ¼Ü¹¹
ÓÉÓÚmesos·¢²¼ÓкܶàÖÖģʽ£¬ÎÒÃÇÔÚ×öÕâ¸öʱºòÖ÷Òª¿¼²ìÁË2ÖÖģʽ¡£
¶ÀÁ¢¼¯ÈºÄ£Ê½
¸ÃģʽÐèÒªÆô¶¯Ò»¸ömaster×÷Ϊ·¢²¼µÄÈë¿Ú£¬ÔÙ¶Ôÿ¸öʵÀý·Ö±ðÆô¶¯slave¡£Õâʱºòÿ¸öslaveÔÚÆô¶¯µÄʱºò×ÊÔ´ÒѾ¹Ì¶¨ÁË¡£ÔÙÔö¼Ó×ÊÔ´µÄʱºòÐèÒªÆô¶¯ÐµÄslaveÈ»ºóֹ֮ͣǰµÄÈÎÎñÐÞ¸Ä×ÊÔ´ÅäÖÃÊýÖØ·¢£¬ÕâÖÖģʽµÄºÃ´¦ÊÇÓÐÒ»¸öµ¥¶ÀµÄ½çÃæ£¬Äã¿ÉÒÔÖ±½Ó¸øÒµÎñÏßÕâ¸ö¶ÀÁ¢¼¯ÈºÄ£Ê½µÄ½çÃæÀ´Ó㬽çÃæÉÏËûÃÇ¿ÉÒÔ¸ù¾Ý×Ô¼º¹Ì¶¨µÄ×ÊÔ´·¢¶à¸öÈÎÎñ£¬²¢ÇÒÔÚSparkUIÉÏ¿ÉÒÔÖ±½Ó¿´µ½ÈÕÖ¾¡£ÁíÍâËüÊÇÔ¤ÏÈÕ¼×ÊԴģʽ£¬ÔÚ·¢²¼Ê±²»»áÓÐ×ÊÔ´ÕùÇÀµ¼ÖÂ×ÊÔ´²»¹»µÄÇé¿ö£¬µ«ÊÇȱµã¾ÍÊÇ×ö²»µ½ÔËÐÐʱµÄ¶¯Ì¬À©ÈÝ¡£
·Âmesos-dispacherģʽ
¸ÃģʽÏ£¬ÎÒÃÇʹÓÃMarathonÕâ¸öframeworkÀ´Ä£·Âmesos-dispacherËù×öµÄÊ£¬¾ÍÊÇÏÈ·¢Ò»¸ödriverÈ»ºóÔÙ·¢executor¹ÒÔØµ½driverÀ´Ö´ÐÐÈÎÎñ¡£¹ØÓÚÈÕÖ¾£¬ÎÒÃÇ»¹ÊÇʹÓÃ֮ǰµÄ·½Ê½µ÷ÓÃMesosµÄ½Ó¿ÚÀ´»ñµÃÈÕÖ¾¡£µ±ÐèÒªÔö¼Ó×ÊÔ´µÄʱºòÖ±½ÓÍù½áµã¼ÌÐø¹Òexecutor¾Í¿ÉÒÔ£¬µ±ÐèҪɾ³ý½áµãµÄʱºòÖ±½ÓÍ£Ö¹executor¼´¿É¡£
ʵʩ¹ý³Ì 
£¨Í¼4£©·Âmesos-dispacherģʽ
ÈçºÎʵÏÖ·Âmesos-dispacherģʽ
ÎÒÃÇÒª×öµÄÊÂʵ¼ÊÉÏÊǰÑͼ2µÄ¼Ü¹¹Í¼±ä³Éͼ4µÄģʽ£¬ÆäÖÐStep 1ºÍStep 2ÐèҪģ·Â£¬¶øStep
0Ôò²»ÐèÒª£¬ÒòΪStep 0Ö»ÊÇÆô¶¯FrameworkµÄ¡£ÎÒÃÇͨ¹ý¹Û²ìmeos-dispacher·¢ÏÖStep
1Ëù×öµÄʵ¼ÊÉÏÊǵ÷ÓÃSpark SubmitÏòMesos×¢²áÒ»¸öFrameworkÈ»ºóÔÙÓÉdriverÀ´¸ºÔðµ÷¶È£¬ÎÒÃÇÀûÓÃmesosµÄconstraintsµÄÌØÐÔ£¬ÉèÖÃÒ»¸ö²»´æÔڵIJ»¿Éµ÷¶ÈµÄ²ßÂÔ£¬ÀýÈ磺colo:none£¬ÕâÑùÒ»À´driver¾ÍÎÞ·¨¹ÜÀí×ÊÔ´£¬¶øÎÒÃÇʹÓÃMarathon×Ô¼ºÀ´·¢²¼Spark
ExecutorÀ´¹Òµ½driverÉÏÀ´ÊµÏÖMarathon¿ØÖÆSparkµÄ×ÊÔ´µ÷¶È²ßÂÔ¡£ÓÉÓÚMesosËûÊǰÑOfferÍÆË͸øFrameworkµÄÕâÒ»ÌØÐÔ£¬ÎÒÃÇʹÓõÄÕâÖÖ·½Ê½Ò²²»»áÓÐÐÔÄÜÎÊÌâ¡£

£¨Í¼5£©Ö÷Òª´úÂë
ÄÇôͼ2ÖеÄStep 2ÊÇÈçºÎ×öµ½µÄÄØ£¿ÎÒÃÇͨ¹ý·ÖÎöSparkÔ´´úÂë·¢ÏÖ£¬Spark 2.0.2ÔÚExecutor¹Òµ½drvierÉÏÊÇͨ¹ýͼ5µÄÃüÁîÀ´×öµ½µÄ¡£ËùÒÔͨ¹ýMarathon·¢²¼Spark
ExecutorµÄ»ù±¾ÔÀí¾ÍÊÇÄ£·ÂÉÏÃæµÄͼ5´úÂë¡£
´Óͼ6¿ÉÒÔ¿´³öMarathon·¢²¼µÄʱºòÏÈ·¢Spark DriverÄõ½mesos·ÖÅäµÄSpark
DriverµÄIPºÍPORTÌîÈë½Å±¾£¬Õâ¸ö²ÎÊýÊÇDriverÓëExecutorÖ®¼äͨÐŵÄͨµÀ£¬ÔÚ·¢Spark
ExecutorµÄʱºòÐèÒªÌṩ£¬Õâ¸öDriverµÄIPÎÒÃÇͨ¹ýMesos½Ó¿Ú¿ÉÒÔÄõ½£¬ÒòΪDriver»áÏòMesos×¢²áÒ»¸öFramework£¬ÎÒÃÇÄõ½FrameworkµÄÐÅÏ¢¾ÍÄõ½ÁËIPºÍPORT£¬Í¬Ê±ÎÒÃÇ»¹¿ÉÒÔÄõ½FrameworkIDÄÇÕâ¸öPORTÊÇÔÚÖÆ×÷Docker¾µÏñµÄʱºòËæ»ú·ÖÅäµÄÒ»¸öPORT0µÄÒ»¸ö»·¾³±äÁ¿£¬È»ºóͨ¹ýspark.driver.portÖ¸¶¨£¬ÕâÑùExecutorÕâ¶Ë¾Í¿ÉÒÔµ÷ÓÃMarathonµÄREST
APIÀ´Äõ½driverµÄPort¡£
¶ø²ÎÊýexecutor-idÊÇSpark Driverµ÷¶Èʱ°´Ë³Ðò·ÖÅäµÄID£¬´Ó0¿ªÊ¼Ã¿´ÎµÝÔö1£¬ÈçºÎÉú³Éexecutor-idÄØ£¿Õâ¸öÓÉSpark
Executor×Ô¼ºÉú³ÉÒ»¸ö²»³¬¹ýintµÄ·¶Î§µÄ²»Öظ´µÄËæ»úÊý¼´¿É£¬Õâ¸öµÄIDµÄ²»»áÓ°ÏìÆäËüÐÐΪ¡£hostname¿ÉÒÔÖ±½Óͨ¹ýÃüÁî»ñÈ¡¡£coresÊÇÎÒÃÇͨ¹ýÓû§Ìá½»µÄÅäÖÃÀ´¼ÆËã³öÀ´µÄ£¬Õâ¸öCoreÐèÒªÌîspark.executor.coresÒ²¾ÍÊÇÿ¸öSpark
ExecutorµÄÕý³£Ê¹ÓõÄCoreÓëspark.mesos.extra.cores·ÖÅä¸øÃ¿¸öSpark
ExecutorÖ®ºÍ¡£

£¨Í¼6£©Executor·¢²¼Ê¾Òâͼ
×îºóÒ»ÏîÄ¿app-idͨ¹ýÑо¿·¢ÏÖÔÚMesosÉÏʵ¼ÊÉϾÍÊÇFramework IDÖ±½Óͨ¹ýMesos½Ó¿Ú¾Í¿ÉÒÔ»ñµÃ¡£ÕâÑùÎÒÃǾÍÍê³ÉÁËExecutorµÄ·¢²¼£¬Í¨¹ýÆ´ÉÏÊöµÄÃüÁîÀ´°ÑSpark
Executor¹Òµ½ÁËDriverÉÏ£¬µ«ÊÇʵ¼ÊÉú²úÓ¦ÓÃÖУ¬ÎÒÃÇ·¢ÏÖÁË£¬Ëû»¹´æÔÚDriverºÍExecutorµÄͬ²½ÎÊÌâ¡£
Spark ReceiverµÄƽºâÎÊÌâ
ÕâÀï½éÉÜÒ»ÏÂÔÚKafkaʹÓÃÁ˸߽×APIʱ£¬Ó°ÏìSparkÐÔÄܵÄReceiverƽºâÎÊÌ⣬ʹÓõͽ×APIÔò²»»áÓÐÕâ¸öÎÊÌâ¡£Èç¹ûʹÓÃSparkÌṩµÄKafka¸ß½×API£¬Äã»áÔÚ´úÂëÀïÔ¤ÏÈÖ¸¶¨ºÃReceiverµÄÊýÁ¿£¬È»ºóÔÙ×öÒ»¸öUnion£¬ÔÚSpark´úÂëÖÐËûʵ¼ÊÉÏÊÇÕâÑù×öµÄ£¬Ëû»áÏȵȴýExecutorÁ¬ÉÏDriver£¬Ä¬ÈÏÊÇ30sÈç¹û³¬¹ýÁ˵÷¶ÈµÄʱ¼äÔò¿ªÊ¼½øÐÐReceiverµÄµ÷¶È£¬¶øµ÷¶È²ßÂÔÊÇReceiverPolicyÀàÀïдËÀµÄ£¬ReceiverPolicyµÄµ÷¶È²ßÂÔ¿ÉÒÔ¸ÅÀ¨Îª£¬¾¡Á¿±£Ö¤¾ùÔȵķÖÅä¸øÃ¿¸öHostÒ»¶¨Á¿µÄRecevier¡£

£¨Í¼7£©Æô¶¯3¸öSpark Executor ʾÀý
¾Ù¸öÀý×ÓÀ´Ëµ£¬Èçͼ7µ±ÄãÆô¶¯ÁË3¸öSpark Executorʱ£¬Èç¹û´úÂëÀïÖ¸¶¨ÁËÆô¶¯1¸öExecutor£¬Èç¹ûÿ¸öExecutorÆô¶¯ÔÚÁ˲»Í¬µÄHostÏ£¬SparkÔÚReceiverµ÷¶È¿ªÊ¼Ê±Ëæ»úµØÖ¸¶¨Ò»¸öExecutorÆô¶¯Receiver²¢·ÖÅä1¸öCore¸øÕâ¸öTask¡£µ«ÊÇÈç¹û´úÂëÀïÖ¸¶¨Îª2¸öReceiver¶ø2¸öExecutorÆô¶¯ÔÚÁËͬ1¸öHost1ÉÏ£¬ÁíÒ»¸öÆô¶¯ÔÚÁËHost2ÉÏ£¬Ò²¾ÍÊÇReceiverµÄÊýÁ¿µÈÓÚHost
UniqueÊýÁ¿£¬ÔòËû»áÔÚHost1Öб£Ö¤ÆäÖеÄÒ»¸öExecutorÆô¶¯1¸öReceiver£¬Host2ÖÐÆô¶¯Ò»¸öReceiver¡£Èç¹ûReceiverµÄÊýÁ¿£¬´óÓÚÁËHost
UniqueµÄÊýÁ¿ÈçµÚÈýÕÅͼ£¬ÔòËû»áÔÚËæ»úµØÔÚHost1»òÕßHost2ÖпªReceiver£¬Õâ¾Í´øÀ´ÁËÒ»¸öÎÊÌâ¡£·ÖÎöSparkÔ´´úÂë¿ÉÖªSpark
DriverºÍSpark ExecutorÖ®¼äͨ¹ýÔËÐÐÒ»¸öDummyJob£¬Ò²¾ÍÊÇÒ»¸öMapReduceÈÎÎñÀ´±£Ö¤ËûÃÇÖ®¼äµÄͬ²½µÄ£¬µ«ÊÇËûÕâÖÖ×ö·¨Ö»Äܱ£Ö¤Ò»¸öSpark
Executor¹ÒÔÚÁËSpark DriverÉÏ£¬¶ø²»Äܹ»±£Ö¤ËùÓеÄExecutor±ÈÈçµ±Ö»ÓÐÒ»¸öSpark
Executor¹ÒÔÚSpark DriverÉϵÄʱºò£¬Õâʱºò¿ªÊ¼Receiver¿ªÊ¼µ÷¶È¡£
ÈçºÎ±£Ö¤DriverºÍExecutorÖ®¼äͬ²½
¶Á¹ýSpark¹Ù·½ÎĵµµÄÅóÓѶ¼ÖªµÀ£¬SparkÌṩÁË2¸ö²ÎÊýÈ¥½â¾öÕâ¸öÎÊÌ⣬ËûÃÇ·Ö±ðÊÇspark.scheduler.maxRegisteredResourcesWaitingTimeÓÃÀ´ÉèÖÃÒ»¸öµÈ´ýExecutor¹ÒÉϵÄʱ¼äºÍspark.scheduler.minRegisteredResourcesRatioÓÃÀ´¼ì²é×ÊÔ´·ÖÅäµÄ±ÈÀý£¬µ«ÊÇʹÓÃÎÒÃÇÕâÖÖ·½Ê½ÕâÁ½¸ö²ÎÊý¶¼²»Æð×÷ÓÃÁË£¬ÒòΪSparkÔÚʵÏֵĹý³ÌÖÐÊÇͨ¹ýÒ»¸öÔËÐÐÒ»¸öDummyJobÀ´±£Ö¤ÕâÖÖ¹ÒÔØµÄ·½Ê½Í¬²½µÄ£¬ÕâÒ²ÊÇΪʲôµÚÒ»¸öÈÎÎñÒ»¶¨ÊÇ70¸öTaskµÄÔÒò£¬µ«ÊÇËûÕâÖÖ·½Ê½Ö»Äܱ£Ö¤Ò»¸öExecutor¹ÒÉÏÈ¥ÁËÒÔºó²Å¿ªÊ¼µ÷¶ÈRecevier,Òò´ËÎÒÃǶÔÔ´´úÂë½øÐÐÁËÐ޸ģ¬Ö÷ÒªÊÇReceiverTrackerÄDz¿·Öͨ¹ýÎÒÃÇ×Ô¶¨ÒåµÄÒ»¸öÅäÖã¬ÈÃExecutorÊýÁ¿´ïµ½Ö¸¶¨µÄ¸öÊýÒÔºó²Å¿ªÊ¼·¢²¼£¬ÕâÑùÔÚReceiverµ÷¶ÈµÄʱºò²Å»á±£Ö¤Äܹ»¾ùÔȵطÖÅäÔÚ¸÷¸ö½áµã£¬´Ó¶øÊµÏÖ×îºÃµÄÐÔÄÜ¡£ÁíÍâ¶ÔÓÚÒµÎñÏßдµÄjar°ü£¬ÎÒÃÇÊÇÒªÇó´ò³Éassembly°üÈ»ºóÌá½»µ½ÎÒÃǵķ¢²¼ÏµÍ³£¬·¢²¼ÏµÍ³»áÉÏ´«µ½swiftÉÏ£¬ÔÚ·¢²¼µÄʱºò£¬ÎÒÃÇ»áÏÈÔÚÈÝÆ÷Àï°Ñ°üÏÂÔØÏÂÀ´£¬È»ºóÆô¶¯Spark
Driver£¬¶øµ±Spark Executor¹ÒÔÚSpark DriverÉϵÄʱºò£¬ËûÃÇ»á×Ô¶¯´ÓSpark
Driver»ñÈ¡¶ÔÓ¦µÄjar°ü¡£
ÈçºÎ±£Ö¤ÈÝÆ÷µÄʱ¼äºÍ±àÂëµÄ׼ȷÐÔÈÃÅäÖÃͬ²½
֮ǰÔÚ²¿Êð1.6.1µÄmesos-dispacher¼Ü¹¹µÄʱºò£¬ÎÒÃǾÍÒѾ·¢ÏÖ£¬ Spark´ò³öµÄÖÐÎÄÈÕÖ¾»á²úÉúÂÒÂ룬ȻºóÎÒÃÇ×öÁ˸÷ÖÖʵÑé·¢ÏÖ£¬ÎÞÂÛÈçºÎÉèÖÃJVM²ÎÊý£¬»òÊÇʹÓôúÂë½øÐÐÄÚ²¿µÄת»»¶¼½â¾ö²»ÁËÂÒÂëÎÊÌ⣬ÔÚмܹ¹µÄDocker»·¾³ÖÐÒ²²»ÀýÍ⣬²»¹ý×îÖÕ»¹ÊÇÈÃÎÒÃǽâ¾öÁË£¬ÎÒÃÇ·¢ÏÖͨ¹ýÉèÖÃJAVA_TOOL_OPTIONSÕâ¸ö»·¾³±äÁ¿£¬JAVAÐéÄâ»úµÄ²ÎÊý²ÅÕæÕýµÄÐÞ¸ÄÉúЧ£¬ÓÚÊÇÎÒÃÇÔÚÈÝÆ÷Æô¶¯µÄʱºòÅäÖÃÁËfile.encoding=UTF-8£¬ÂÒÂëÎÊÌâµÃ²ÅÒÔ½â¾ö£¬³ý´ËÖ®ÍâÔÚDocker¾µÏñÖÐϵͳµÄʱ¼äÒ²ÊDz»×¼È·µÄ£¬Ä¬ÈÏÊÇUTCʱ¼ä£¬¶øÏµÍ³Ê±¼ä¶Ô´úÂëµÄÓ°ÏìÒ²ºÜ´ó£¬ÓпÉÄÜдÈëµ½HDFSµÄÎļþÊÇÒÔʱ¼ä´ÁÉú³ÉµÄ£¬ÎÒÃÇÒ»¿ªÊ¼½â¾öÕâ¸öÎÊÌâµÄ·½·¨ÊÇͨ¹ýÒÔÖ»¶ÁµÄ·½Ê½ÔÚDockerÖйÒÔØËÞÖ÷»úÉϵÄ/etc/localtimeÀ´ÐÞÕýʱ¼ä£¬µ«ÊÇ·¢ÏÖʱ¼ä»¹ÊDz»ÕýÈ·£¬ÕâʱÒòΪSparkÄÚ²¿»¹»á¸ù¾ÝÊ±Çø×Ô¶¯ÐÞÕýʱ¼äΪUTC£¬ËùÒÔ»¹ÐèÒª¸øJVM¼ÓÒ»¸ö»·¾³±äÁ¿ÉèÖÃuser.timezone=PRC
ÕâÑùʱ¼ä²Å¿ÉÒÔ±£Ö¤Ê±¼äÊǶԵģ¬ÁíÍâʹÓÃÕâÖּܹ¹µÄʱºòspark.driver.extraJavaOptionsºÍspark.executor.extraJavaOptionsÕâÁ½¸ö²ÎÊýÒ²²»»áÉúЧ£¬ÐèÒªÓû§Í¨¹ý·¢²¼ÅäÖô«¹ýÀ´£¬È»ºóÔÚÈÝÆ÷ÖÐ×·¼Óµ½JAVA_TOOL_OPTIONS¡£ÁíÍâÖµµÃ×¢ÒâµÄÊÇSPARK_EXECUTOR_MEMORYÒ²²»»áͬ²½£¬ÐèÒªÊÖ¶¯À´½øÐÐÉèÖá£
ÈçºÎ±£Ö¤driverºÍexecutorʧ°Üʱͬ²½
ËäÈ»ÎÒÃÇ֮ǰ½â¾öÁËmarathon·¢²¼driverºÍexecutorÖ®¼äµÄÁ¬½ÓÎÊÌ⣬µ«ÊÇÓÉÓÚmesos½Ó¿ÚÂý£¬ÔÚÎÒÃÇʵ¼Ê²âÊÔÖУ¬·¢30¸öexecutor¾Í¿ÉÒÔ°Ñmesos´ò¹Ò£¬Òò´Ë£¬ÎÒÃÇÏëÁËÁíÒ»¸ö°ì·¨À´½â¾öÕâ¸öÎÊÌ⣬ÎÒÃÇÊ×ÏÈÐÞ¸ÄÁËSpark´úÂ룬ÈÃËûµÄSpark
DriverÔÚ²»ÒÀÀµmesos-dispacherµÄÇé¿öÏÂʵÏÖdriverµÄHA£¬HAµÄʵÏÖÔÀí´ó¸Å¾ÍÊÇÿ´ÎÔÚSpark
DriverÆô¶¯×¢²áFrameworkµÄʱºò£¬°ÑFramework ID´æµ½zkÀȻºóÔÚ³ÌÐò¹ÒµôÁËÒÔºó±£³ÖFrameworkÓëMesosµÄÁ¬½Ó£¬ÔÚÏÂ´ÎÆô¶¯µÄʱºòÖØÐÂ×¢²áÕâ¸öFramework£¬ÕâÑùµÄ»°£¬Framework
ID¿ÉÒÔ»ù±¾±£³Ö²»±ä£¬ÔÚ·¢²¼Spark ExecutorµÄʱºò¾Í¿ÉÒԹ̶¨×¡Õâ¸öFramework IDÔÚExecutor¹ÒµôµÄʱºòmarathonÀÆðÀ´Ò²Äܱ£Ö¤ÖØÁ¬£¬¶ødriverÈç¹û¹ÒµôµÄ»°£¬Ëû»áÖØÐÂ×¢²á£¬»ñµÃµÄFramework
ID²»±ä£¬ÓÖ¿ÉÒÔ¼ÌÐøÔËÐУ¬ÕâÑù×öÖ»ÐèÒªÔÚSpark Driver·¢²¼Íê³ÉÒÔºóµ÷ÓÃÒ»´ÎMesos½Ó¿ÚÄõ½Framework
ID·Ö·¢¸øSpark Executor¾Í¿ÉÒÔÁË¡£Ë³±ã˵һÏÂSpark ExecutorÄÃSpark
DriverµÄipºÍportÊÇͨ¹ýµ÷Marathon½Ó¿ÚʵÏÖÁË£¬¶øMarathon½Ó¿ÚËٶȺܿ죬²»»áÓÐÕâ¸öÎÊÌâ¡£
ÈçºÎÉý¼¶Spark°æ±¾
¶ÔÓÚÒµÎñÏßµÄÈÎÎñÀ´ËµÉý¼¶SparkÊÇÒ»¼þ±È½ÏÂé·³µÄÊ£¬Ö÷ÒªÔÒòÊÇÐèÒªËûÃǸĴúÂ룬²»¹ý´Ó¸Ä´úÂëµÄ½Ç¶ÈÀ´Ëµ£¬±ä»¯Ò²²»Ëã´ó£¬Ò²¾ÍÊÇSpark°æ±¾ºÍScala°æ±¾±äһϣ¬ÁíÍâ¾ÍÊÇÓÐЩAPIÒ²ÐèÒª×öÒ»µãµ÷Õû£¬ÁíÍâ¾ÍÊÇÉý¼¶Âé·³µÄÁíÒ»¸öÔÒòÒ²ÊÇÒòΪ֮ǰûÓÐʹÓÃMarathon+DockerµÄģʽ£¬Èç¹û֮ǰ¾ÍʹÓÃÁËÕâÖÖģʽ£¬ÄÇÖ»ÐèÒª°Ñ¾µÏñ¸øÐÞ¸ÄÁË£¬Ô¸ÒâÉý¼¶µÄÉý¼¶£¬²»Ô¸ÒâÉý¼¶µÄ¿ÉÒÔʹÓÃÔÀ´µÄ¾µÏñÅÜ£¬ÔÚÒÔºóµÄÉý¼¶ÖУ¬ÎÒÃÇÖ»ÐèÒªÖÆ×÷оµÏñ¾Í¿ÉÒÔÁË£¬·Ç³£·½±ãÇ¨ÒÆ£¬¿ÉÒÔÈÃËûÅÜÔÚÈκμ¯Èº¡£ÄÇÏÖÔÚΪÁ˹ý¶Éµ½ÕâÖÖģʽ£¬ÔÙ½áºÏ֮ǰ·¢²¼µÄ¾Ñ飬ÎÒÃÇʹÓõÄģʽÊǾɵÄÓÐÒ»Ì×ÅäÖã¬ÐµÄÒ²ÓÐÒ»Ì×ÅäÖã¬È»ºóͨ¹ýÔÚgitÉÏ´òtagµÄ·½Ê½£¬ÔھɵÄÅäÖÃÀï¼ÓÈëÉý¼¶ÐÅÏ¢£¬È»ºó·¢²¼Âß¼¸ÄΪÓÅÏȶÁÈ¡ÊÇ·ñÒªÉý¼¶£¬Èç¹ûÐèÒªÉý¼¶Ôò·¢ÔÚм¯ÈºÉÏ£¬Èç¹û²»ÐèÒªÔò±£³ÖÔÀ´²»±ä£¬ÎÒÃÇ»áÏÈÈÃÒµÎñÏß½øÐвâÊÔ£¬Í¬Ê±±£³Ö¾ÉµÄÈÎÎñÔÚÏߣ¬µ±ËûÃDzâÊÔͨ¹ýÁËÒÔºó£¬ÔÙÍ£Ö¹¾ÉµÄ×÷Îñ£¬°Ñ¸ÄºÃµÄа汾·¢µ½Ð¼¯ÈºÉÏ£¬µ±·¢ÏÖÓÐÎÊÌâµÄʱºò¿ÉÒÔÓÃÔÀ´µÄtag½øÐлعö£¬ÒòΪÔÀ´µÄtagÀïµÄÅäÖûáÏÈÅжÏÊÇ·ñÐèÒªÉý¼¶£¬¶øÖ®Ç°µÄÅäÖÿ϶¨Ã»ÓÐÐèÒªÉý¼¶µÄÑ¡Ïî¡£
ÈçºÎ¼à¿ØSparkµÄÔËÐÐ״̬
Spark×ÔÉíÓÐÒ»Ì×metric¼à¿Ø£¬Õâ¸öÔÚа汾Ҳ²»ÀýÍ⣬ÔÚÎÒÃǼ¯ÈºÖÐΨһµÄ±ä¸ü¾ÍÊǰѲ»¿¿Æ×µÄudp¸Ä³ÉÁËtcp£¬ÁíÍâÎÒÃÇÒòΪʹÓõÄÊÇDockerÈÝÆ÷£¬ÕâÑùÎÒÃǾͻ¹ÓÐÁíÒ»Ì×¼à¿Ø£¬Õâ¸ö¼à¿ØÊÇ·ÖÎöcgroupÀïµÄÊý¾Ý£¬Ê¹ÓõÄÊÇÎÒÃÇ¿ªÔ´µÄpyadvisorÀ´×öµÄ£¬ÎÒÃÇ¿ÉÒÔͨ¹ý¼à¿ØÀ´¹Û²ìCPUºÍÄÚ´æµÄʹÓÃÇé¿ö£¬ºÜºÃµÄÌá³öÓÅ»¯¸Ä½ø×ÊԴʹÓõĽ¨Ò飬ÁíÍ⣬¶ÔÓÚÒµÎñÏßÃÇ£¬ÎÒÃÇÍÆ¼öËûÃÇʹÓõÄÊÇSparkÀï×Ô´øµÄAccumulator£¬ÏÈÔÚSpark
DriverÉÏ×öÒ»¸ö¾ÛºÏ1·ÖÖÓµÄÖ¸±ê£¬È»ºóÔÙÍùwatcherÉÏ´òËûÃǵÄÒµÎñÖ¸±ê£¬ÕâÑù¼´²»»áÓÐ֮ǰ²»Í¬hostÖ®¼äµÄ¾ÛºÏÖ¸±êµÄÎÊÌ⣬ͬʱҲ¸øwatcher¼õÇáÁËѹÁ¦¡£
×ܽá
ÒÔÉϾÍÊÇÎÒÃÇËù×öµÄеÄSpark¼Ü¹¹£¬×ۺϿ´À´ÓÐÒÔϵÄÓŵ㣺
ÎÞÐè»·¾³ÅäÖÃÓ벿Êð£¬×ßDocker¡£¶ÔÓÚÒÔºóÒ²Éý¼¶Ò²»á½Ï·½±ã£¬¿ÉÒÔ¸´ÓÃ֮ǰDockerfile¡£
ÊÇÒÔÖ±½ÓÆô¶¯µÄ·½Ê½£¬ÅäÖþø¶ÔÉúЧ£¬²»»á³öÏÖ¸´ÔÓÅäÖõÄÎÊÌâ¡£
×Ô¶¯Æ½ºâexecutor¡£Ã»ÓÐReceiver²»Æ½ºâµÄÎÊÌâÎÊÌ⣬ÔÚijЩ³¡¾°Ï¿ÉÒÔ¶¯Ì¬Ôö¼õexecutor£¬²»»áÓÐʧ°Ü¹ý¶à¶ø²»ÔÙÀexecutorµÄÏÖÏó£¬Ò²²»²»»áÓж෢»òÉÙ·¢executorÏÖÏó¡£
ÓÉÓÚʹÓÃMarathonµÄÔÒò£¬¿ÉÒÔÖ§³Ö¶à±êÇ©£¬¸´ÔÓµ÷¶È£¬ÀýÈçÒµÎñÏßÓÐʱºòÐèÒª¹Ì¶¨Ö¸¶¨µÄ»úÔËÐÐSpark¿ª°ÙÃûµ¥£¬Í¬Ê±Ò²ÎªÎÒÃÇÒÔºó×öÇ¨ÒÆÓÐÁ˸ü¶àµÄ±ãÀû¡£ |