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