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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
StormÈëÃÅ
 
  3244  次浏览      31
 2018-2-26  
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚcsdn,StormÊÇÒ»¸öÃâ·Ñ¿ªÔ´¡¢·Ö²¼Ê½¡¢¸ßÈÝ´íµÄʵʱ¼ÆËãϵͳ¡£

1. ʲôÊÇStorm

StormÊÇTwitter¿ªÔ´µÄÒ»¸ö·Ö²¼Ê½µÄʵʱ¼ÆËãϵͳ¡£

2. StormµÄÉè¼ÆË¼Ïë

  • StormÊǶÔÁ÷StreamµÄ³éÏó£¬Á÷ÊÇÒ»¸ö²»¼ä¶ÏµÄÎÞ½çµÄÁ¬Ðøtuple£¬×¢ÒâStormÔÚ½¨Ä£Ê¼þÁ÷ʱ£¬°ÑÁ÷ÖеÄʼþ³éÏóΪtuple¼´Ôª×é¡£
  • Storm½«Á÷ÖÐÔªËØ³éÏóΪTuple£¬Ò»¸ötuple¾ÍÊÇÒ»¸öÖµÁбívalue
    list£¬listÖеÄÿ¸övalue¶¼ÓÐÒ»¸öname£¬²¢ÇÒ¸Ãvalue¿ÉÒÔÊÇ»ù±¾ÀàÐÍ£¬×Ö·ûÀàÐÍ£¬×Ö½ÚÊý×éµÈ£¬µ±È»Ò²¿ÉÒÔÊÇÆäËû¿ÉÐòÁл¯µÄÀàÐÍ¡£
  • StormÈÏΪÿ¸östream¶¼ÓÐÒ»¸östreamÔ´£¬Ò²¾ÍÊÇԭʼԪ×éµÄÔ´Í·£¬ËùÒÔËü½«Õâ¸öÔ´Í·³ÆÎªSpout¡£
  • ÓÐÁËÔ´Í·¼´spoutÒ²¾ÍÊÇÓÐÁËstream£¬ÄÇô¸ÃÈçºÎ´¦ÀístreamÄÚµÄtupleÄØ¡£½«Á÷µÄ״̬ת»»³ÆÎªBolt£¬bolt¿ÉÒÔÏû·ÑÈÎÒâÊýÁ¿µÄÊäÈëÁ÷£¬Ö»Òª½«Á÷·½Ïòµ¼Ïò¸Ãbolt£¬Í¬Ê±ËüÒ²¿ÉÒÔ·¢ËÍеÄÁ÷¸øÆäËûboltʹÓã¬ÕâÑùÒ»À´£¬Ö»Òª´ò¿ªÌض¨µÄspout£¨¹Ü¿Ú£©ÔÙ½«spoutÖÐÁ÷³öµÄtupleµ¼ÏòÌØ¶¨µÄbolt£¬ÓÖbolt¶Ôµ¼ÈëµÄÁ÷×ö´¦ÀíºóÔÙµ¼ÏòÆäËûbolt»òÕßÄ¿µÄµØ¡£
  • ÒÔÉÏ´¦Àí¹ý³Ìͳ³ÆÎªTopology¼´ÍØÆË¡£ÍØÆËÊÇstormÖÐ×î¸ß²ã´ÎµÄÒ»¸ö³éÏó¸ÅÄËü¿ÉÒÔ±»Ìá½»µ½storm¼¯ÈºÖ´ÐУ¬Ò»¸öÍØÆË¾ÍÊÇÒ»¸öÁ÷ת»»Í¼£¬Í¼ÖÐÿ¸ö½ÚµãÊÇÒ»¸öspout»òÕßbolt£¬Í¼Öеı߱íʾbolt¶©ÔÄÁËÄÄЩÁ÷£¬µ±spout»òÕßbolt·¢ËÍÔª×éµ½Á÷ʱ£¬Ëü¾Í·¢ËÍÔª×鵽ÿ¸ö¶©ÔÄÁ˸ÃÁ÷µÄbolt£¨Õâ¾ÍÒâζ×Ų»ÐèÒªÎÒÃÇÊÖ¹¤À­¹ÜµÀ£¬Ö»ÒªÔ¤Ïȶ©ÔÄ£¬spout¾Í»á½«Á÷·¢µ½Êʵ±boltÉÏ£©¡£
  • ÍØÆËµÄÿ¸ö½Úµã¶¼ÒªËµÃ÷ËüËù·¢Éä³öµÄÔª×éµÄ×ֶεÄname£¬ÆäËû½ÚµãÖ»ÐèÒª¶©ÔĸÃname¾Í¿ÉÒÔ½ÓÊÕ´¦Àí¡£

3.Storm¼¯Èº½á¹¹

  • Storm¼¯Èº±íÃæÀàËÆHadoop¼¯Èº¡£µ«ÔÚHadoopÉÏÄãÔËÐÐÊÇ¡±MapReduce
    jobs¡±£¬ÔÚStormÉÏÄãÔËÐеÄÊÇ¡±topologies¡±¡£¡±Jobs¡±ºÍ¡±topologies¡±ÊÇ´ó²»Í¬µÄ£¬Ò»¸ö¹Ø¼ü²»Í¬ÊÇÒ»¸öMapReduceµÄJob×îÖÕ»á½áÊø£¬¶øÒ»¸ötopologyÓÀÔ¶´¦ÀíÏûÏ¢£¨»òÖ±µ½ÄãkillËü£©¡£
  • Storm¼¯ÈºÓÐÁ½Öֽڵ㣺¿ØÖÆ£¨master£©½ÚµãºÍ¹¤×÷Õߣ¨worker£©½Úµã¡£
  • ¿ØÖƽڵãÔËÐÐÒ»¸ö³ÆÖ®Îª¡±Nimbus¡±µÄºǫ́³ÌÐò£¬ËüÀàËÆÓÚHaddopµÄ¡±JobTracker¡±¡£Nimbus¸ºÔðÔÚ¼¯Èº·¶Î§ÄÚ·Ö·¢´úÂ롢Ϊworker·ÖÅäÈÎÎñºÍ¹ÊÕϼà²â¡£
  • ÿ¸ö¹¤×÷Õß½ÚµãÔËÐÐÒ»¸ö³ÆÖ®¡±Supervisor¡±µÄºǫ́³ÌÐò¡£Supervisor¼àÌý·ÖÅ䏸ËüËùÔÚ»úÆ÷µÄ¹¤×÷£¬»ùÓÚNimbus·ÖÅ䏸ËüµÄÊÂÇéÀ´¾ö¶¨Æô¶¯»òÍ£Ö¹¹¤×÷Õß½ø³Ì¡£Ã¿¸ö¹¤×÷Õß½ø³ÌÖ´ÐÐÒ»¸ötopologyµÄ×Ó¼¯£¨Ò²¾ÍÊÇÒ»¸ö×ÓÍØÆË½á¹¹£©£»Ò»¸öÔËÐÐÖеÄtopologyÓÉÐí¶à¿ç¶à¸ö»úÆ÷µÄ¹¤×÷Õß½ø³Ì×é³É¡£
  • Ò»¸öZookeeper¼¯Èº¸ºÔðNimbusºÍ¶à¸öSupervisorÖ®¼äµÄËùÓÐЭµ÷¹¤×÷£¨Ò»¸öÍêÕûµÄÍØÆË¿ÉÄܱ»·ÖΪ¶à¸ö×ÓÍØÆË²¢Óɶà¸ösupervisorÍê³É£©¡£
  • ´ËÍ⣬Nimbusºǫ́³ÌÐòºÍSupervisorºǫ́³ÌÐò¶¼ÊÇ¿ìËÙʧ°Ü£¨fail-fast£©ºÍÎÞ״̬µÄ£»ËùÓÐ״̬ά³ÖÔÚZookeeper»ò±¾µØ´ÅÅÌ¡£ÕâÒâζ×ÅÄã¿ÉÒÔkill -9ɱµônimbus½ø³ÌºÍsupervisor½ø³Ì£¬È»ºóÖØÆô£¬ËüÃǽ«»Ö¸´×´Ì¬²¢¼ÌÐø¹¤×÷£¬¾ÍÏñʲôҲû·¢Éú¡£ÕâÖÖÉè¼ÆÊ¹storm¼«ÆäÎȶ¨¡£ÕâÖÖÉè¼ÆÖÐMaster²¢Ã»ÓÐÖ±½ÓºÍworkerͨÐÅ£¬¶øÊǽèÖúÒ»¸öÖнéZookeeper£¬ÕâÑùÒ»À´¿ÉÒÔ·ÖÀëmasterºÍworkerµÄÒÀÀµ£¬½«×´Ì¬ÐÅÏ¢´æ·ÅÔÚzookeeper¼¯ÈºÄÚÒÔ¿ìËٻظ´ÈκÎʧ°ÜµÄÒ»·½¡£

4.StormµÄÖØÒª¸ÅÄî

  • worker£º
    Supervisor»á¼àÌý·ÖÅ䏸ËüÄÇ̨»úÆ÷µÄ¹¤×÷£¬¸ù¾ÝÐèÒªÆô¶¯/¹Ø±Õ¹¤×÷½ø³Ì£¬Õâ¸ö¹¤×÷½ø³Ì¾ÍÊÇworker
    ÿһ¸öworker¶¼»áÕ¼Óù¤×÷½ÚµãµÄÒ»¸ö¶Ë¿Ú£¬Õâ¸ö¶Ë¿Ú¿ÉÒÔÔÚstorm.yarmÖÐÅäÖá£
    Ò»¸ötopology¿ÉÄÜ»áÔÚÒ»¸ö»òÕß¶à¸ö¹¤×÷½ø³ÌÀïÃæÖ´ÐУ¬Ã¿¸ö¹¤×÷½ø³ÌÖ´ÐÐÕû¸ötopologyµÄÒ»²¿·Ö£¬ËùÒÔÒ»¸öÔËÐеÄtopologyÓÉÔËÐÐÔںܶà»úÆ÷Éϵĺܶ๤×÷½ø³Ì×é³É¡£
  • Task:
    ÿһ¸öSpoutºÍBolt»á±»µ±×÷ºÜ¶àtaskÔÚÕû¸ö¼¯ÈºÀïÃæÖ´ÐС£Ä¬ÈÏÇé¿öÏÂÿһ¸ötask¶ÔÓ¦µ½Ò»¸öỊ̈߳¨Executor£©£¬Õâ¸öÏß³ÌÓÃÀ´Ö´ÐÐÕâ¸ötask£¬¶østream groupingÔòÊǶ¨ÒåÔõô´ÓÒ»¶Ñtask·¢Éätupleµ½ÁíÍâÒ»¶Ñtask¡£
  • ÿ̨supervisorÔËÐÐ×ÅÈô¸É¸öWorker½ø³Ì£¬Ã¿¸öWorker½ø³ÌÔËÐÐ×ÅÈô¸É¸öExecutorỊ̈߳¬Ã¿¸öExecutorÏß³ÌÔËÐÐ×Åͬһ¸öcomponent£¨Spout»òBolt£©µÄÒ»¸ö»ò¶à¸ötask¡£

  • Config(ÅäÖÃ)£º
    stormÀïÃæÓÐÒ»¶Ñ²ÎÊý¿ÉÒÔÅäÖÃÀ´µ÷Õûnimbus, supervisorÒÔ¼°ÕýÔÚÔËÐеÄtopologyµÄÐÐΪ£¬ һЩÅäÖÃÊÇϵͳ¼¶±ðµÄ£¬ һЩÅäÖÃÊÇtopology¼¶±ðµÄ¡£ËùÓÐÓÐĬÈÏÖµµÄÅäÖõÄĬÈÏÅäÖÃÊÇÅäÖÃÔÚdefault.xmlÀïÃæµÄ¡£Äã¿ÉÒÔͨ¹ý¶¨Òå¸östorm.xmlÔÚÄãµÄclasspathÀåÃ×À´¸²¸ÇÕâЩĬÈÏÅäÖᣲ¢ÇÒÄãÒ²¿ÉÒÔÔÚ´úÂëÀïÃæÉèÖÃһЩtopologyÏà¹ØµÄÅäÖÃÐÅÏ¢ ¨C ʹÓÃStormSubmitter¡£µ±È»£¬ÕâЩÅäÖõÄÓÅÏȼ¶ÊÇ: default.xml < storm.xml < TOPOLOGY-SPECIFICÅäÖá£
  • Stream Grouping£¨ÏûÏ¢·Ö·¢²ßÂÔ£©£º

  • Shuffle Grouping£ºËæ»ú·Ö×é£¬Ëæ»úÅÉ·¢streamÀïÃæµÄtuple£¬±£Ö¤Ã¿¸öbolt½ÓÊÕµ½µÄtupleÊýÄ¿Ïàͬ¡£
  • FieldsGrouping£º°´×ֶηÖ×飬±ÈÈç°´useridÀ´·Ö×飬¾ßÓÐͬÑùuseridµÄtuple»á±»·Öµ½ÏàͬµÄBolts£¬¶ø²»Í¬µÄuseridÔò»á±»·ÖÅäµ½²»Í¬µÄBolts¡£
  • All Grouping£º¹ã²¥·¢ËÍ£¬¶ÔÓÚÿһ¸ötuple£¬ËùÓеÄBolts¶¼»áÊÕµ½¡£
  • Global Grouping:È«¾Ö·Ö×飬Õâ¸ötuple±»·ÖÅäµ½stormÖеÄÒ»¸öboltµÄÆäÖÐÒ»¸ötask¡£ÔÙ¾ßÌåÒ»µã¾ÍÊÇ·ÖÅ䏸idÖµ×îµÍµÄÄǸötask¡£
  • NonGrouping£º²»·Ö×飬Õâ¸ö·Ö×éµÄÒâ˼ÊÇ˵stream²»¹ØÐĵ½µ×Ë­»áÊÕµ½ËüµÄtuple¡£Ä¿Ç°ÕâÖÖ·Ö×éºÍShuffle groupingÊÇÒ»ÑùµÄЧ¹û£¬ÓÐÒ»µã²»Í¬µÄÊÇstorm»á°ÑÕâ¸öbolt·Åµ½Õâ¸öboltµÄ¶©ÔÄÕßͬһ¸öÏß³ÌÀïÃæÈ¥Ö´ÐС£
  • Direct Grouping£ºÖ±½Ó·Ö×é,
    ÕâÊÇÒ»ÖֱȽÏÌØ±ðµÄ·Ö×é·½·¨£¬ÓÃÕâÖÖ·Ö×éÒâζ×ÅÏûÏ¢µÄ·¢ËÍÕßÖ¸¶¨ÓÉÏûÏ¢½ÓÊÕÕßµÄÄĸötask´¦ÀíÕâ¸öÏûÏ¢¡£Ö»Óб»ÉùÃ÷ΪDirect StreamµÄÏûÏ¢Á÷¿ÉÒÔÉùÃ÷ÕâÖÖ·Ö×é·½·¨¡£¶øÇÒÕâÖÖÏûÏ¢tuple±ØÐëʹÓÃemitDirect·½·¨À´·¢Éä¡£ÏûÏ¢´¦ÀíÕß¿ÉÒÔͨ¹ýTopologyContextÀ´»ñÈ¡´¦ÀíËüµÄÏûÏ¢µÄtaskid
    (OutputCollector.emit·½·¨Ò²»á·µ»Øtaskid)¡£

5.Storm¿É¿¿ÐÔ£º

1¡¢worker½ø³Ì¹Òµô

storm»áÖØÐÂÔÙÆô¶¯Ò»¸öworker

2¡¢supervisor½ø³Ì¹Òµô

²»»áÓ°Ïì֮ǰÒѾ­Ìá½»µÄtopology£¬Ö»ÊǺóÆÚ²»»áÔÙÏòÕâ¸ö½Úµã·ÖÅäÈÎÎñÁË¡£

3¡¢nimbus½ø³Ì¹Òµô

²»»áÓ°Ïì֮ǰÒѾ­Ìá½»µÄtopology£¬Ö»ÊǺóÆÚ²»ÄÜÔÙÏò¼¯ÈºÌá½»topologyÁË¡£

4¡¢ack/failÏûϢȷÈÏ»úÖÆ(È·±£Ò»¸ötuple±»ÍêÈ«´¦Àí)

ÔÚspoutÖз¢ÉätupleµÄʱºòÐèҪͬʱ·¢ËÍmessageid£¬ÕâÑù²ÅÏ൱ÓÚ¿ªÆôÁËÏûϢȷÈÏ»úÖÆ

Èç¹ûÄãµÄtopologyÀïÃæµÄtuple±È½Ï¶àµÄ»°£¬ ÄÇô°ÑackerµÄÊýÁ¿ÉèÖöàÒ»µã,ЧÂÊ»á¸ßÒ»µã¡£

ͨ¹ýconfig.setNumAckers(num)À´ÉèÖÃÒ»¸ötopologyÀïÃæµÄackerµÄÊýÁ¿£¬Ä¬ÈÏÖµÊÇ1¡£

×¢Ò⣺ ackerÓÃÁËÌØÊâµÄËã·¨£¬Ê¹µÃ¶ÔÓÚ×·×Ùÿ¸öspout tupleµÄ״̬ËùÐèÒªµÄÄÚ´æÁ¿ÊǺ㶨µÄ£¨20 bytes)

×¢Ò⣺Èç¹ûÒ»¸ötupleÔÚÖ¸¶¨µÄtimeout(Config.TOPOLOGY_MESSAGE_TIMEOUT_SECSĬÈÏֵΪ30Ãë)ʱ¼äÄÚûÓб»³É¹¦´¦Àí£¬ÄÇôÕâ¸ötuple»á±»ÈÏΪ´¦Àíʧ°ÜÁË¡£

 

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

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

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

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ