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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
storm - ¼ò½é
 
×÷Õß ÕÅÕÜBJUTµÄ²©¿Í£¬»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-10-10
  3772  次浏览      31
 

Ò» Storm¼ò½é

StormÊÇTwitter¿ªÔ´µÄÒ»¸öÀàËÆÓÚHadoopµÄʵʱÊý¾Ý´¦Àí¿ò¼Ü£¬ËüÔ­À´ÊÇÓÉBackType¿ª·¢£¬ºóBackType±»TwitterÊÕ¹º£¬½«Storm×÷ΪTwitterµÄʵʱÊý¾Ý·ÖÎöϵͳ¡£

ʵʱÊý¾Ý´¦ÀíµÄÓ¦Óó¡¾°ºÜ¹ã·º£¬ÀýÈçÉÌÆ·ÍƼö£¬¹ã¸æÍ¶·Å£¬ËüÄܸù¾Ýµ±Ç°Çé¾°ÉÏÏÂÎÄ£¨Óû§Æ«ºÃ£¬µØÀíλÖã¬ÒÑ·¢ÉúµÄ²éѯºÍµã»÷µÈ£©À´¹À¼ÆÓû§µã»÷µÄ¿ÉÄÜÐÔ²¢ÊµÊ±×ö³öµ÷Õû¡£

twitterÁоÙÁËstormµÄÈý´ó×÷ÓÃÁìÓò£º

1.ÐÅÏ¢Á÷´¦Àí£¨Stream Processing£©

Storm¿ÉÒÔÓÃÀ´ÊµÊ±´¦ÀíÐÂÊý¾ÝºÍ¸üÐÂÊý¾Ý¿â£¬¼æ¾ßÈÝ´íÐԺͿÉÀ©Õ¹ÐÔ,Ëü¿ÉÒÔÓÃÀ´´¦ÀíÔ´Ô´²»¶ÏµÄÏûÏ¢£¬²¢½«´¦ÀíÖ®ºóµÄ½á¹û±£´æµ½³Ö¾Ã»¯½éÖÊÖС£

2.Á¬Ðø¼ÆË㣨Continuous Computation£©

Storm¿ÉÒÔ½øÐÐÁ¬Ðø²éѯ²¢°Ñ½á¹û¼´Ê±·´À¡¸ø¿Í»§£¬±ÈÈ罫TwitterÉϵÄÈÈÃÅ»°Ìâ·¢Ë͵½¿Í»§¶Ë¡£

3.·Ö²¼Ê½Ô¶³Ì¹ý³Ìµ÷Óã¨Distributed RPC£©

³ý´ËÖ®Í⣬StormÒ²±»¹ã·ºÓÃÓÚÒÔÏ·½Ã棺

¾«È·µÄ¹ã¸æÍÆËÍ ÔÚÓû§ä¯ÀÀ²úÆ·µÄʱºò£¬½«ä¯ÀÀ¼Ç¼ʵʱÐÔµÄËѼ¯£¬·¢Ë͵½Bolt£¬ÓÉBoltÀ´¸ù¾ÝÓû§µÄÕË»§ÐÅÏ¢(Èç¹ûÓеϰ)Íê³É²úÆ·µÄ·ÖÀàͳ¼Æ£¬²úÆ·µÄÏà¹ØÐÔ²éѯµÈÂß¼­¼ÆËãÖ®ºó£¬½«¼ÆËã½á¹ûÍÆË͸øÓû§£»

ʵʱÈÕÖ¾µÄ´¦Àí Storm¿ÉÒÔºÍÒ»¸ö·Ö²¼Ê½´æ´¢½áºÏÆðÀ´£¬ÊµÊ±ÐԵĴӶà¸öÊý¾ÝÔ´·¢ËÍÊý¾Ýµ½´¦ÀíÂß¼­Bolts£¬BoltsÍê³ÉһЩÂß¼­´¦ÀíÖ®ºó£¬½»¸ø·Ö²¼Ê½´æ´¢¿ò¼Ü½øÐд洢£¬´Ëʱ£¬Spout¿ÉÒÔÊǶà¸ö£»

Storm¿ÉÒÔÓÃÀ´²¢Ðд¦ÀíÃܼ¯²éѯ£¬StormµÄÍØÆË½á¹¹ÊÇÒ»¸öµÈ´ýµ÷ÓÃÐÅÏ¢µÄ·Ö²¼º¯Êý£¬µ±ËüÊÕµ½Ò»Ìõµ÷ÓÃÐÅÏ¢ºó£¬»á¶Ô²éѯ½øÐмÆË㣬²¢·µ»Ø²éѯ½á¹û

¶þ Storm ¼¯ÈºµÄ»ù±¾×é¼þ

StormÊÇÒ»¸ö·Ö²¼Ê½¡¢¸ßÈÝ´íµÄʵʱ¼ÆËãϵͳ£¬Storm¶ÔÓÚʵʱ¼ÆËãµÄÒâÒåÏ൱ÓÚHadoop¶ÔÓÚÅú´¦ÀíµÄÒâÒå¡£HadoopÌṩÁËMapºÍReduceÔ­Óʹ¶ÔÊý¾Ý½øÐÐÅú´¦Àí±äµÄ·Ç³£¼òµ¥ºÍÓÅÃÀ¡£Í¬Ñù£¬StormÒ²¶ÔÊý¾ÝµÄʵʱ¼ÆËãÌṩÁ˼òµ¥SpoutºÍBoltÔ­Óï¡£

Storm ¼¯Èº±íÃæÉÏ¿´ºÍhadoop¼¯Èº·Ç³£Ïñ£¬µ«ÊÇÔÚHadoopÉÏÃæÔËÐеÄÊÇMapReduceµÄJob, ¶øÔÚStormÉÏÃæÔËÐеÄÊÇTopology(ÍØÆË)£¬ËüÃÇÊǷdz£²»Ò»ÑùµÄ ¡ª¹Ø¼üµÄÇø±ðÊÇ£º Ò»¸öMapReduce Job×îÖÕ»á½áÊø£¬ ¶øÒ»¸öTopologyÓÀÔ¶ÔËÐУ¨³ý·ÇÏÔʽµÄɱµôËü£©¡£

Storm¼¯ÈºÀïÃæÓÐÁ½Öֽڵ㣺 ¿ØÖƽڵã(master node)ºÍ¹¤×÷½Úµã(worker node)

¿ØÖƽڵãÉÏÃæÔËÐÐÒ»¸öºǫ́³ÌÐò£º Nimbus£¬ ËüµÄ×÷ÓÃÀàËÆHadoopÀïÃæµÄJobTracker¡£Nimbus¸ºÔðÔÚ¼¯ÈºÀïÃæ·Ö²¼´úÂ룬·ÖÅ乤×÷¸ø»úÆ÷£¬ ²¢ÇÒ¼à¿Ø×´Ì¬¡£

ÿһ¸ö¹¤×÷½ÚµãÉÏÃæÔËÐÐÒ»¸ö½Ð×öSupervisorµÄ½Úµã£¨ÀàËÆ TaskTracker£©¡£Supervisor»á¼àÌý·ÖÅ䏸ËüÄÇ̨»úÆ÷µÄ¹¤×÷£¬¸ù¾ÝÐèÒªÆô¶¯/¹Ø±Õworker¹¤×÷½ø³Ì¡£

ÿһ¸ö¹¤×÷½ø³ÌÖ´ÐÐÒ»¸öTopology£¨ÀàËÆ Job£©µÄÒ»¸ö×Ó¼¯£»Ò»¸öÔËÐеÄTopologyÓÉÔËÐÐÔںܶà»úÆ÷ÉϵĶà¸ö¹¤×÷½ø³Ì Worker£¨ÀàËÆ Child£©×é³É¡£

Storm topology ½á¹¹

Storm VS MapReduce

NimbusºÍSupervisorÖ®¼äµÄËùÓÐЭµ÷¹¤×÷¶¼ÊÇͨ¹ýÒ»¸öZookeeper¼¯ÈºÀ´Íê³É£¬²¢ÇÒNimbus½ø³ÌºÍsupervisor¶¼ÊÇ¿ìËÙʧ°Ü£¨fail-fast)ºÍÎÞ״̬µÄ,ËùÓеÄ״̬ҪôÔÚZookeeperÀïÃæ£¬ ҪôÔÚ±¾µØ´ÅÅÌÉÏ¡£ÕâÒ²¾ÍÒâζ×Å¿ÉÒÔÓÃkill -9À´É±ËÀNimbusºÍSupervisor½ø³Ì£¬ È»ºóÔÙÖØÆôËüÃÇ£¬ËüÃÇ¿ÉÒÔ¼ÌÐø¹¤×÷£¬ ¾ÍºÃÏñʲô¶¼Ã»Óз¢Éú¹ýËÆµÄ,Õâ¸öÉè¼ÆÊ¹µÃstorm²»¿É˼ÒéµÄÎȶ¨¡£

Topologies -- ×÷ÒµÍØÆË

ΪÁËÔÚStormÉÏÃæ×öʵʱ¼ÆË㣬 Ҫȥ½¨Á¢Ò»Ð©topologies¡£Ò»¸ötopology¾ÍÊÇÒ»¸ö¼ÆËã½ÚµãËù×é³ÉµÄͼ¡£TopologyÀïÃæµÄÿ¸ö´¦Àí½Úµã¶¼°üº¬´¦ÀíÂß¼­£¬ ¶ø½ÚµãÖ®¼äµÄÁ¬½ÓÔò±íʾÊý¾ÝÁ÷¶¯µÄ·½Ïò¡£

ÔËÐÐÒ»¸ötopologyÊǺܼòµ¥µÄ¡£Ê×ÏÈ£¬°ÑÄãËùÓеĴúÂëÒÔ¼°ËùÒÀÀµµÄjar´ò½øÒ»¸öjar°ü¡£È»ºóÔËÐÐÀàËÆÏÂÃæµÄÕâ¸öÃüÁî:

 strom jar all-your-code.jar backtype.storm.MyTopology arg1 arg2

Õâ¸öÃüÁî»áÔËÐÐÖ÷Àà: backtype.strom.MyTopology, ²ÎÊýÊÇarg1, arg2¡£Õâ¸öÀàµÄmainº¯Êý¶¨ÒåÕâ¸ötopology²¢ÇÒ°ÑËüÌá½»¸øNimbus¡£storm jar¸ºÔðÁ¬½Óµ½nimbus²¢ÇÒÉÏ´«jarÎļþ¡£

ÒòΪtopologyµÄ¶¨ÒåÆäʵ¾ÍÊÇÒ»¸öThrift½á¹¹²¢ÇÒNimbus¾ÍÊÇÒ»¸öThrift·þÎñ,¿ÉÒÔÓÃÈκÎÓïÑÔ´´½¨²¢ÇÒÌá½»topology¡£ÉÏÃæµÄ·½·¨ÊÇÓÃJVM-basedÓïÑÔÌá½»µÄ×î¼òµ¥µÄ·½·¨, ¿´Ò»ÏÂÎÄÕÂ: ÔÚÉú²ú¼¯ÈºÉÏÔËÐÐtopologyÈ¥¿´¿´ÔõôÆô¶¯ÒÔ¼°Í£Ö¹topologies¡£

spoutºÍboltËù×é³ÉÒ»¸öÍøÂç»á±»´ò°ü³Étopology£¬ topologyÊÇstormÀïÃæ×î¸ßÒ»¼¶µÄ³éÏó£¨ÀàËÆ Job£©¡£

×¢£ºThrift ÊÇÒ»¸öÈí¼þ¿ò¼Ü£¬ÓÃÀ´½øÐпÉÀ©Õ¹ÇÒ¿çÓïÑԵķþÎñµÄ¿ª·¢¡£Ëü½áºÏÁ˹¦ÄÜÇ¿´óµÄÈí¼þ¶ÑÕ»ºÍ´úÂëÉú³ÉÒýÇæ£¬ÒÔ¹¹½¨ÔÚ C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml ÕâЩ±à³ÌÓïÑÔ¼äÎÞ·ì½áºÏµÄ¡¢¸ßЧµÄ·þÎñ¡£

Stream -- Êý¾ÝÁ÷

StreamÊÇstormÀïÃæµÄ¹Ø¼ü³éÏó£¬Ò»¸östreamÊÇÒ»¸öûÓб߽çµÄtupleÐòÁС£stormÌṩһЩԭÓïÀ´·Ö²¼Ê½µØ¡¢¿É¿¿µØ°ÑÒ»¸östream´«Êä½øÒ»¸öеÄstream¡£±ÈÈ磺 Äã¿ÉÒÔ°ÑÒ»¸ötweetsÁ÷´«Êäµ½ÈÈÃÅ»°ÌâµÄÁ÷¡£

StormÌṩµÄ×î»ù±¾µÄ´¦ÀístreamµÄÔ­ÓïÊÇspoutºÍbolt¡£¿ÉÒÔʵÏÖSpoutºÍBolt¶ÔÓ¦µÄ½Ó¿ÚÒÔ´¦ÀíÄãÓ¦ÓõÄÂß¼­¡£

spout -- Á÷µÄÔ´Í·

±ÈÈçÒ»¸öspout¿ÉÄÜ´ÓKestrel¶ÓÁÐÀïÃæ¶ÁÈ¡ÏûÏ¢²¢ÇÒ°ÑÕâЩÏûÏ¢·¢Éä³ÉÒ»¸öÁ÷¡£ÓÖ±ÈÈçÒ»¸öspout¿ÉÒÔµ÷ÓÃtwitterµÄÒ»¸öapi²¢ÇÒ°Ñ·µ»ØµÄtweets·¢Éä³ÉÒ»¸öÁ÷¡£

ͨ³£Spout»á´ÓÍⲿÊý¾ÝÔ´£¨¶ÓÁС¢Êý¾Ý¿âµÈ£©¶ÁÈ¡Êý¾Ý£¬È»ºó·â×°³ÉTupleÐÎʽ£¬Ö®ºó·¢Ë͵½StreamÖС£SpoutÊÇÒ»¸öÖ÷¶¯µÄ½ÇÉ«£¬ÔÚ½Ó¿ÚÄÚ²¿ÓиönextTupleº¯Êý£¬Storm¿ò¼Ü»á²»Í£µÄµ÷Óøú¯Êý¡£

×¢£º KestrelÊÇÒ»¸öscalaдµÄtwitter¿ªÔ´µÄÏûÏ¢Öмä¼þ£¬ÌصãÊǸßÐÔÄÜ¡¢Ð¡ÇÉ£¨2KÐдúÂ룩¡¢³Ö¾Ã´æ´¢£¨¼Ç¼ÈÕÖ¾µ½journal£©²¢ÇÒ¿É¿¿£¨Ö§³Ö¿É¿¿»ñÈ¡£©¡£KestrelµÄǰÉíÊÇRubyдµÄStarlingÏîÄ¿£¬ºóÀ´twitterµÄ¿ª·¢ÈËÔ±³¢ÊÔÓÃscalaÖØÐÂʵÏÖ¡£

Bolt -- ´¦ÀíÂß¼­

¸ºÔð´¦ÀíÊäÈëµÄStream£¬²¢²úÉúеÄÊä³öStream¡£Bolt¿ÉÒÔÖ´ÐйýÂË¡¢º¯Êý²Ù×÷¡¢Join¡¢²Ù×÷Êý¾Ý¿âµÈÈκβÙ×÷¡£BoltÊÇÒ»¸ö±»¶¯µÄ½ÇÉ«£¬Æä½Ó¿ÚÖÐÓÐÒ»¸öexecute(Tuple input)·½·¨£¬ÔÚ½ÓÊÕµ½ÏûÏ¢Ö®ºó»áµ÷Óô˺¯Êý£¬Óû§¿ÉÒÔÔÚ´Ë·½·¨ÖÐÖ´ÐÐ×Ô¼ºµÄ´¦ÀíÂß¼­¡£bolt¿ÉÒÔ½ÓÊÕÈÎÒâ¶à¸öÊäÈëstream£¬ ×÷һЩ´¦Àí£¬ ÓÐЩbolt¿ÉÄÜ»¹»á·¢ÉäһЩеÄstream¡£Ò»Ð©¸´ÔÓµÄÁ÷ת»»£¬ ±ÈÈç´ÓһЩtweetÀïÃæ¼ÆËã³öÈÈÃÅ»°Ì⣬ ÐèÒª¶à¸ö²½Ö裬 ´Ó¶øÒ²¾ÍÐèÒª¶à¸öbolt¡£ Bolt¿ÉÒÔ×öÈκÎÊÂÇé: ÔËÐк¯Êý¡¢¹ýÂËtuple¡¢ ¾ÛºÏ¡¢ ºÏ²¢ÒÔ¼°·ÃÎÊÊý¾Ý¿âµÈµÈ¡£

Spout Óë Bolt

×¢£º1.topologyÀïÃæµÄÿһ¸ö½Úµã¶¼ÊDz¢ÐÐÔËÐеġ£ ÔÚtopologyÀïÃæ£¬ ¿ÉÒÔÖ¸¶¨Ã¿¸ö½ÚµãµÄ²¢Ðжȣ¬ stormÔò»áÔÚ¼¯ÈºÀïÃæ·ÖÅä¶à¸öÏß³ÌÀ´Í¬Ê±¼ÆËã¡£

2.Ò»¸ötopology»áÒ»Ö±ÔËÐÐÖ±µ½ÏÔʽֹͣËü¡£storm×Ô¶¯ÖØÐ·ÖÅäһЩÔËÐÐʧ°ÜµÄÈÎÎñ£¬ ²¢ÇÒstorm±£Ö¤Äã²»»áÓÐÊý¾Ý¶ªÊ§£¬ ¼´Ê¹ÔÚһЩ»úÆ÷ÒâÍâÍ£»ú²¢ÇÒÏûÏ¢±»¶ªµôµÄÇé¿öÏ¡£

ÔËÐÐÖеÄTopologyÖ÷ÒªÓÉÒÔÏÂÈý¸ö×é¼þ×é³ÉµÄ£ºWorker processes¡¢ Executors threadsÒÔ¼°Tasks

ËüÃǵÄÊýÁ¿¹ØÏµÈçÏÂͼËùʾ£º

Spout»òÕßBoltµÄTask¸öÊýÒ»µ©Ö¸¶¨Ö®ºó¾Í²»ÄܸıäÁË£¬¶øExecutorµÄÊýÁ¿¿ÉÒÔ¸ù¾ÝÇé¿öÀ´½øÐж¯Ì¬µÄµ÷Õû¡£Ä¬ÈÏÇé¿öÏÂ# executor = #tasks¼´Ò»¸öExecutorÖÐÔËÐÐ×ÅÒ»¸öTask¡£

Èý Êý¾ÝÄ£ÐÍ

stormʹÓÃtupleÀ´×÷ΪËüµÄÊý¾ÝÄ£ÐÍ¡£Ã¿¸ötupleÊÇÒ»¶ÑÖµ£¬Ã¿¸öÖµÓÐÒ»¸öÃû×Ö£¬²¢ÇÒÿ¸öÖµ¿ÉÒÔÊÇÈκÎÀàÐÍ£¬ Ò»¸ötuple¿ÉÒÔ¿´×÷Ò»¸öûÓз½·¨µÄjava¶ÔÏó¡£×ÜÌåÀ´¿´£¬stormÖ§³ÖËùÓеĻù±¾ÀàÐÍ¡¢×Ö·û´®ÒÔ¼°×Ö½ÚÊý×é×÷ΪtupleµÄÖµÀàÐÍ¡£Ò²¿ÉÒÔʹÓÃ×Ô¼º¶¨ÒåµÄÀàÐÍÀ´×÷ΪֵÀàÐÍ£¬ ֻҪʵÏÖ¶ÔÓ¦µÄÐòÁл¯Æ÷(serializer)¡£

Ò»¸öTuple´ú±íÊý¾ÝÁ÷ÖеÄÒ»¸ö»ù±¾µÄ´¦Àíµ¥Ôª£¬ÀýÈçÒ»ÌõcookieÈÕÖ¾£¬Ëü¿ÉÒÔ°üº¬¶à¸öField£¬Ã¿¸öField±íʾһ¸öÊôÐÔ¡£

Ò»¸öûÓб߽çµÄ¡¢Ô´Ô´²»¶ÏµÄ¡¢Á¬ÐøµÄTupleÐòÁоÍ×é³ÉÁËStream¡£Tuple±¾À´Ó¦¸ÃÊÇÒ»¸öKey-ValueµÄMap£¬ÓÉÓÚ¸÷¸ö×é¼þ¼ä´«µÝµÄtupleµÄ×Ö¶ÎÃû³ÆÒѾ­ÊÂÏȶ¨ÒåºÃÁË£¬ËùÒÔTupleÖ»ÐèÒª°´ÐòÌîÈë¸÷¸öValue£¬ËùÒÔ¾ÍÊÇÒ»¸öValue List¡£

ËÄ Á÷·Ö×é²ßÂÔ(Stream grouping)

Á÷·Ö×é²ßÂÔ¸æËßtopologyÈçºÎÔÚÁ½¸ö×é¼þÖ®¼ä·¢ËÍtuple¡£ Òª¼Çס£¬ spoutsºÍboltsÒԺܶàtaskµÄÐÎʽÔÚtopologyÀïÃæÍ¬²½Ö´ÐС£Èç¹û´ÓtaskµÄÁ£¶ÈÀ´¿´Ò»¸öÔËÐеÄtopology£¬ ËüÓ¦¸ÃÊÇÕâÑùµÄ:

´Ótask½Ç¶ÈÀ´¿´topology

µ±Bolt AµÄÒ»¸ötaskÒª·¢ËÍÒ»¸ötuple¸øBolt B£¬ ËüÓ¦¸Ã·¢Ë͸øBolt BµÄÄĸötaskÄØ£¿

stream grouping רÃŻشðÕâÖÖÎÊÌâµÄ¡£ÔÚÎÒÃÇÉîÈëÑо¿²»Í¬µÄstream grouping֮ǰ£¬ ÈÃÎÒÃÇ¿´Ò»ÏÂstorm-starterÀïÃæµÄÁíÍâÒ»¸ötopology¡£WordCountTopology¶ÁȡһЩ¾ä×Ó£¬ Êä³ö¾ä×ÓÀïÃæÃ¿¸öµ¥´Ê³öÏֵĴÎÊý.

TopologyBuilder builder =newTopologyBuilder();

builder.setSpout(1,new RandomSentenceSpout(),5);

builder.setBolt(2,new SplitSentence(),8)
 	.shuffleGrouping(1);

builder.setBolt(3,new WordCount(),12)
 	.fieldsGrouping(2,newFields("word"));

SplitSentence¶ÔÓÚ¾ä×ÓÀïÃæµÄÿ¸öµ¥´Ê·¢ÉäÒ»¸öеÄtuple, WordCountÔÚÄÚ´æÀïÃæÎ¬»¤Ò»¸öµ¥´Ê->´ÎÊýµÄmapping£¬ WordCountÿÊÕµ½Ò»¸öµ¥´Ê£¬ Ëü¾Í¸üÐÂÄÚ´æÀïÃæµÄͳ¼Æ×´Ì¬¡£

×î¼òµ¥µÄgroupingÊÇshuffle grouping, ËüËæ»ú·¢¸øÈκÎÒ»¸ötask¡£ÉÏÃæÀý×ÓÀïÃæRandomSentenceSpoutºÍSplitSentenceÖ®¼äÓõľÍÊÇshuffle grouping, shuffle grouping¶Ô¸÷¸ötaskµÄtuple·ÖÅäµÄ±È½Ï¾ùÔÈ¡£

Ò»ÖÖ¸üÓÐȤµÄgroupingÊÇfields grouping, SplitSentenceºÍWordCountÖ®¼äʹÓõľÍÊÇfields grouping, ÕâÖÖgrouping»úÖÆ±£Ö¤ÏàͬfieldÖµµÄtuple»áȥͬһ¸ötask£¬ Õâ¶ÔÓÚWordCountÀ´Ëµ·Ç³£¹Ø¼ü£¬Èç¹ûͬһ¸öµ¥´Ê²»È¥Í¬Ò»¸ötask£¬ ÄÇôͳ¼Æ³öÀ´µÄµ¥´Ê´ÎÊý¾Í²»¶ÔÁË¡£
×¢£ºfields groupingÊÇstreamºÏ²¢£¬ÊÇstream¾ÛºÏÒÔ¼°ºÜ¶àÆäËü³¡¾°µÄ»ù´¡¡£ÔÚ±³ºóÄØ£¬ fields groupingʹÓõÄÒ»ÖÂÐÔ¹þÏ£À´·ÖÅätuple¡£

StormÖ§³ÖµÄ×é·ÖÅä²ßÂÔÈçÏ£º

1.ShuffleGrouping£ºËæ»úÑ¡ÔñÒ»¸öTaskÀ´·¢ËÍ¡£

2.FiledGrouping£º¸ù¾ÝTupleÖÐFieldsÀ´×öÒ»ÖÂÐÔhash£¬ÏàͬhashÖµµÄTuple±»·¢Ë͵½ÏàͬµÄTask¡£

3.AllGrouping£º¹ã²¥·¢ËÍ£¬½«Ã¿Ò»¸öTuple·¢Ë͵½ËùÓеÄTask¡£

4.GlobalGrouping£ºËùÓеÄTuple»á±»·¢Ë͵½Ä³¸öBoltÖеÄid×îСµÄÄǸöTask¡£

5.NoneGrouping£º²»¹ØÐÄTuple·¢Ë͸øÄĸöTaskÀ´´¦Àí£¬µÈ¼ÛÓÚShuffleGrouping¡£

6.DirectGrouping£ºÖ±½Ó½«Tuple·¢Ë͵½Ö¸¶¨µÄTaskÀ´´¦Àí¡£

7.StormµÄ×é·ÖÅä²ßÂԵĸÅÄîÀàËÆÓÚMapReduceµÄPartition»úÖÆ£¬Í¨¹ýʹÓÃһЩ·Ö×é²ßÂÔÔ­ÓïÀ´ÎªTupleÉèÖ÷ÓÉ¡£

Îå С½á

StormÕâÖָ߿ÉÍØÕ¹ÐÔ£¬ÄÜ´¦Àí¸ßƵÊý¾ÝºÍ´ó¹æÄ£Êý¾ÝµÄʵʱÁ÷¼ÆËã½â¾ö·½°¸½«±»Ó¦ÓÃÓÚʵʱËÑË÷£¬¸ßƵ½»Ò׺ÍÉç½»ÍøÂçÉÏ£¬ÆäÓ¦Óó¡¾°½«»áÔ½À´Ô½¹ã·º¡£

   
3772 ´Îä¯ÀÀ       31
Ïà¹ØÎÄÕÂ

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

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

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

MySQLË÷Òý±³ºóµÄÊý¾Ý½á¹¹
MySQLÐÔÄܵ÷ÓÅÓë¼Ü¹¹Éè¼Æ
SQL ServerÊý¾Ý¿â±¸·ÝÓë»Ö¸´
ÈÃÊý¾Ý¿â·ÉÆðÀ´ 10´óDB2ÓÅ»¯
oracleµÄÁÙʱ±í¿Õ¼äдÂú´ÅÅÌ
Êý¾Ý¿âµÄ¿çƽ̨Éè¼Æ


²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿â
¸ß¼¶Êý¾Ý¿â¼Ü¹¹Éè¼ÆÊ¦
HadoopÔ­ÀíÓëʵ¼ù
Oracle Êý¾Ý²Ö¿â
Êý¾Ý²Ö¿âºÍÊý¾ÝÍÚ¾ò
OracleÊý¾Ý¿â¿ª·¢Óë¹ÜÀí


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