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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Spark Standalone¼Ü¹¹Éè¼ÆÒªµã·ÖÎö
 
×÷ÕߣºÊ±ÑÓ¾ü ·¢²¼ÓÚ£º 2017-1-11
  4513  次浏览      37
 

Apache SparkÊÇÒ»¸ö¿ªÔ´µÄͨÓü¯Èº¼ÆËãϵͳ£¬ËüÌṩÁËHigh-level±à³ÌAPI£¬Ö§³ÖScala¡¢JavaºÍPythonÈýÖÖ±à³ÌÓïÑÔ¡£SparkÄÚºËʹÓÃScalaÓïÑÔ±àд£¬Í¨¹ý»ùÓÚScalaµÄº¯Êýʽ±à³ÌÌØÐÔ£¬ÔÚ²»Í¬µÄ¼ÆËã²ãÃæ½øÐгéÏ󣬴úÂëÉè¼Æ·Ç³£ÓÅÐã¡£

RDD³éÏó

RDD£¨Resilient Distributed Datasets£©£¬µ¯ÐÔ·Ö²¼Ê½Êý¾Ý¼¯£¬ËüÊǶԷֲ¼Ê½Êý¾Ý¼¯µÄÒ»ÖÖÄÚ´æ³éÏó£¬Í¨¹ýÊÜÏ޵Ĺ²ÏíÄڴ淽ʽÀ´ÌṩÈÝ´íÐÔ£¬Í¬Ê±ÕâÖÖÄÚ´æÄ£ÐÍʹµÃ¼ÆËã±È´«Í³µÄÊý¾ÝÁ÷Ä£ÐÍÒª¸ßЧ¡£RDD¾ßÓÐ5¸öÖØÒªµÄÌØÐÔ£¬ÈçÏÂͼËùʾ£º

ÉÏͼչʾÁË2¸öRDD½øÐÐJOIN²Ù×÷£¬ÌåÏÖÁËRDDËù¾ß±¸µÄ5¸öÖ÷ÒªÌØÐÔ£¬ÈçÏÂËùʾ£º

1.Ò»×é·ÖÇø

2.¼ÆËãÿһ¸öÊý¾Ý·ÖƬµÄº¯Êý

3.RDDÉϵÄÒ»×éÒÀÀµ

4.¿ÉÑ¡£¬¶ÔÓÚ¼üÖµ¶ÔRDD£¬ÓÐÒ»¸öPartitioner£¨Í¨³£ÊÇHashPartitioner£©

5.¿ÉÑ¡£¬Ò»×éPreferred locationÐÅÏ¢£¨ÀýÈ磬HDFSÎļþµÄBlockËùÔÚlocationÐÅÏ¢£©

ÓÐÁËÉÏÊöÌØÐÔ£¬Äܹ»·Ç³£ºÃµØÍ¨¹ýRDDÀ´±í´ï·Ö²¼Ê½Êý¾Ý¼¯£¬²¢×÷Ϊ¹¹½¨DAGͼµÄ»ù´¡£ºÊ×ÏȳéÏóÒ»´Î·Ö²¼Ê½¼ÆËãÈÎÎñµÄÂß¼­±íʾ£¬×îÖÕ½«ÈÎÎñÔÚʵ¼ÊµÄÎïÀí¼ÆËã»·¾³ÖнøÐд¦ÀíÖ´ÐС£

¼ÆËã³éÏó

ÔÚÃèÊöSparkÖеļÆËã³éÏó£¬ÎÒÃÇÊ×ÏÈÐèÒªÁ˽âÈçϼ¸¸ö¸ÅÄ

1.Application

Óû§±àдµÄSpark³ÌÐò£¬Íê³ÉÒ»¸ö¼ÆËãÈÎÎñµÄ´¦Àí¡£ËüÊÇÓÉÒ»¸öDriver³ÌÐòºÍÒ»×éÔËÐÐÓÚSpark¼¯ÈºÉϵÄExecutor×é³É¡£

2.Job

Óû§³ÌÐòÖУ¬Ã¿´Îµ÷ÓÃActionʱ£¬Âß¼­ÉÏ»áÉú³ÉÒ»¸öJob£¬Ò»¸öJob°üº¬Á˶à¸öStage¡£

3.Stage

Stage°üÀ¨Á½ÀࣺShuffleMapStageºÍResultStage£¬Èç¹ûÓû§³ÌÐòÖе÷ÓÃÁËÐèÒª½øÐÐShuffle¼ÆËãµÄOperator£¬ÈçgroupByKeyµÈ£¬¾Í»áÒÔShuffleΪ±ß½ç·Ö³ÉShuffleMapStageºÍResultStage¡£

4.TaskSet

»ùÓÚStage¿ÉÒÔÖ±½ÓÓ³ÉäΪTaskSet£¬Ò»¸öTaskSet·â×°ÁËÒ»´ÎÐèÒªÔËËãµÄ¡¢¾ßÓÐÏàͬ´¦ÀíÂß¼­µÄTask£¬ÕâЩTask¿ÉÒÔ²¢ÐмÆË㣬´ÖÁ£¶ÈµÄµ÷¶ÈÊÇÒÔTaskSetΪµ¥Î»µÄ¡£

5.Task

TaskÊÇÔÚÎïÀí½ÚµãÉÏÔËÐеĻù±¾µ¥Î»£¬Task°üº¬Á½ÀࣺShuffleMapTaskºÍResultTask£¬·Ö±ð¶ÔÓ¦ÓÚStageÖÐShuffleMapStageºÍResultStageÖеÄÒ»¸öÖ´Ðлù±¾µ¥Ôª¡£

ÏÂÃæ£¬ÎÒÃÇ¿´Ò»Ï£¬ÉÏÃæÕâЩ»ù±¾¸ÅÄîÖ®¼äµÄ¹ØÏµ£¬ÈçÏÂͼËùʾ£º

ÉÏͼ£¬ÎªÁ˼òµ¥£¬Ã¿¸öJob¼ÙÉè¶¼ºÜ¼òµ¥£¬²¢ÇÒÖ»ÐèÒª½øÐÐÒ»´ÎShuffle´¦Àí£¬ËùÒÔ¶¼¶ÔÓ¦2¸öStage¡£Êµ¼ÊÓ¦ÓÃÖУ¬Ò»¸öJob¿ÉÄܰüº¬Èô¸É¸öStage£¬»òÕßÊÇÒ»¸öÏà¶Ô¸´ÔÓµÄStage DAG¡£

ÔÚStandaloneģʽÏ£¬Ä¬ÈÏʹÓõÄÊÇFIFOÕâÖÖ¼òµ¥µÄµ÷¶È²ßÂÔ£¬ÔÚ½øÐе÷¶ÈµÄ¹ý³ÌÖУ¬´ó¸ÅÁ÷³ÌÈçÏÂͼËùʾ£º

´ÓÓû§Ìá½»Spark³ÌÐò£¬×îÖÕÉú³ÉTaskSet£¬¶øÔÚµ÷¶Èʱ£¬Í¨¹ýTaskSetManagerÀ´¹ÜÀíÒ»¸öTaskSet£¨°üº¬Ò»×é¿ÉÔÚÎïÀí½ÚµãÉÏÖ´ÐеÄTask£©£¬ÕâÀïÃæTaskSet±ØÐëÒª°´ÕÕ˳ÐòÖ´ÐвÅÄܱ£Ö¤¼ÆËã½á¹ûµÄÕýÈ·ÐÔ£¬ÒòΪTaskSetÖ®¼äÊÇÓÐÐòÒÀÀµµÄ£¨ÉÏËݵ½ShuffleMapStageºÍResultStage£©£¬Ö»ÓÐÒ»¸öTaskSetÖеÄËùÓÐTask¶¼ÔËÐÐÍê³Éºó£¬²ÅÄܵ÷¶ÈÏÂÒ»¸öTaskSetÖеÄTaskÈ¥Ö´ÐС£

¼¯ÈºÄ£Ê½

Spark¼¯ÈºÔÚÉè¼ÆµÄʱºò£¬²¢Ã»ÓÐÔÚ×ÊÔ´¹ÜÀíµÄÉè¼ÆÉ϶ÔÍâ·â±Õ£¬¶øÊdzä·Ö¿¼ÂÇÁËδÀ´¶Ô½ÓһЩ¸üÇ¿´óµÄ×ÊÔ´¹ÜÀíϵͳ£¬ÈçYARN¡¢MesosµÈ£¬ËùÒÔSpark¼Ü¹¹Éè¼Æ½«×ÊÔ´¹ÜÀíµ¥¶À³éÏó³öÒ»²ã£¬Í¨¹ýÕâÖÖ³éÏóÄܹ»¹¹½¨Ò»ÖÖÊÊºÏÆóÒµµ±Ç°¼¼ÊõÕ»µÄ²å¼þʽ×ÊÔ´¹ÜÀíÄ£¿é£¬´Ó¶øÎª²»Í¬µÄ¼ÆË㳡¾°Ìṩ²»Í¬µÄ×ÊÔ´·ÖÅäÓëµ÷¶È²ßÂÔ¡£Spark¼¯ÈºÄ£Ê½¼Ü¹¹£¬ÈçÏÂͼËùʾ£º

ÉÏͼÖУ¬Spark¼¯ÈºCluster ManagerĿǰ֧³ÖÈçÏÂÈýÖÖģʽ£º

1.Standaloneģʽ

StandaloneģʽÊÇSparkÄÚ²¿Ä¬ÈÏʵÏÖµÄÒ»ÖÖ¼¯Èº¹ÜÀíģʽ£¬ÕâÖÖģʽÊÇͨ¹ý¼¯ÈºÖеÄMasterÀ´Í³Ò»¹ÜÀí×ÊÔ´£¬¶øÓëMaster½øÐÐ×ÊÔ´ÇëÇóЭÉ̵ÄÊÇDriverÄÚ²¿µÄStandaloneSchedulerBackend£¨Êµ¼ÊÉÏÊÇÆäÄÚ²¿µÄStandaloneAppClientÕæÕýÓëMasterͨÐÅ£©£¬ºóÃæ»áÏêϸ˵Ã÷¡£

2.YARNģʽ

YARNģʽÏ£¬¿ÉÒÔ½«×ÊÔ´µÄ¹ÜÀíͳһ½»¸øYARN¼¯ÈºµÄResourceManagerÈ¥¹ÜÀí£¬Ñ¡ÔñÕâÖÖģʽ£¬¿ÉÒÔ¸ü´óÏ޶ȵÄÊÊÓ¦ÆóÒµÄÚ²¿ÒÑÓеļ¼ÊõÕ»£¬Èç¹ûÆóÒµÄÚ²¿ÒѾ­ÔÚʹÓÃHadoop¼¼Êõ¹¹½¨´óÊý¾Ý´¦ÀíÆ½Ì¨¡£

3.Mesosģʽ

Ëæ×ÅApache MesosµÄ²»¶Ï³ÉÊ죬һЩÆóÒµÒѾ­ÔÚ³¢ÊÔʹÓÃMesos¹¹½¨Êý¾ÝÖÐÐĵIJÙ×÷ϵͳ£¨DCOS£©£¬Spark¹¹½¨ÔÚMesosÖ®ÉÏ£¬Äܹ»Ö§³ÖϸÁ£¶È¡¢´ÖÁ£¶ÈµÄ×ÊÔ´µ÷¶È²ßÂÔ£¨MesosµÄÓÅÊÆ£©£¬Ò²¿ÉÒÔ¸üºÃµØÊÊÓ¦ÆóÒµÄÚ²¿ÒÑÓм¼ÊõÕ»¡£

ÄÇô£¬SparkÖÐÊÇÔõô¿¼ÂÇÂú×ãÕâÒ»ÖØÒªµÄÉè¼Æ¾ö²ßµÄÄØ£¿Ò²¾ÍÊÇ˵£¬ÈçºÎÄܹ»±£Ö¤Spark·Ç³£ÈÝÒ×µÄÈõÚÈý·½×ÊÔ´¹ÜÀíϵͳÇáËɵؽÓÈë½øÀ´¡£ÎÒÃÇÉîÈëµ½ÀàÉè¼ÆµÄ²ãÃæ¿´Ò»Ï£¬ÈçÏÂͼÀàͼËùʾ£º

¿ÉÒÔ¿´³ö£¬Taskµ÷¶ÈÖ±½ÓÒÀÀµSchedulerBackend£¬SchedulerBackendÓëʵ¼Ê×ÊÔ´¹ÜÀíÄ£¿é½»»¥ÊµÏÖ×ÊÔ´ÇëÇó¡£ÕâÀïÃæ£¬CoarseGrainedSchedulerBackendÊÇSparkÖÐÓë×ÊÔ´µ÷¶ÈÏà¹ØµÄ×îÖØÒªµÄ³éÏó£¬ËüÐèÒª³éÏó³öÓëTaskSchedulerͨÐŵÄÂß¼­£¬Í¬Ê±»¹ÒªÄܹ»Óë¸÷ÖÖ²»Í¬µÄµÚÈý·½×ÊÔ´¹ÜÀíϵͳÎÞ·ìµØ½»»¥¡£Êµ¼ÊÉÏ£¬CoarseGrainedSchedulerBackendÄÚ²¿²ÉÓÃÁËÒ»ÖÖResourceOfferµÄ·½Ê½À´´¦Àí×ÊÔ´ÇëÇó¡£

RPCÍøÂçͨÐųéÏó

Spark RPC²ãÊÇ»ùÓÚÓÅÐãµÄÍøÂçͨÐÅ¿ò¼ÜNettyÉè¼Æ¿ª·¢µÄ£¬µ«ÊÇSparkÌṩÁËÒ»ÖֺܺõسéÏó·½Ê½£¬½«µ×²ãµÄͨÐÅϸ½ÚÆÁ±ÎÆðÀ´£¬¶øÇÒÒ²Äܹ»»ùÓÚ´ËÀ´Éè¼ÆÂú×ãÀ©Õ¹ÐÔ£¬±ÈÈ磬Èç¹ûÓÐÆäËû²»»ùÓÚNettyµÄÍøÂçͨÐÅ¿ò¼ÜµÄеÄRPC½ÓÈëÐèÇ󣬿ÉÒԺܺõØÀ©Õ¹¶ø²»Ó°ÏìÉϲãµÄÉè¼Æ¡£RPC²ãÉè¼Æ£¬ÈçÏÂͼÀàͼËùʾ£º

ÈκÎÁ½¸öEndpointÖ»ÄÜͨ¹ýÏûÏ¢½øÐÐͨÐÅ£¬¿ÉÒÔʵÏÖÒ»¸öRpcEndpointºÍÒ»¸öRpcEndpointRef£ºÏëÒªÓëRpcEndpointͨÐÅ£¬ÐèÒª»ñÈ¡µ½¸ÃRpcEndpoint¶ÔÓ¦µÄRpcEndpointRef¼´¿É£¬¶øÇÒ¹ÜÀíRpcEndpointºÍRpcEndpointRef´´½¨¼°ÆäͨÐŵÄÂß¼­£¬Í³Ò»ÔÚRpcEnv¶ÔÏóÖйÜÀí¡£

Æô¶¯Standalone¼¯Èº

StandaloneģʽÏ£¬Spark¼¯Èº²ÉÓÃÁ˼òµ¥µÄMaster-Slave¼Ü¹¹Ä£Ê½£¬Masterͳһ¹ÜÀíËùÓеÄWorker£¬ÕâÖÖģʽºÜ³£¼û£¬ÎÒÃǼòµ¥µØ¿´ÏÂSpark Standalone¼¯ÈºÆô¶¯µÄ»ù±¾Á÷³Ì£¬ÈçÏÂͼËùʾ£º

¿ÉÒÔ¿´µ½£¬Spark¼¯Èº²ÉÓõÄÏûÏ¢µÄģʽ½øÐÐͨÐÅ£¬Ò²¾ÍÊÇEDA¼Ü¹¹Ä£Ê½£¬½èÖúÓÚRPC²ãµÄÓÅÑÅÉè¼Æ£¬ÈκÎÁ½¸öEndpointÏëҪͨÐÅ£¬·¢ËÍÏûÏ¢²¢Ð¯´øÊý¾Ý¼´¿É¡£ÉÏͼµÄÁ÷³ÌÃèÊöÈçÏÂËùʾ£º

1.MasterÆô¶¯Ê±Ê×ÏÈ´´Ò»¸öRpcEnv¶ÔÏ󣬸ºÔð¹ÜÀíËùÓÐͨÐÅÂß¼­

2.Masterͨ¹ýRpcEnv¶ÔÏó´´½¨Ò»¸öEndpoint£¬Master¾ÍÊÇÒ»¸öEndpoint£¬Worker¿ÉÒÔÓëÆä½øÐÐͨÐÅ

3.WorkerÆô¶¯Ê±Ò²ÊÇ´´Ò»¸öRpcEnv¶ÔÏó

4.Workerͨ¹ýRpcEnv¶ÔÏó´´½¨Ò»¸öEndpoint

5.Workerͨ¹ýRpcEnv¶Ô£¬½¨Á¢µ½MasterµÄÁ¬½Ó£¬»ñÈ¡µ½Ò»¸öRpcEndpointRef¶ÔÏó£¬Í¨¹ý¸Ã¶ÔÏó¿ÉÒÔÓëMasterͨÐÅ

6.WorkerÏòMaster×¢²á£¬×¢²áÄÚÈݰüÀ¨Ö÷»úÃû¡¢¶Ë¿Ú¡¢CPU CoreÊýÁ¿¡¢ÄÚ´æÊýÁ¿

7.Master½ÓÊÕµ½WorkerµÄ×¢²á£¬½«×¢²áÐÅϢά»¤ÔÚÄÚ´æÖеÄTableÖУ¬ÆäÖл¹°üº¬ÁËÒ»¸öµ½WorkerµÄRpcEndpointRef¶ÔÏóÒýÓÃ

8.Master»Ø¸´WorkerÒѾ­½ÓÊÕµ½×¢²á£¬¸æÖªWorkerÒѾ­×¢²á³É¹¦

9.´ËʱÈç¹ûÓÐÓû§Ìá½»Spark³ÌÐò£¬MasterÐèҪЭµ÷Æô¶¯Driver£»¶øWorker¶ËÊÕµ½³É¹¦×¢²áÏìÓ¦ºó£¬¿ªÊ¼ÖÜÆÚÐÔÏòMaster·¢ËÍÐÄÌø

ºËÐÄ×é¼þ

¼¯Èº´¦Àí¼ÆËãÈÎÎñµÄÔËÐÐʱ£¨Óû§Ìá½»ÁËSpark³ÌÐò£©£¬×îºËÐĵĶ¥²ã×é¼þ¾ÍÊÇDriverºÍExecutor£¬ËüÃÇÄÚ²¿¹ÜÀíºÜ¶àÖØÒªµÄ×é¼þÀ´Ð­Í¬Íê³É¼ÆËãÈÎÎñ£¬ºËÐÄ×é¼þÕ»ÈçÏÂͼËùʾ£º

DriverºÍExecutor¶¼ÊÇÔËÐÐʱ´´½¨µÄ×é¼þ£¬Ò»µ©Óû§³ÌÐòÔËÐнáÊø£¬ËûÃǶ¼»áÊÍ·Å×ÊÔ´£¬µÈ´ýÏÂÒ»¸öÓû§³ÌÐòÌá½»µ½¼¯Èº¶ø½øÐкóÐøµ÷¶È¡£ÉÏͼ£¬ÎÒÃÇÁгöÁË´ó¶àÊý×é¼þ£¬ÆäÖÐSparkEnvÊÇÒ»¸öÖØÁ¿¼¶×é¼þ£¬ËûÃÇÄÚ²¿°üº¬¼ÆËã¹ý³ÌÖÐÐèÒªµÄÖ÷Òª×é¼þ£¬¶øÇÒ£¬DriverºÍExecutor¹²Í¬ÐèÒªµÄ×é¼þÔÚSparkEnvÖÐÒ²°üº¬Á˺ܶࡣÕâÀÎÒÃDz»×ö¹ý¶àÏêÊö£¬ºóÃæ½»»¥Á÷³ÌµÈ´¦»á˵Ã÷´ó²¿·Ö×é¼þ¸ºÔðµÄ¹¦ÄÜ¡£

ºËÐÄ×é¼þ½»»¥Á÷³Ì

ÔÚStandaloneģʽÏ£¬SparkÖи÷¸ö×é¼þÖ®¼ä½»»¥»¹ÊDZȽϸ´Ôӵ쬵«ÊǶÔÓÚÒ»¸öͨÓõķֲ¼Ê½¼ÆËãϵͳÀ´Ëµ£¬ÕâЩ¶¼ÊǷdz£ÖØÒª¶øÇұȽϻù´¡µÄ½»»¥¡£Ê×ÏÈ£¬ÎªÁËÀí½â×é¼þÖ®¼äµÄÖ÷Òª½»»¥Á÷³Ì£¬ÎÒÃǸø³öһЩ»ù±¾Òªµã£º

Ò»¸öApplication»áÆô¶¯Ò»¸öDriver

Ò»¸öDriver¸ºÔð¸ú×Ù¹ÜÀí¸ÃApplicationÔËÐйý³ÌÖÐËùÓеÄ×ÊԴ״̬ºÍÈÎÎñ״̬

Ò»¸öDriver»á¹ÜÀíÒ»×éExecutor

Ò»¸öExecutorÖ»Ö´ÐÐÊôÓÚÒ»¸öDriverµÄTask

ºËÐÄ×é¼þÖ®¼äµÄÖ÷Òª½»»¥Á÷³Ì£¬ÈçÏÂͼËùʾ£º

ÉÏͼÖУ¬Í¨¹ý²»Í¬ÑÕÉ«»òÀàÐ͵ÄÏßÌõ£¬¸ø³öÁËÈçÏÂ6¸öºËÐĵĽ»»¥Á÷³Ì£¬ÎÒÃÇ»áÏêϸ˵Ã÷£º

³ÈÉ«£ºÌá½»Óû§Spark³ÌÐò

Óû§Ìá½»Ò»¸öSpark³ÌÐò£¬Ö÷ÒªµÄÁ÷³ÌÈçÏÂËùʾ£º

1.Óû§spark-submit½Å±¾Ìá½»Ò»¸öSpark³ÌÐò£¬»á´´½¨Ò»¸öClientEndpoint¶ÔÏ󣬸öÔÏó¸ºÔðÓëMasterͨÐŽ»»¥

2.ClientEndpointÏòMaster·¢ËÍÒ»¸öRequestSubmitDriverÏûÏ¢£¬±íʾÌá½»Óû§³ÌÐò

3.MasterÊÕµ½RequestSubmitDriverÏûÏ¢£¬ÏòClientEndpoint»Ø¸´SubmitDriverResponse£¬±íʾÓû§³ÌÐòÒѾ­Íê³É×¢²á

4.ClientEndpointÏòMaster·¢ËÍRequestDriverStatusÏûÏ¢£¬ÇëÇóDriver״̬

5.Èç¹ûµ±Ç°Óû§³ÌÐò¶ÔÓ¦µÄDriverÒѾ­Æô¶¯£¬ÔòClientEndpointÖ±½ÓÍ˳ö£¬Íê³ÉÌá½»Óû§³ÌÐò

×ÏÉ«£ºÆô¶¯Driver½ø³Ì

µ±Óû§Ìá½»Óû§Spark³ÌÐòºó£¬ÐèÒªÆô¶¯DriverÀ´´¦ÀíÓû§³ÌÐòµÄ¼ÆËãÂß¼­£¬Íê³É¼ÆËãÈÎÎñ£¬ÕâʱMasterЭµ÷ÐèÒªÆô¶¯Ò»¸öDriver£¬¾ßÌåÁ÷³ÌÈçÏÂËùʾ£º

1.MaserÄÚ´æÖÐά»¤×ÅÓû§Ìá½»¼ÆËãµÄÈÎÎñApplication£¬Ã¿´ÎÄÚ´æ½á¹¹±ä¸ü¶¼»á´¥·¢µ÷¶È£¬ÏòWorker·¢ËÍLaunchDriverÇëÇó

2. WorkerÊÕµ½LaunchDriverÏûÏ¢£¬»áÆô¶¯Ò»¸öDriverRunnerÏß³ÌÈ¥Ö´ÐÐLaunchDriverµÄÈÎÎñ

3.DriverRunnerÏß³ÌÔÚWorkerÉÏÆô¶¯Ò»¸öеÄJVMʵÀý£¬¸ÃJVMʵÀýÄÚÔËÐÐÒ»¸öDriver½ø³Ì£¬¸ÃDriver»á´´½¨SparkContext¶ÔÏó

ºìÉ«£º×¢²áApplication

DirverÆô¶¯ÒÔºó£¬Ëü»á´´½¨SparkContext¶ÔÏ󣬳õʼ»¯¼ÆËã¹ý³ÌÖбØÐèµÄ»ù±¾×é¼þ£¬²¢ÏòMaster×¢²áApplication£¬Á÷³ÌÃèÊöÈçÏ£º

1.´´½¨SparkEnv¶ÔÏ󣬴´½¨²¢¹ÜÀíһЩÊý»ù±¾×é¼þ

2.´´½¨TaskScheduler£¬¸ºÔðTaskµ÷¶È

3.´´½¨StandaloneSchedulerBackend£¬¸ºÔðÓëClusterManager½øÐÐ×ÊԴЭÉÌ

4.´´½¨DriverEndpoint£¬ÆäËü×é¼þ¿ÉÒÔÓëDriver½øÐÐͨÐÅ

5.ÔÚStandaloneSchedulerBackendÄÚ²¿´´½¨Ò»¸öStandaloneAppClient£¬¸ºÔð´¦ÀíÓëMasterµÄͨÐŽ»»¥

6.StandaloneAppClient´´½¨Ò»¸öClientEndpoint£¬Êµ¼Ê¸ºÔðÓëMasterͨÐÅ

7.ClientEndpointÏòMaster·¢ËÍRegisterApplicationÏûÏ¢£¬×¢²áApplication

8.MasterÊÕµ½RegisterApplicationÇëÇóºó£¬»Ø¸´ClientEndpointÒ»¸öRegisteredApplicationÏûÏ¢£¬±íʾÒѾ­×¢²á³É¹¦

À¶É«£ºÆô¶¯Executor½ø³Ì

1.MasterÏòWorker·¢ËÍLaunchExecutorÏûÏ¢£¬ÇëÇóÆô¶¯Executor£»Í¬Ê±Master»áÏòDriver·¢ËÍExecutorAddedÏûÏ¢£¬±íʾMasterÒѾ­ÐÂÔöÁËÒ»¸öExecutor£¨´Ëʱ»¹Î´Æô¶¯£©

2.WorkerÊÕµ½LaunchExecutorÏûÏ¢£¬»áÆô¶¯Ò»¸öExecutorRunnerÏß³ÌÈ¥Ö´ÐÐLaunchExecutorµÄÈÎÎñ

3.WorkerÏòMaster·¢ËÍExecutorStageChangedÏûÏ¢£¬Í¨ÖªExecutor״̬ÒÑ·¢Éú±ä»¯

4.MasterÏòDriver·¢ËÍExecutorUpdatedÏûÏ¢£¬´ËʱExecutorÒѾ­Æô¶¯

·ÛÉ«£ºÆô¶¯TaskÖ´ÐÐ

1.StandaloneSchedulerBackendÆô¶¯Ò»¸öDriverEndpoint

2.DriverEndpointÆô¶¯ºó£¬»áÖÜÆÚÐԵؼì²éDriverά»¤µÄExecutorµÄ״̬£¬Èç¹ûÓпÕÏеÄExecutor±ã»áµ÷¶ÈÈÎÎñÖ´ÐÐ

3.DriverEndpointÏòTaskScheduler·¢ËÍResource OfferÇëÇó

4.Èç¹ûÓпÉÓÃ×ÊÔ´Æô¶¯Task£¬ÔòDriverEndpointÏòExecutor·¢ËÍLaunchTaskÇëÇó

5.Executor½ø³ÌÄÚ²¿µÄCoarseGrainedExecutorBackendµ÷ÓÃÄÚ²¿µÄExecutorÏ̵߳ÄlaunchTask·½·¨Æô¶¯Task

6.ExecutorÏß³ÌÄÚ²¿Î¬»¤Ò»¸öÏ̳߳أ¬´´½¨Ò»¸öTaskRunnerÏ̲߳¢Ìá½»µ½Ï̳߳ØÖ´ÐÐ

ÂÌÉ«£ºTaskÔËÐÐÍê³É

1.Executor½ø³ÌÄÚ²¿µÄExecutorÏß³Ì֪ͨCoarseGrainedExecutorBackend£¬TaskÔËÐÐÍê³É

2.CoarseGrainedExecutorBackendÏòDriverEndpoint·¢ËÍStatusUpdatedÏûÏ¢£¬Í¨ÖªDriverÔËÐеÄTask״̬·¢Éú±ä¸ü

3.StandaloneSchedulerBackendµ÷ÓÃTaskSchedulerµÄupdateStatus·½·¨¸üÐÂTask״̬

4.StandaloneSchedulerBackend¼ÌÐøµ÷ÓÃTaskSchedulerµÄresourceOffers·½·¨£¬µ÷¶ÈÆäËûÈÎÎñÔËÐÐ

Block¹ÜÀí

Block¹ÜÀí£¬Ö÷ÒªÊÇΪSparkÌṩµÄBroadcast»úÖÆÌṩ·þÎñÖ§³ÅµÄ¡£SparkÖÐÄÚÖòÉÓÃTorrentBroadcastʵÏÖ£¬¸ÃBroadcast±äÁ¿¶ÔÓ¦µÄÊý¾Ý£¨TaskÊý¾Ý£©»òÊý¾Ý¼¯£¨ÈçRDD£©£¬Ä¬ÈϻᱻÇзֳÉÈô¸É4M´óСµÄBlock£¬TaskÔËÐйý³ÌÖжÁÈ¡µ½¸ÃBroadcast±äÁ¿£¬»áÒÔ4MΪµ¥Î»µÄBlockΪÀ­È¡Êý¾ÝµÄ×îСµ¥Î»£¬×îºó½«ËùÓеÄBlockºÏ²¢³ÉBroadcast±äÁ¿¶ÔÓ¦µÄÍêÕûÊý¾Ý»òÊý¾Ý¼¯¡£½«Êý¾ÝÇзֳÉ4M´óСµÄBlock£¬Task´Ó¶à¸öExecutorÀ­È¡Block£¬¿ÉÒԷdz£ºÃµØ¾ùºâÍøÂç´«Êä¸ºÔØ£¬Ìá¸ßÕû¸ö¼ÆË㼯ȺµÄÎȶ¨ÐÔ¡£

ͨ³££¬Óû§³ÌÐòÔÚ±àд¹ý³ÌÖУ¬»á¶Ôij¸ö±äÁ¿½øÐÐBroadcast£¬¸Ã±äÁ¿³ÆÎªBroadcast±äÁ¿¡£ÔÚʵ¼ÊÎïÀí½ÚµãµÄExecutorÉÏÖ´ÐÐTaskʱ£¬ÐèÒª¶ÁÈ¡Broadcast±äÁ¿¶ÔÓ¦µÄÊý¾Ý¼¯£¬ÄÇô´Ëʱ»á¸ù¾ÝÐèÒªÀ­È¡DAGÖ´ÐÐÁ÷ÉÏÓÎÒѾ­Éú³ÉµÄÊý¾Ý¼¯¡£²ÉÓÃBroadcast»úÖÆ£¬¿ÉÒÔÓÐЧµØ½µµÍÊý¾ÝÔÚ¼ÆË㼯Ⱥ»·¾³Öд«ÊäµÄ¿ªÏú¡£¾ßÌ嵨£¬Èç¹ûÒ»¸öÓû§¶ÔÓ¦µÄ³ÌÐòÖеÄBroadcast±äÁ¿£¬¶ÔÓ¦×ÅÒ»¸öÊý¾Ý¼¯£¬ËüÔÚ¼ÆËã¹ý³ÌÖÐÐèÒªÀ­È¡¶ÔÓ¦µÄÊý¾Ý£¬Èç¹ûÔÚͬһ¸öÎïÀí½ÚµãÉÏÔËÐÐ×Ŷà¸öTask£¬¶à¸öTask¶¼ÐèÒª¸ÃÊý¾Ý£¬ÓÐÁËBroadcast»úÖÆ£¬Ö»ÐèÒªÀ­È¡Ò»·Ý´æ´¢ÔÚ±¾µØÎïÀí»ú´ÅÅ̼´¿É£¬¹©¶à¸öTask¼ÆËã¹²Ïí¡£

ÁíÍ⣬Óû§³ÌÐòÔÚ½øÐе÷¶È¹ý³ÌÖУ¬»á¸ù¾Ýµ÷¶È²ßÂÔ½«Task¼ÆËãÂß¼­Êý¾Ý£¨´úÂë£©ÒÆ¶¯µ½¶ÔÓ¦µÄWorker½ÚµãÉÏ£¬×îÓÅÇé¿öÊǶԱ¾µØÊý¾Ý½øÐд¦Àí£¬ÄÇô´úÂ루ÐòÁл¯¸ñʽ£©Ò²ÐèÒªÔÚÍøÂçÉÏ´«Ê䣬ҲÊÇͨ¹ýBroadcast»úÖÆ½øÐд«Ê䣬²»¹ýÕâÖÖ·½Ê½ÊÇÊ×ÏȽ«´úÂëÐòÁл¯µ½DriverËùÔÚWorker½Úµã£¬ºóÐøÈç¹ûTaskÔÚÆäËûWorkerÖÐÖ´ÐУ¬ÐèÒª¶ÁÈ¡¶ÔÓ¦´úÂëµÄBroadcast±äÁ¿£¬Ê×ÏȾÍÊÇ´ÓDriverÉÏÀ­È¡´úÂëÊý¾Ý£¬½Ó×ÅÆäËûÍíһЩ±»µ÷¶ÈµÄTask¿ÉÄÜÖ±½Ó´ÓÆäËûWorkerÉϵÄExecutorÖÐÀ­È¡´úÂëÊý¾Ý¡£

ÎÒÃÇͨ¹ýÒÔBroadcast±äÁ¿taskBinaryΪÀý£¬ËµÃ÷BlockÊÇÈçºÎ¹ÜÀíµÄ£¬ÈçÏÂͼËùʾ£º

ÉÏͼÖУ¬Driver¸ºÔð¹ÜÀíËùÓеÄBroadcast±äÁ¿¶ÔÓ¦µÄÊý¾ÝËùÔÚµÄExecutor£¬¼´Ò»¸öExecutorά»¤Ò»¸öBlockÁÐ±í¡£ÔÚExecutorÖÐÔËÐÐÒ»¸öTaskʱ£¬Ö´Ðе½¶ÔÓ¦µÄBroadcast±äÁ¿taskBinary£¬Èç¹û±¾µØÃ»ÓжÔÓ¦µÄÊý¾Ý£¬Ôò»áÏòDriverÇëÇó»ñÈ¡Broadcast±äÁ¿¶ÔÓ¦µÄÊý¾Ý£¬°üÀ¨Ò»¸ö»ò¶à¸öBlockËùÔÚµÄExecutorÁÐ±í£¬È»ºó¸ÃExecutor¸ù¾ÝDriver·µ»ØµÄExecutorÁÐ±í£¬Ö±½Óͨ¹ýµ×²ãµÄBlockTransferService×é¼þÏò¶ÔÓ¦ExecutorÇëÇóÀ­È¡Block¡£ExecutorÀ­È¡µ½µÄBlock»á»º´æµ½±¾µØ£¬Í¬Ê±ÏòDriver±¨¸æ¸ÃExecutorÉÏ´æÔÚµÄBlockÐÅÏ¢£¬ÒÔ¹©ÆäËûExecutorÖ´ÐÐTaskʱ»ñÈ¡Broadcast±äÁ¿¶ÔÓ¦µÄÊý¾Ý¡£

   
4513 ´Îä¯ÀÀ       37
Ïà¹ØÎÄÕÂ

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

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

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ 12-11[±±¾©]
LLM´óÄ£ÐÍÓëÖÇÄÜÌ忪·¢ÊµÕ½ 12-18[±±¾©]
ǶÈëʽÈí¼þ²âÊÔ 12-25[±±¾©]
AIÔ­ÉúÓ¦ÓõÄ΢·þÎñ¼Ü¹¹ 1-9[±±¾©]
AI´óÄ£Ðͱàд¸ßÖÊÁ¿´úÂë 1-14[±±¾©]
ÐèÇó·ÖÎöÓë¹ÜÀí 1-22[±±¾©]

APPÍÆ¹ãÖ®ÇÉÓù¤¾ß½øÐÐÊý¾Ý·ÖÎö
Hadoop Hive»ù´¡sqlÓï·¨
Ó¦Óö༶»º´æÄ£Ê½Ö§³Åº£Á¿¶Á·þÎñ
HBase ³¬Ïêϸ½éÉÜ
HBase¼¼ÊõÏêϸ½éÉÜ
Spark¶¯Ì¬×ÊÔ´·ÖÅä

HadoopÓëSpark´óÊý¾Ý¼Ü¹¹
HadoopÔ­ÀíÓë¸ß¼¶Êµ¼ù
HadoopÔ­Àí¡¢Ó¦ÓÃÓëÓÅ»¯
´óÊý¾ÝÌåϵ¿ò¼ÜÓëÓ¦ÓÃ
´óÊý¾ÝµÄ¼¼ÊõÓëʵ¼ù
Spark´óÊý¾Ý´¦Àí¼¼Êõ

GE Çø¿éÁ´¼¼ÊõÓëʵÏÖÅàѵ
º½Ìì¿Æ¹¤Ä³×Ó¹«Ë¾ Nodejs¸ß¼¶Ó¦Óÿª·¢
ÖÐÊ¢Òæ»ª ׿Խ¹ÜÀíÕß±ØÐë¾ß±¸µÄÎåÏîÄÜÁ¦
ijÐÅÏ¢¼¼Êõ¹«Ë¾ PythonÅàѵ
ij²©²ÊITϵͳ³§ÉÌ Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À
ÖйúÓÊ´¢ÒøÐÐ ²âÊÔ³ÉÊì¶ÈÄ£Ðͼ¯³É(TMMI)
ÖÐÎïÔº ²úÆ·¾­ÀíÓë²úÆ·¹ÜÀí