
¼ò½é
´óÊý¾ÝÊÇÊÕ¼¯¡¢ÕûÀí¡¢´¦Àí´óÈÝÁ¿Êý¾Ý¼¯£¬²¢´ÓÖлñµÃ¼û½âËùÐèµÄ·Ç´«Í³Õ½ÂԺͼ¼ÊõµÄ×ܳơ£ËäÈ»´¦ÀíÊý¾ÝËùÐèµÄ¼ÆËãÄÜÁ¦»ò´æ´¢ÈÝÁ¿ÔçÒѳ¬¹ýһ̨¼ÆËã»úµÄÉÏÏÞ£¬µ«ÕâÖÖ¼ÆËãÀàÐÍµÄÆÕ±éÐÔ¡¢¹æÄ££¬ÒÔ¼°¼ÛÖµÔÚ×î½ü¼¸Äê²Å¾ÀúÁË´ó¹æÄ£À©Õ¹¡£
±¾ÎĽ«½éÉÜ´óÊý¾Ýϵͳһ¸ö×î»ù±¾µÄ×é¼þ£º´¦Àí¿ò¼Ü¡£´¦Àí¿ò¼Ü¸ºÔð¶ÔϵͳÖеÄÊý¾Ý½øÐмÆË㣬ÀýÈç´¦Àí´Ó·ÇÒ×ʧ´æ´¢ÖжÁÈ¡µÄÊý¾Ý£¬»ò´¦Àí¸Õ¸ÕÉãÈ뵽ϵͳÖеÄÊý¾Ý¡£Êý¾ÝµÄ¼ÆËãÔòÊÇÖ¸´Ó´óÁ¿µ¥Ò»Êý¾ÝµãÖÐÌáÈ¡ÐÅÏ¢ºÍ¼û½âµÄ¹ý³Ì¡£
ÏÂÎĽ«½éÉÜÕâЩ¿ò¼Ü£º
½öÅú´¦Àí¿ò¼Ü£º
Apache Hadoop
½öÁ÷´¦Àí¿ò¼Ü£º
Apache Storm
Apache Samza
»ìºÏ¿ò¼Ü£º
Apache Spark
Apache Flink
´óÊý¾Ý´¦Àí¿ò¼ÜÊÇʲô£¿
´¦Àí¿ò¼ÜºÍ´¦ÀíÒýÇæ¸ºÔð¶ÔÊý¾ÝϵͳÖеÄÊý¾Ý½øÐмÆËã¡£ËäÈ»¡°ÒýÇæ¡±ºÍ¡°¿ò¼Ü¡±Ö®¼äµÄÇø±ðûÓÐʲôȨÍþµÄ¶¨Ò壬µ«´ó²¿·Öʱºò¿ÉÒÔ½«Ç°Õß¶¨ÒåΪʵ¼Ê¸ºÔð´¦ÀíÊý¾Ý²Ù×÷µÄ×é¼þ£¬ºóÕßÔò¿É¶¨ÒåΪ³Ðµ£ÀàËÆ×÷ÓõÄһϵÁÐ×é¼þ¡£
ÀýÈçApache Hadoop¿ÉÒÔ¿´×÷Ò»ÖÖÒÔMapReduce×÷ΪĬÈÏ´¦ÀíÒýÇæµÄ´¦Àí¿ò¼Ü¡£ÒýÇæºÍ¿ò¼Üͨ³£¿ÉÒÔÏà»¥Ìæ»»»òͬʱʹÓá£ÀýÈçÁíÒ»¸ö¿ò¼ÜApache
Spark¿ÉÒÔÄÉÈëHadoop²¢È¡´úMapReduce¡£×é¼þÖ®¼äµÄÕâÖÖ»¥²Ù×÷ÐÔÊÇ´óÊý¾ÝϵͳÁé»îÐÔÈç´ËÖ®¸ßµÄÔÒòÖ®Ò»¡£
ËäÈ»¸ºÔð´¦ÀíÉúÃüÖÜÆÚÄÚÕâÒ»½×¶ÎÊý¾ÝµÄϵͳͨ³£¶¼ºÜ¸´ÔÓ£¬µ«´Ó¹ãÒå²ãÃæÀ´¿´ËüÃǵÄÄ¿±êÊǷdz£Ò»ÖµģºÍ¨¹ý¶ÔÊý¾ÝÖ´ÐвÙ×÷Ìá¸ßÀí½âÄÜÁ¦£¬½Òʾ³öÊý¾ÝÔ̺¬µÄģʽ£¬²¢Õë¶Ô¸´ÔÓ»¥¶¯»ñµÃ¼û½â¡£
ΪÁ˼ò»¯ÕâЩ×é¼þµÄÌÖÂÛ£¬ÎÒÃÇ»áͨ¹ý²»Í¬´¦Àí¿ò¼ÜµÄÉè¼ÆÒâͼ£¬°´ÕÕËù´¦ÀíµÄÊý¾Ý״̬¶ÔÆä½øÐзÖÀࡣһЩϵͳ¿ÉÒÔÓÃÅú´¦Àí·½Ê½´¦ÀíÊý¾Ý£¬Ò»Ð©ÏµÍ³¿ÉÒÔÓÃÁ÷·½Ê½´¦ÀíÁ¬Ðø²»¶ÏÁ÷ÈëϵͳµÄÊý¾Ý¡£´ËÍ⻹ÓÐһЩϵͳ¿ÉÒÔͬʱ´¦ÀíÕâÁ½ÀàÊý¾Ý¡£
ÔÚÉîÈë½éÉܲ»Í¬ÊµÏÖµÄÖ¸±êºÍ½áÂÛ֮ǰ£¬Ê×ÏÈÐèÒª¶Ô²»Í¬´¦ÀíÀàÐ͵ĸÅÄî½øÐÐÒ»¸ö¼òµ¥µÄ½éÉÜ¡£
Åú´¦Àíϵͳ
Åú´¦ÀíÔÚ´óÊý¾ÝÊÀ½çÓÐ×ÅÓÆ¾ÃµÄÀúÊ·¡£Åú´¦ÀíÖ÷Òª²Ù×÷´óÈÝÁ¿¾²Ì¬Êý¾Ý¼¯£¬²¢ÔÚ¼ÆËã¹ý³ÌÍê³Éºó·µ»Ø½á¹û¡£
Åú´¦ÀíģʽÖÐʹÓõÄÊý¾Ý¼¯Í¨³£·ûºÏÏÂÁÐÌØÕ÷...
1¡¢Óн磺Åú´¦ÀíÊý¾Ý¼¯´ú±íÊý¾ÝµÄÓÐÏÞ¼¯ºÏ
2¡¢³Ö¾Ã£ºÊý¾Ýͨ³£Ê¼ÖÕ´æ´¢ÔÚijÖÖÀàÐ͵ij־ô洢λÖÃÖÐ
3¡¢´óÁ¿£ºÅú´¦Àí²Ù×÷ͨ³£ÊÇ´¦Àí¼«Îªº£Á¿Êý¾Ý¼¯µÄΨһ·½·¨
Åú´¦Àí·Ç³£ÊʺÏÐèÒª·ÃÎÊÈ«Ì׼Ǽ²ÅÄÜÍê³ÉµÄ¼ÆË㹤×÷¡£ÀýÈçÔÚ¼ÆËã×ÜÊýºÍƽ¾ùÊýʱ£¬±ØÐ뽫Êý¾Ý¼¯×÷Ϊһ¸öÕûÌå¼ÓÒÔ´¦Àí£¬¶ø²»Äܽ«ÆäÊÓ×÷¶àÌõ¼Ç¼µÄ¼¯ºÏ¡£ÕâЩ²Ù×÷ÒªÇóÔÚ¼ÆËã½øÐйý³ÌÖÐÊý¾Ýά³Ö×Ô¼ºµÄ״̬¡£
ÐèÒª´¦Àí´óÁ¿Êý¾ÝµÄÈÎÎñͨ³£×îÊʺÏÓÃÅú´¦Àí²Ù×÷½øÐд¦Àí¡£ÎÞÂÛÖ±½Ó´Ó³Ö¾Ã´æ´¢É豸´¦ÀíÊý¾Ý¼¯£¬»òÊ×ÏȽ«Êý¾Ý¼¯ÔØÈëÄڴ棬Åú´¦ÀíϵͳÔÚÉè¼Æ¹ý³ÌÖоͳä·Ö¿¼ÂÇÁËÊý¾ÝµÄÁ¿£¬¿ÉÌṩ³ä×ãµÄ´¦Àí×ÊÔ´¡£ÓÉÓÚÅú´¦ÀíÔÚÓ¦¶Ô´óÁ¿³Ö¾ÃÊý¾Ý·½ÃæµÄ±íÏÖ¼«Îª³öÉ«£¬Òò´Ë¾³£±»ÓÃÓÚ¶ÔÀúÊ·Êý¾Ý½øÐзÖÎö¡£
´óÁ¿Êý¾ÝµÄ´¦ÀíÐèÒª¸¶³ö´óÁ¿Ê±¼ä£¬Òò´ËÅú´¦Àí²»Êʺ϶Դ¦Àíʱ¼äÒªÇó½Ï¸ßµÄ³¡ºÏ¡£
Apache Hadoop
Apache HadoopÊÇÒ»ÖÖרÓÃÓÚÅú´¦ÀíµÄ´¦Àí¿ò¼Ü¡£HadoopÊÇÊ׸öÔÚ¿ªÔ´ÉçÇø»ñµÃ¼«´ó¹Ø×¢µÄ´óÊý¾Ý¿ò¼Ü¡£»ùÓڹȸèÓйغ£Á¿Êý¾Ý´¦ÀíËù·¢±íµÄ¶àƪÂÛÎÄÓë¾ÑéµÄHadoopÖØÐÂʵÏÖÁËÏà¹ØËã·¨ºÍ×é¼þ¶ÑÕ»£¬Èôó¹æÄ£Åú´¦Àí¼¼Êõ±äµÃ¸üÒ×Óá£
аæHadoop°üº¬¶à¸ö×é¼þ£¬¼´¶à¸ö²ã£¬Í¨¹ýÅäºÏʹÓÿɴ¦ÀíÅúÊý¾Ý£º
HDFS£ºHDFSÊÇÒ»ÖÖ·Ö²¼Ê½Îļþϵͳ²ã£¬¿É¶Ô¼¯Èº½Úµã¼äµÄ´æ´¢ºÍ¸´ÖƽøÐÐе÷¡£HDFSÈ·±£ÁËÎÞ·¨±ÜÃâµÄ½Úµã¹ÊÕÏ·¢ÉúºóÊý¾ÝÒÀÈ»¿ÉÓ㬿ɽ«ÆäÓÃ×÷Êý¾ÝÀ´Ô´£¬¿ÉÓÃÓÚ´æ´¢Öмä̬µÄ´¦Àí½á¹û£¬²¢¿É´æ´¢¼ÆËãµÄ×îÖÕ½á¹û¡£
YARN£ºYARNÊÇYet Another Resource Negotiator£¨ÁíÒ»¸ö×ÊÔ´¹ÜÀíÆ÷£©µÄËõд£¬¿É³äµ±Hadoop¶ÑÕ»µÄ¼¯ÈºÐµ÷×é¼þ¡£¸Ã×é¼þ¸ºÔðе÷²¢¹ÜÀíµ×²ã×ÊÔ´ºÍµ÷¶È×÷ÒµµÄÔËÐС£Í¨¹ý³äµ±¼¯Èº×ÊÔ´µÄ½Ó¿Ú£¬YARNʹµÃÓû§ÄÜÔÚHadoop¼¯ÈºÖÐʹÓñÈÒÔÍùµÄµü´ú·½Ê½ÔËÐиü¶àÀàÐ͵Ť×÷¸ºÔØ¡£
MapReduce£ºMapReduceÊÇHadoopµÄÔÉúÅú´¦ÀíÒýÇæ¡£
Åú´¦Àíģʽ
HadoopµÄ´¦Àí¹¦ÄÜÀ´×ÔMapReduceÒýÇæ¡£MapReduceµÄ´¦Àí¼¼Êõ·ûºÏʹÓüüÖµ¶ÔµÄmap¡¢shuffle¡¢reduceËã·¨ÒªÇó¡£»ù±¾´¦Àí¹ý³Ì°üÀ¨£º
´ÓHDFSÎļþϵͳ¶ÁÈ¡Êý¾Ý¼¯
½«Êý¾Ý¼¯²ð·Ö³ÉС¿é²¢·ÖÅ䏸ËùÓпÉÓýڵã
Õë¶Ôÿ¸ö½ÚµãÉϵÄÊý¾Ý×Ó¼¯½øÐмÆË㣨¼ÆËãµÄÖмä̬½á¹û»áÖØÐÂдÈëHDFS£©
ÖØÐ·ÖÅäÖмä̬½á¹û²¢°´ÕÕ¼ü½øÐзÖ×é
ͨ¹ý¶Ôÿ¸ö½Úµã¼ÆËãµÄ½á¹û½øÐлã×ܺÍ×éºÏ¶Ôÿ¸ö¼üµÄÖµ½øÐС°Reducing¡±
½«¼ÆËã¶øÀ´µÄ×îÖÕ½á¹ûÖØÐÂдÈë HDFS
ÓÅÊÆºÍ¾ÖÏÞ
ÓÉÓÚÕâÖÖ·½·¨ÑÏÖØÒÀÀµ³Ö¾Ã´æ´¢£¬Ã¿¸öÈÎÎñÐèÒª¶à´ÎÖ´ÐжÁÈ¡ºÍдÈë²Ù×÷£¬Òò´ËËÙ¶ÈÏà¶Ô½ÏÂý¡£µ«ÁíÒ»·½ÃæÓÉÓÚ´ÅÅ̿ռäͨ³£ÊÇ·þÎñÆ÷ÉÏ×î·á¸»µÄ×ÊÔ´£¬ÕâÒâζ×ÅMapReduce¿ÉÒÔ´¦Àí·Ç³£º£Á¿µÄÊý¾Ý¼¯¡£Í¬Ê±Ò²Òâζ×ÅÏà±ÈÆäËûÀàËÆ¼¼Êõ£¬HadoopµÄMapReduceͨ³£¿ÉÒÔÔÚÁ®¼ÛÓ²¼þÉÏÔËÐУ¬ÒòΪ¸Ã¼¼Êõ²¢²»ÐèÒª½«Ò»Çж¼´æ´¢ÔÚÄÚ´æÖС£MapReduce¾ß±¸¼«¸ßµÄËõ·ÅDZÁ¦£¬Éú²ú»·¾³ÖÐÔø¾³öÏÖ¹ý°üº¬ÊýÍò¸ö½ÚµãµÄÓ¦Óá£
MapReduceµÄѧϰÇúÏß½ÏΪ¶¸ÇÍ£¬ËäÈ»HadoopÉú̬ϵͳµÄÆäËûÖܱ߼¼Êõ¿ÉÒÔ´ó·ù½µµÍÕâÒ»ÎÊÌâµÄÓ°Ï죬µ«Í¨¹ýHadoop¼¯Èº¿ìËÙʵÏÖijЩӦÓÃʱÒÀÈ»ÐèҪעÒâÕâ¸öÎÊÌâ¡£
Î§ÈÆHadoopÒѾÐγÉÁËÁÉÀ«µÄÉú̬ϵͳ£¬Hadoop¼¯Èº±¾ÉíÒ²¾³£±»ÓÃ×÷ÆäËûÈí¼þµÄ×é³É²¿¼þ¡£ºÜ¶àÆäËû´¦Àí¿ò¼ÜºÍÒýÇæÍ¨¹ýÓëHadoop¼¯³ÉÒ²¿ÉÒÔʹÓÃHDFSºÍYARN×ÊÔ´¹ÜÀíÆ÷¡£
×ܽá
Apache Hadoop¼°ÆäMapReduce´¦ÀíÒýÇæÌṩÁËÒ»Ì׾þ¿¼ÑéµÄÅú´¦ÀíÄ£ÐÍ£¬×îÊʺϴ¦Àí¶Ôʱ¼äÒªÇ󲻸ߵķdz£´ó¹æÄ£Êý¾Ý¼¯¡£Í¨¹ý·Ç³£µÍ³É±¾µÄ×é¼þ¼´¿É´î½¨ÍêÕû¹¦ÄܵÄHadoop¼¯Èº£¬Ê¹µÃÕâÒ»Á®¼ÛÇÒ¸ßЧµÄ´¦Àí¼¼Êõ¿ÉÒÔÁé»îÓ¦ÓÃÔںܶసÀýÖС£ÓëÆäËû¿ò¼ÜºÍÒýÇæµÄ¼æÈÝÓ뼯³ÉÄÜÁ¦Ê¹µÃHadoop¿ÉÒÔ³ÉΪʹÓò»Í¬¼¼ÊõµÄ¶àÖÖ¹¤×÷¸ºÔØ´¦ÀíÆ½Ì¨µÄµ×²ã»ù´¡¡£
Á÷´¦Àíϵͳ
Á÷´¦Àíϵͳ»á¶ÔËæÊ±½øÈëϵͳµÄÊý¾Ý½øÐмÆËã¡£Ïà±ÈÅú´¦Àíģʽ£¬ÕâÊÇÒ»ÖÖ½ØÈ»²»Í¬µÄ´¦Àí·½Ê½¡£Á÷´¦Àí·½Ê½ÎÞÐèÕë¶ÔÕû¸öÊý¾Ý¼¯Ö´ÐвÙ×÷£¬¶øÊǶÔͨ¹ýϵͳ´«ÊäµÄÿ¸öÊý¾ÝÏîÖ´ÐвÙ×÷¡£
Á÷´¦ÀíÖеÄÊý¾Ý¼¯ÊÇ¡°Îޱ߽硱µÄ£¬Õâ¾Í²úÉúÁ˼¸¸öÖØÒªµÄÓ°Ï죺
ÍêÕûÊý¾Ý¼¯Ö»ÄÜ´ú±í½ØÖÁĿǰÒѾ½øÈ뵽ϵͳÖеÄÊý¾Ý×ÜÁ¿¡£
¹¤×÷Êý¾Ý¼¯Ò²Ðí¸üÏà¹Ø£¬ÔÚÌØ¶¨Ê±¼äÖ»ÄÜ´ú±íij¸öµ¥Ò»Êý¾ÝÏî¡£
´¦Àí¹¤×÷ÊÇ»ùÓÚʼþµÄ£¬³ý·ÇÃ÷È·Í£Ö¹·ñÔòûÓС°¾¡Í·¡±¡£´¦Àí½á¹ûÁ¢¿Ì¿ÉÓ㬲¢»áËæ×ÅÐÂÊý¾ÝµÄµÖ´ï¼ÌÐø¸üС£
Á÷´¦Àíϵͳ¿ÉÒÔ´¦Àí¼¸ºõÎÞÏÞÁ¿µÄÊý¾Ý£¬µ«Í¬Ò»Ê±¼äÖ»ÄÜ´¦ÀíÒ»Ìõ£¨ÕæÕýµÄÁ÷´¦Àí£©»òºÜÉÙÁ¿£¨Î¢Åú´¦Àí£¬Micro-batch
Processing£©Êý¾Ý£¬²»Í¬¼Ç¼¼äֻά³Ö×îÉÙÁ¿µÄ״̬¡£ËäÈ»´ó²¿·ÖϵͳÌṩÁËÓÃÓÚά³ÖijЩ״̬µÄ·½·¨£¬µ«Á÷´¦ÀíÖ÷ÒªÕë¶Ô¸±×÷ÓøüÉÙ£¬¸ü¼Ó¹¦ÄÜÐԵĴ¦Àí£¨Functional
processing£©½øÐÐÓÅ»¯¡£
¹¦ÄÜÐÔ²Ù×÷Ö÷Òª²àÖØÓÚ״̬»ò¸±×÷ÓÃÓÐÏÞµÄÀëÉ¢²½Öè¡£Õë¶Ôͬһ¸öÊý¾ÝÖ´ÐÐͬһ¸ö²Ù×÷»á»òÂÔÆäËûÒòËØ²úÉúÏàͬµÄ½á¹û£¬´ËÀà´¦Àí·Ç³£ÊʺÏÁ÷´¦Àí£¬ÒòΪ²»Í¬ÏîµÄ״̬ͨ³£ÊÇijЩÀ§ÄÑ¡¢ÏÞÖÆ£¬ÒÔ¼°Ä³Ð©Çé¿öϲ»ÐèÒªµÄ½á¹ûµÄ½áºÏÌå¡£Òò´ËËäȻijЩÀàÐ͵Ä״̬¹ÜÀíͨ³£ÊÇ¿ÉÐе쬵«ÕâЩ¿ò¼Üͨ³£ÔÚ²»¾ß±¸×´Ì¬¹ÜÀí»úÖÆÊ±¸ü¼òµ¥Ò²¸ü¸ßЧ¡£
´ËÀà´¦Àí·Ç³£ÊʺÏijЩÀàÐ͵Ť×÷¸ºÔØ¡£Óнüʵʱ´¦ÀíÐèÇóµÄÈÎÎñºÜÊʺÏʹÓÃÁ÷´¦Àíģʽ¡£·ÖÎö¡¢·þÎñÆ÷»òÓ¦ÓóÌÐò´íÎóÈÕÖ¾£¬ÒÔ¼°ÆäËû»ùÓÚʱ¼äµÄºâÁ¿Ö¸±êÊÇ×îÊʺϵÄÀàÐÍ£¬ÒòΪ¶ÔÕâЩÁìÓòµÄÊý¾Ý±ä»¯×ö³öÏìÓ¦¶ÔÓÚÒµÎñÖ°ÄÜÀ´ËµÊǼ«Îª¹Ø¼üµÄ¡£Á÷´¦ÀíºÜÊʺÏÓÃÀ´´¦Àí±ØÐë¶Ô±ä¶¯»ò·åÖµ×ö³öÏìÓ¦£¬²¢ÇÒ¹Ø×¢Ò»¶Îʱ¼äÄڱ仯Ç÷ÊÆµÄÊý¾Ý¡£
Apache Storm
Apache StormÊÇÒ»ÖÖ²àÖØÓÚ¼«µÍÑÓ³ÙµÄÁ÷´¦Àí¿ò¼Ü£¬Ò²ÐíÊÇÒªÇó½üʵʱ´¦ÀíµÄ¹¤×÷¸ºÔصÄ×î¼ÑÑ¡Ôñ¡£¸Ã¼¼Êõ¿É´¦Àí·Ç³£´óÁ¿µÄÊý¾Ý£¬Í¨¹ý±ÈÆäËû½â¾ö·½°¸¸üµÍµÄÑÓ³ÙÌṩ½á¹û¡£
Á÷´¦Àíģʽ
StormµÄÁ÷´¦Àí¿É¶Ô¿ò¼ÜÖÐÃûΪTopology£¨ÍØÆË£©µÄDAG£¨Directed Acyclic Graph£¬ÓÐÏòÎÞ»·Í¼£©½øÐбàÅÅ¡£ÕâÐ©ÍØÆËÃèÊöÁ˵±Êý¾ÝƬ¶Î½øÈëϵͳºó£¬ÐèÒª¶Ôÿ¸ö´«ÈëµÄƬ¶ÎÖ´ÐеIJ»Í¬×ª»»»ò²½Öè¡£
ÍØÆË°üº¬£º
1¡¢Stream£ºÆÕͨµÄÊý¾ÝÁ÷£¬ÕâÊÇÒ»ÖÖ»á³ÖÐøµÖ´ïϵͳµÄÎޱ߽çÊý¾Ý¡£
2¡¢Spout£ºÎ»ÓÚÍØÆË±ßÔµµÄÊý¾ÝÁ÷À´Ô´£¬ÀýÈç¿ÉÒÔÊÇAPI»ò²éѯµÈ£¬´ÓÕâÀï¿ÉÒÔ²úÉú´ý´¦ÀíµÄÊý¾Ý¡£
3¡¢Bolt£ºBolt´ú±íÐèÒªÏûºÄÁ÷Êý¾Ý£¬¶ÔÆäÓ¦ÓòÙ×÷£¬²¢½«½á¹ûÒÔÁ÷µÄÐÎʽ½øÐÐÊä³öµÄ´¦Àí²½Öè¡£BoltÐèÒªÓëÿ¸öSpout½¨Á¢Á¬½Ó£¬ËæºóÏ໥Á¬½ÓÒÔ×é³ÉËùÓбØÒªµÄ´¦Àí¡£ÔÚÍØÆËµÄβ²¿£¬¿ÉÒÔʹÓÃ×îÖÕµÄBoltÊä³ö×÷ΪÏ໥Á¬½ÓµÄÆäËûϵͳµÄÊäÈë¡£
Storm±³ºóµÄÏë·¨ÊÇʹÓÃÉÏÊö×é¼þ¶¨Òå´óÁ¿Ð¡Ð͵ÄÀëÉ¢²Ù×÷£¬Ëæºó½«¶à¸ö×é¼þ×é³ÉËùÐèÍØÆË¡£Ä¬ÈÏÇé¿öÏÂStormÌṩÁË¡°ÖÁÉÙÒ»´Î¡±µÄ´¦Àí±£Ö¤£¬ÕâÒâζ×Å¿ÉÒÔÈ·±£Ã¿ÌõÏûÏ¢ÖÁÉÙ¿ÉÒÔ±»´¦ÀíÒ»´Î£¬µ«Ä³Ð©Çé¿öÏÂÈç¹ûÓöµ½Ê§°Ü¿ÉÄܻᴦÀí¶à´Î¡£StormÎÞ·¨È·±£¿ÉÒÔ°´ÕÕÌØ¶¨Ë³Ðò´¦ÀíÏûÏ¢¡£
ΪÁËʵÏÖÑϸñµÄÒ»´Î´¦Àí£¬¼´ÓÐ״̬´¦Àí£¬¿ÉÒÔʹÓÃÒ»ÖÖÃûΪTridentµÄ³éÏó¡£ÑϸñÀ´Ëµ²»Ê¹ÓÃTridentµÄStormͨ³£¿É³ÆÖ®ÎªCore
Storm¡£Trident»á¶ÔStormµÄ´¦ÀíÄÜÁ¦²úÉú¼«´óÓ°Ï죬»áÔö¼ÓÑÓ³Ù£¬Îª´¦ÀíÌṩ״̬£¬Ê¹ÓÃ΢Åúģʽ´úÌæÖðÏî´¦ÀíµÄ´¿´âÁ÷´¦Àíģʽ¡£
Ϊ±ÜÃâÕâЩÎÊÌ⣬ͨ³£½¨ÒéStormÓû§¾¡¿ÉÄÜʹÓÃCore Storm¡£È»¶øÒ²Òª×¢Ò⣬Trident¶ÔÄÚÈÝÑϸñµÄÒ»´Î´¦Àí±£Ö¤ÔÚijЩÇé¿öÏÂÒ²±È½ÏÓÐÓã¬ÀýÈçϵͳÎÞ·¨ÖÇÄܵش¦ÀíÖØ¸´ÏûϢʱ¡£Èç¹ûÐèÒªÔÚÏîÖ®¼äά³Ö״̬£¬ÀýÈçÏëÒª¼ÆËãÒ»¸öСʱÄÚÓжàÉÙÓû§µã»÷ÁËij¸öÁ´½Ó£¬´ËʱTrident½«ÊÇÄãΨһµÄÑ¡Ôñ¡£¾¡¹Ü²»Äܳä·Ö·¢»Ó¿ò¼ÜÓëÉú¾ãÀ´µÄÓÅÊÆ£¬µ«TridentÌá¸ßÁËStormµÄÁé»îÐÔ¡£
TridentÍØÆË°üº¬£º
1¡¢Á÷Åú£¨Stream batch£©£ºÕâÊÇÖ¸Á÷Êý¾ÝµÄ΢Åú£¬¿Éͨ¹ý·Ö¿éÌṩÅú´¦ÀíÓïÒå¡£
2¡¢²Ù×÷£¨Operation£©£ºÊÇÖ¸¿ÉÒÔ¶ÔÊý¾ÝÖ´ÐеÄÅú´¦Àí¹ý³Ì¡£
ÓÅÊÆºÍ¾ÖÏÞ
ĿǰÀ´ËµStorm¿ÉÄÜÊǽüʵʱ´¦ÀíÁìÓòµÄ×î¼Ñ½â¾ö·½°¸¡£¸Ã¼¼Êõ¿ÉÒÔÓü«µÍÑÓ³Ù´¦ÀíÊý¾Ý£¬¿ÉÓÃÓÚÏ£Íû»ñµÃ×îµÍÑӳٵŤ×÷¸ºÔØ¡£Èç¹û´¦ÀíËÙ¶ÈÖ±½ÓÓ°ÏìÓû§ÌåÑ飬ÀýÈçÐèÒª½«´¦Àí½á¹ûÖ±½ÓÌṩ¸ø·Ã¿Í´ò¿ªµÄÍøÕ¾Ò³Ãæ£¬´ËʱStorm½«»áÊÇÒ»¸öºÜºÃµÄÑ¡Ôñ¡£
StormÓëTridentÅäºÏʹµÃÓû§¿ÉÒÔÓÃ΢Åú´úÌæ´¿´âµÄÁ÷´¦Àí¡£ËäÈ»½è´ËÓû§¿ÉÒÔ»ñµÃ¸ü´óÁé»îÐÔ´òÔì¸ü·ûºÏÒªÇóµÄ¹¤¾ß£¬µ«Í¬Ê±ÕâÖÖ×ö·¨»áÏ÷Èõ¸Ã¼¼ÊõÏà±ÈÆäËû½â¾ö·½°¸×î´óµÄÓÅÊÆ¡£»°ËäÈç´Ë£¬µ«¶àÒ»ÖÖÁ÷´¦Àí·½Ê½×ÜÊǺõġ£
Core StormÎÞ·¨±£Ö¤ÏûÏ¢µÄ´¦Àí˳Ðò¡£Core StormΪÏûÏ¢ÌṩÁË¡°ÖÁÉÙÒ»´Î¡±µÄ´¦Àí±£Ö¤£¬ÕâÒâζ×Å¿ÉÒÔ±£Ö¤Ã¿ÌõÏûÏ¢¶¼Äܱ»´¦Àí£¬µ«Ò²¿ÉÄÜ·¢ÉúÖØ¸´¡£TridentÌṩÁËÑϸñµÄÒ»´Î´¦Àí±£Ö¤£¬¿ÉÒÔÔÚ²»Í¬ÅúÖ®¼äÌṩ˳Ðò´¦Àí£¬µ«ÎÞ·¨ÔÚÒ»¸öÅúÄÚ²¿ÊµÏÖ˳Ðò´¦Àí¡£
ÔÚ»¥²Ù×÷ÐÔ·½Ã棬Storm¿ÉÓëHadoopµÄYARN×ÊÔ´¹ÜÀíÆ÷½øÐм¯³É£¬Òò´Ë¿ÉÒԺܷ½±ãµØÈÚÈëÏÖÓÐHadoop²¿Êð¡£³ýÁËÖ§³Ö´ó²¿·Ö´¦Àí¿ò¼Ü£¬Storm»¹¿ÉÖ§³Ö¶àÖÖÓïÑÔ£¬ÎªÓû§µÄÍØÆË¶¨ÒåÌṩÁ˸ü¶àÑ¡Ôñ¡£
×ܽá
¶ÔÓÚÑÓ³ÙÐèÇóºÜ¸ßµÄ´¿´âµÄÁ÷´¦Àí¹¤×÷¸ºÔØ£¬Storm¿ÉÄÜÊÇ×îÊʺϵļ¼Êõ¡£¸Ã¼¼Êõ¿ÉÒÔ±£Ö¤Ã¿ÌõÏûÏ¢¶¼±»´¦Àí£¬¿ÉÅäºÏ¶àÖÖ±à³ÌÓïÑÔʹÓá£ÓÉÓÚStormÎÞ·¨½øÐÐÅú´¦Àí£¬Èç¹ûÐèÒªÕâЩÄÜÁ¦¿ÉÄÜ»¹ÐèҪʹÓÃÆäËûÈí¼þ¡£Èç¹û¶ÔÑϸñµÄÒ»´Î´¦Àí±£Ö¤ÓбȽϸߵÄÒªÇ󣬴Ëʱ¿É¿¼ÂÇʹÓÃTrident¡£²»¹ýÕâÖÖÇé¿öÏÂÆäËûÁ÷´¦Àí¿ò¼ÜÒ²Ðí¸üÊʺϡ£
Apache Samza
Apache SamzaÊÇÒ»ÖÖÓëApache KafkaÏûϢϵͳ½ôÃܰ󶨵ÄÁ÷´¦Àí¿ò¼Ü¡£ËäÈ»Kafka¿ÉÓÃÓںܶàÁ÷´¦Àíϵͳ£¬µ«°´ÕÕÉè¼Æ£¬Samza¿ÉÒÔ¸üºÃµØ·¢»ÓKafka¶ÀÌØµÄ¼Ü¹¹ÓÅÊÆºÍ±£ÕÏ¡£¸Ã¼¼Êõ¿Éͨ¹ýKafkaÌṩÈÝ´í¡¢»º³å£¬ÒÔ¼°×´Ì¬´æ´¢¡£
Samza¿ÉʹÓÃYARN×÷Ϊ×ÊÔ´¹ÜÀíÆ÷¡£ÕâÒâζ×ÅĬÈÏÇé¿öÏÂÐèÒª¾ß±¸Hadoop¼¯Èº£¨ÖÁÉپ߱¸HDFSºÍYARN£©£¬µ«Í¬Ê±Ò²Òâζ×ÅSamza¿ÉÒÔÖ±½ÓʹÓÃYARN·á¸»µÄÄÚ½¨¹¦ÄÜ¡£
Á÷´¦Àíģʽ
1¡¢SamzaÒÀÀµKafkaµÄÓïÒ嶨ÒåÁ÷µÄ´¦Àí·½Ê½¡£KafkaÔÚ´¦ÀíÊý¾ÝÊ±Éæ¼°ÏÂÁиÅÄ
2¡¢Topic£¨»°Ì⣩£º½øÈëKafkaϵͳµÄÿ¸öÊý¾ÝÁ÷¿É³ÆÖ®ÎªÒ»¸ö»°Ìâ¡£»°Ìâ»ù±¾ÉÏÊÇÒ»Öֿɹ©ÏûºÄ·½¶©Ôĵģ¬ÓÉÏà¹ØÐÅÏ¢×é³ÉµÄÊý¾ÝÁ÷¡£
3¡¢Partition£¨·ÖÇø£©£ºÎªÁ˽«Ò»¸ö»°Ìâ·ÖÉ¢ÖÁ¶à¸ö½Úµã£¬Kafka»á½«´«ÈëµÄÏûÏ¢»®·ÖΪ¶à¸ö·ÖÇø¡£·ÖÇøµÄ»®·Ö½«»ùÓÚ¼ü£¨Key£©½øÐУ¬ÕâÑù¿ÉÒÔ±£Ö¤°üº¬Í¬Ò»¸ö¼üµÄÿÌõÏûÏ¢¿ÉÒÔ»®·ÖÖÁͬһ¸ö·ÖÇø¡£·ÖÇøµÄ˳Ðò¿É»ñµÃ±£Ö¤¡£
4¡¢Broker£¨´úÀí£©£º×é³ÉKafka¼¯ÈºµÄÿ¸ö½ÚµãÒ²½Ð×ö´úÀí¡£
5¡¢Producer£¨Éú³É·½£©£ºÈκÎÏòKafka»°ÌâдÈëÊý¾ÝµÄ×é¼þ¿ÉÒÔ½Ð×öÉú³É·½¡£Éú³É·½¿ÉÌṩ½«»°Ìâ»®·ÖΪ·ÖÇøËùÐèµÄ¼ü¡£
6¡¢Consumer£¨ÏûºÄ·½£©£ºÈκδÓKafka¶ÁÈ¡»°ÌâµÄ×é¼þ¿É½Ð×öÏûºÄ·½¡£ÏûºÄ·½ÐèÒª¸ºÔðά³ÖÓйØ×Ô¼º·ÖÖ§µÄÐÅÏ¢£¬ÕâÑù¼´¿ÉÔÚʧ°ÜºóÖªµÀÄÄЩ¼Ç¼ÒѾ±»´¦Àí¹ýÁË¡£
ÓÉÓÚKafkaÏ൱ÓÚÓÀºã²»±äµÄÈÕÖ¾£¬SamzaÒ²ÐèÒª´¦ÀíÓÀºã²»±äµÄÊý¾ÝÁ÷¡£ÕâÒâζ×ÅÈκÎת»»´´½¨µÄÐÂÊý¾ÝÁ÷¶¼¿É±»ÆäËû×é¼þËùʹÓ㬶ø²»»á¶Ô×î³õµÄÊý¾ÝÁ÷²úÉúÓ°Ïì¡£
ÓÅÊÆºÍ¾ÖÏÞ
Õ§¿´Ö®Ï£¬Samza¶ÔKafkaÀà²éѯϵͳµÄÒÀÀµËƺõÊÇÒ»ÖÖÏÞÖÆ£¬È»¶øÕâÒ²¿ÉÒÔΪϵͳÌṩһЩ¶ÀÌØµÄ±£Ö¤ºÍ¹¦ÄÜ£¬ÕâЩÄÚÈÝÒ²ÊÇÆäËûÁ÷´¦Àíϵͳ²»¾ß±¸µÄ¡£
ÀýÈçKafkaÒѾÌṩÁË¿ÉÒÔͨ¹ýµÍÑÓ³Ù·½Ê½·ÃÎʵÄÊý¾Ý´æ´¢¸±±¾£¬´ËÍ⻹¿ÉÒÔΪÿ¸öÊý¾Ý·ÖÇøÌṩ·Ç³£Ò×ÓÃÇҵͳɱ¾µÄ¶à¶©ÔÄÕßÄ£ÐÍ¡£ËùÓÐÊä³öÄÚÈÝ£¬°üÀ¨Öмä̬µÄ½á¹û¶¼¿ÉдÈëµ½Kafka£¬²¢¿É±»ÏÂÓβ½Öè¶ÀÁ¢Ê¹Óá£
ÕâÖÖ¶ÔKafkaµÄ½ôÃÜÒÀÀµÔÚºÜ¶à·½ÃæÀàËÆÓÚMapReduceÒýÇæ¶ÔHDFSµÄÒÀÀµ¡£ËäÈ»ÔÚÅú´¦ÀíµÄÿ¸ö¼ÆËãÖ®¼ä¶ÔHDFSµÄÒÀÀµµ¼ÖÂÁËһЩÑÏÖØµÄÐÔÄÜÎÊÌ⣬µ«Ò²±ÜÃâÁËÁ÷´¦ÀíÓöµ½µÄºÜ¶àÆäËûÎÊÌâ¡£
SamzaÓëKafkaÖ®¼ä½ôÃܵĹØÏµÊ¹µÃ´¦Àí²½Öè±¾Éí¿ÉÒԷdz£ËÉÉ¢µØñîºÏÔÚÒ»Æð¡£ÎÞÐèÊÂÏÈе÷£¬¼´¿ÉÔÚÊä³öµÄÈκβ½ÖèÖÐÔö¼ÓÈÎÒâÊýÁ¿µÄ¶©ÔÄÕߣ¬¶ÔÓÚÓжà¸öÍŶÓÐèÒª·ÃÎÊÀàËÆÊý¾ÝµÄ×éÖ¯£¬ÕâÒ»ÌØÐԷdz£ÓÐÓ᣶à¸öÍŶӿÉÒÔÈ«²¿¶©ÔĽøÈëϵͳµÄÊý¾Ý»°Ì⣬»òÈÎÒâ¶©ÔÄÆäËûÍŶӶÔÊý¾Ý½øÐйýijЩ´¦Àíºó´´½¨µÄ»°Ìâ¡£ÕâÒ»Çв¢²»»á¶ÔÊý¾Ý¿âµÈ¸ºÔØÃܼ¯ÐÍ»ù´¡¼Ü¹¹Ôì³É¶îÍâµÄѹÁ¦¡£
Ö±½ÓдÈëKafka»¹¿É±ÜÃâ»ØÑ¹£¨Backpressure£©ÎÊÌâ¡£»ØÑ¹ÊÇÖ¸µ±¸ºÔØ·åÖµµ¼ÖÂÊý¾ÝÁ÷ÈëËٶȳ¬¹ý×é¼þʵʱ´¦ÀíÄÜÁ¦µÄÇé¿ö£¬ÕâÖÖÇé¿ö¿ÉÄܵ¼Ö´¦Àí¹¤×÷Í£¶Ù²¢¿ÉÄܶªÊ§Êý¾Ý¡£°´ÕÕÉè¼Æ£¬Kafka¿ÉÒÔ½«Êý¾Ý±£´æºÜ³¤Ê±¼ä£¬ÕâÒâζ×Å×é¼þ¿ÉÒÔÔÚ·½±ãµÄʱºò¼ÌÐø½øÐд¦Àí£¬²¢¿ÉÖ±½ÓÖØÆô¶¯¶øÎÞÐèµ£ÐÄÔì³ÉÈκκó¹û¡£
Samza¿ÉÒÔʹÓÃÒÔ±¾µØ¼üÖµ´æ´¢·½Ê½ÊµÏÖµÄÈÝ´í¼ì²éµãϵͳ´æ´¢Êý¾Ý¡£ÕâÑùSamza¼´¿É»ñµÃ¡°ÖÁÉÙÒ»´Î¡±µÄ½»¸¶±£ÕÏ£¬µ«Ãæ¶ÔÓÉÓÚÊý¾Ý¿ÉÄܶà´Î½»¸¶Ôì³ÉµÄʧ°Ü£¬¸Ã¼¼ÊõÎÞ·¨¶Ô»ã×ܺó״̬£¨ÀýÈç¼ÆÊý£©Ìṩ¾«È·»Ö¸´¡£
SamzaÌṩµÄ¸ß¼¶³éÏóʹÆäÔÚºÜ¶à·½Ãæ±ÈStormµÈϵͳÌṩµÄ»ùÔª£¨Primitive£©¸üÒ×ÓÚÅäºÏʹÓá£Ä¿Ç°SamzaÖ»Ö§³ÖJVMÓïÑÔ£¬ÕâÒâζ×ÅËüÔÚÓïÑÔÖ§³Ö·½Ãæ²»ÈçStormÁé»î¡£
×ܽá
¶ÔÓÚÒѾ¾ß±¸»òÒ×ÓÚʵÏÖHadoopºÍKafkaµÄ»·¾³£¬Apache SamzaÊÇÁ÷´¦Àí¹¤×÷¸ºÔØÒ»¸öºÜºÃµÄÑ¡Ôñ¡£Samza±¾ÉíºÜÊʺÏÓжà¸öÍŶÓÐèҪʹÓ㨵«Ï໥֮¼ä²¢²»Ò»¶¨½ôÃÜе÷£©²»Í¬´¦Àí½×¶ÎµÄ¶à¸öÊý¾ÝÁ÷µÄ×éÖ¯¡£Samza¿É´ó·ù¼ò»¯ºÜ¶àÁ÷´¦Àí¹¤×÷£¬¿ÉʵÏÖµÍÑÓ³ÙµÄÐÔÄÜ¡£Èç¹û²¿ÊðÐèÇóÓ뵱ǰϵͳ²»¼æÈÝ£¬Ò²Ðí²¢²»ÊʺÏʹÓ㬵«Èç¹ûÐèÒª¼«µÍÑӳٵĴ¦Àí£¬»ò¶ÔÑϸñµÄÒ»´Î´¦ÀíÓïÒåÓнϸßÐèÇ󣬴ËʱÒÀÈ»ÊʺϿ¼ÂÇ¡£
»ìºÏ´¦Àíϵͳ£ºÅú´¦ÀíºÍÁ÷´¦Àí
һЩ´¦Àí¿ò¼Ü¿Éͬʱ´¦ÀíÅú´¦ÀíºÍÁ÷´¦Àí¹¤×÷¸ºÔØ¡£ÕâЩ¿ò¼Ü¿ÉÒÔÓÃÏàͬ»òÏà¹ØµÄ×é¼þºÍAPI´¦ÀíÁ½ÖÖÀàÐ͵ÄÊý¾Ý£¬½è´ËÈò»Í¬µÄ´¦ÀíÐèÇóµÃÒÔ¼ò»¯¡£
ÈçÄãËù¼û£¬ÕâÒ»ÌØÐÔÖ÷ÒªÊÇÓÉSparkºÍFlinkʵÏֵģ¬ÏÂÎĽ«½éÉÜÕâÁ½ÖÖ¿ò¼Ü¡£ÊµÏÖÕâÑùµÄ¹¦ÄÜÖØµãÔÚÓÚÁ½ÖÖ²»Í¬´¦ÀíģʽÈçºÎ½øÐÐͳһ£¬ÒÔ¼°Òª¶Ô¹Ì¶¨ºÍ²»¹Ì¶¨Êý¾Ý¼¯Ö®¼äµÄ¹ØÏµ½øÐкÎÖÖ¼ÙÉè¡£
ËäÈ»²àÖØÓÚijһÖÖ´¦ÀíÀàÐ͵ÄÏîÄ¿»á¸üºÃµØÂú×ã¾ßÌåÓÃÀýµÄÒªÇ󣬵«»ìºÏ¿ò¼ÜÒâÔÚÌṩһÖÖÊý¾Ý´¦ÀíµÄͨÓýâ¾ö·½°¸¡£ÕâÖÖ¿ò¼Ü²»½ö¿ÉÒÔÌṩ´¦ÀíÊý¾ÝËùÐèµÄ·½·¨£¬¶øÇÒÌṩÁË×Ô¼ºµÄ¼¯³ÉÏî¡¢¿â¡¢¹¤¾ß£¬¿ÉʤÈÎͼÐηÖÎö¡¢»úÆ÷ѧϰ¡¢½»»¥Ê½²éѯµÈ¶àÖÖÈÎÎñ¡£
Apache Spark
Apache SparkÊÇÒ»ÖÖ°üº¬Á÷´¦ÀíÄÜÁ¦µÄÏÂÒ»´úÅú´¦Àí¿ò¼Ü¡£ÓëHadoopµÄMapReduceÒýÇæ»ùÓÚ¸÷ÖÖÏàͬÔÔò¿ª·¢¶øÀ´µÄSparkÖ÷Òª²àÖØÓÚͨ¹ýÍêÉÆµÄÄÚ´æ¼ÆËãºÍ´¦ÀíÓÅ»¯»úÖÆ¼Ó¿ìÅú´¦Àí¹¤×÷¸ºÔصÄÔËÐÐËÙ¶È¡£
Spark¿É×÷Ϊ¶ÀÁ¢¼¯Èº²¿Êð£¨ÐèÒªÏàÓ¦´æ´¢²ãµÄÅäºÏ£©£¬»ò¿ÉÓëHadoop¼¯³É²¢È¡´úMapReduceÒýÇæ¡£
Åú´¦Àíģʽ
ÓëMapReduce²»Í¬£¬SparkµÄÊý¾Ý´¦Àí¹¤×÷È«²¿ÔÚÄÚ´æÖнøÐУ¬Ö»ÔÚÒ»¿ªÊ¼½«Êý¾Ý¶ÁÈëÄڴ棬ÒÔ¼°½«×îÖÕ½á¹û³Ö¾Ã´æ´¢Ê±ÐèÒªÓë´æ´¢²ã½»»¥¡£ËùÓÐÖмä̬µÄ´¦Àí½á¹û¾ù´æ´¢ÔÚÄÚ´æÖС£
ËäÈ»ÄÚ´æÖд¦Àí·½Ê½¿É´ó·ù¸ÄÉÆÐÔÄÜ£¬SparkÔÚ´¦ÀíÓë´ÅÅÌÓйصÄÈÎÎñʱËÙ¶ÈÒ²ÓкܴóÌáÉý£¬ÒòΪͨ¹ýÌáǰ¶ÔÕû¸öÈÎÎñ¼¯½øÐзÖÎö¿ÉÒÔʵÏÖ¸üÍêÉÆµÄÕûÌåʽÓÅ»¯¡£Îª´ËSpark¿É´´½¨´ú±íËùÐèÖ´ÐеÄÈ«²¿²Ù×÷£¬ÐèÒª²Ù×÷µÄÊý¾Ý£¬ÒÔ¼°²Ù×÷ºÍÊý¾ÝÖ®¼ä¹ØÏµµÄDirected
Acyclic Graph£¨ÓÐÏòÎÞ»·Í¼£©£¬¼´DAG£¬½è´Ë´¦ÀíÆ÷¿ÉÒÔ¶ÔÈÎÎñ½øÐиüÖÇÄܵÄе÷¡£
ΪÁËʵÏÖÄÚ´æÖÐÅú¼ÆË㣬Spark»áʹÓÃÒ»ÖÖÃûΪResilient Distributed Dataset£¨µ¯ÐÔ·Ö²¼Ê½Êý¾Ý¼¯£©£¬¼´RDDµÄÄ£ÐÍÀ´´¦ÀíÊý¾Ý¡£ÕâÊÇÒ»ÖÖ´ú±íÊý¾Ý¼¯£¬Ö»Î»ÓÚÄÚ´æÖУ¬ÓÀºã²»±äµÄ½á¹¹¡£Õë¶ÔRDDÖ´ÐеIJÙ×÷¿ÉÉú³ÉеÄRDD¡£Ã¿¸öRDD¿Éͨ¹ýÊÀϵ£¨Lineage£©»ØËÝÖÁ¸¸¼¶RDD£¬²¢×îÖÕ»ØËÝÖÁ´ÅÅÌÉϵÄÊý¾Ý¡£Spark¿Éͨ¹ýRDDÔÚÎÞÐ轫ÿ¸ö²Ù×÷µÄ½á¹ûд»Ø´ÅÅ̵ÄǰÌáÏÂʵÏÖÈÝ´í¡£
Á÷´¦Àíģʽ
Á÷´¦ÀíÄÜÁ¦ÊÇÓÉSpark StreamingʵÏֵġ£Spark±¾ÉíÔÚÉè¼ÆÉÏÖ÷ÒªÃæÏòÅú´¦Àí¹¤×÷¸ºÔØ£¬ÎªÁËÃÖ²¹ÒýÇæÉè¼ÆºÍÁ÷´¦Àí¹¤×÷¸ºÔØÌØÕ÷·½ÃæµÄ²îÒ죬SparkʵÏÖÁËÒ»ÖÖ½Ð×ö΢Åú£¨Micro-batch£©*µÄ¸ÅÄî¡£ÔÚ¾ßÌå²ßÂÔ·½Ãæ¸Ã¼¼Êõ¿ÉÒÔ½«Êý¾ÝÁ÷ÊÓ×÷һϵÁзdz£Ð¡µÄ¡°Åú¡±£¬½è´Ë¼´¿Éͨ¹ýÅú´¦ÀíÒýÇæµÄÔÉúÓïÒå½øÐд¦Àí¡£
Spark Streaming»áÒÔÑÇÃë¼¶ÔöÁ¿¶ÔÁ÷½øÐлº³å£¬ËæºóÕâЩ»º³å»á×÷ΪС¹æÄ£µÄ¹Ì¶¨Êý¾Ý¼¯½øÐÐÅú´¦Àí¡£ÕâÖÖ·½Ê½µÄʵ¼ÊЧ¹û·Ç³£ºÃ£¬µ«Ïà±ÈÕæÕýµÄÁ÷´¦Àí¿ò¼ÜÔÚÐÔÄÜ·½ÃæÒÀÈ»´æÔÚ²»×ã¡£
ÓÅÊÆºÍ¾ÖÏÞ
ʹÓÃSpark¶ø·ÇHadoop MapReduceµÄÖ÷ÒªÔÒòÊÇËÙ¶È¡£ÔÚÄÚ´æ¼ÆËã²ßÂÔºÍÏȽøµÄDAGµ÷¶ÈµÈ»úÖÆµÄ°ïÖúÏ£¬Spark¿ÉÒÔÓøü¿ìËÙ¶È´¦ÀíÏàͬµÄÊý¾Ý¼¯¡£
SparkµÄÁíÒ»¸öÖØÒªÓÅÊÆÔÚÓÚ¶àÑùÐÔ¡£¸Ã²úÆ·¿É×÷Ϊ¶ÀÁ¢¼¯Èº²¿Ê𣬻òÓëÏÖÓÐHadoop¼¯Èº¼¯³É¡£¸Ã²úÆ·¿ÉÔËÐÐÅú´¦ÀíºÍÁ÷´¦Àí£¬ÔËÐÐÒ»¸ö¼¯Èº¼´¿É´¦Àí²»Í¬ÀàÐ͵ÄÈÎÎñ¡£
³ýÁËÒýÇæ×ÔÉíµÄÄÜÁ¦Íâ£¬Î§ÈÆSpark»¹½¨Á¢Á˰üº¬¸÷ÖÖ¿âµÄÉú̬ϵͳ£¬¿ÉΪ»úÆ÷ѧϰ¡¢½»»¥Ê½²éѯµÈÈÎÎñÌṩ¸üºÃµÄÖ§³Ö¡£Ïà±ÈMapReduce£¬SparkÈÎÎñ¸üÊÇ¡°ÖÚËùÖÜÖª¡±µØÒ×ÓÚ±àд£¬Òò´Ë¿É´ó·ùÌá¸ßÉú²úÁ¦¡£
ΪÁ÷´¦Àíϵͳ²ÉÓÃÅú´¦ÀíµÄ·½·¨£¬ÐèÒª¶Ô½øÈëϵͳµÄÊý¾Ý½øÐлº³å¡£»º³å»úÖÆÊ¹µÃ¸Ã¼¼Êõ¿ÉÒÔ´¦Àí·Ç³£´óÁ¿µÄ´«ÈëÊý¾Ý£¬Ìá¸ßÕûÌåÍÌÍÂÂÊ£¬µ«µÈ´ý»º³åÇøÇå¿ÕÒ²»áµ¼ÖÂÑÓ³ÙÔö¸ß¡£ÕâÒâζ×ÅSpark
Streaming¿ÉÄܲ»Êʺϴ¦Àí¶ÔÑÓ³ÙÓнϸßÒªÇóµÄ¹¤×÷¸ºÔØ¡£
ÓÉÓÚÄÚ´æÍ¨³£±È´ÅÅ̿ռä¸ü¹ó£¬Òò´ËÏà±È»ùÓÚ´ÅÅ̵Äϵͳ£¬Spark³É±¾¸ü¸ß¡£È»¶ø´¦ÀíËٶȵÄÌáÉýÒâζ×Å¿ÉÒÔ¸ü¿ìËÙÍê³ÉÈÎÎñ£¬ÔÚÐèÒª°´ÕÕСʱÊýΪ×ÊÔ´¸¶·ÑµÄ»·¾³ÖУ¬ÕâÒ»ÌØÐÔͨ³£¿ÉÒÔµÖÏûÔö¼ÓµÄ³É±¾¡£
SparkÄÚ´æ¼ÆËãÕâÒ»Éè¼ÆµÄÁíÒ»¸öºó¹ûÊÇ£¬Èç¹û²¿ÊðÔÚ¹²ÏíµÄ¼¯ÈºÖпÉÄÜ»áÓöµ½×ÊÔ´²»×ãµÄÎÊÌâ¡£Ïà±ÈHadoop
MapReduce£¬SparkµÄ×ÊÔ´ÏûºÄ¸ü´ó£¬¿ÉÄÜ»á¶ÔÐèÒªÔÚͬһʱ¼äʹÓü¯ÈºµÄÆäËûÈÎÎñ²úÉúÓ°Ïì¡£´Ó±¾ÖÊÀ´¿´£¬Spark¸ü²»ÊʺÏÓëHadoop¶ÑÕ»µÄÆäËû×é¼þ¹²´æÒ»´¦¡£
×ܽá
SparkÊǶàÑù»¯¹¤×÷¸ºÔØ´¦ÀíÈÎÎñµÄ×î¼ÑÑ¡Ôñ¡£SparkÅú´¦ÀíÄÜÁ¦ÒÔ¸ü¸ßÄÚ´æÕ¼ÓÃΪ´ú¼ÛÌṩÁËÎÞÓëÂױȵÄËÙ¶ÈÓÅÊÆ¡£¶ÔÓÚÖØÊÓÍÌÍÂÂʶø·ÇÑӳٵŤ×÷¸ºÔØ£¬Ôò±È½ÏÊʺÏʹÓÃSpark
Streaming×÷ΪÁ÷´¦Àí½â¾ö·½°¸¡£
Apache Flink
Apache FlinkÊÇÒ»ÖÖ¿ÉÒÔ´¦ÀíÅú´¦ÀíÈÎÎñµÄÁ÷´¦Àí¿ò¼Ü¡£¸Ã¼¼Êõ¿É½«Åú´¦ÀíÊý¾ÝÊÓ×÷¾ß±¸ÓÐÏޱ߽çµÄÊý¾ÝÁ÷£¬½è´Ë½«Åú´¦ÀíÈÎÎñ×÷ΪÁ÷´¦ÀíµÄ×Ó¼¯¼ÓÒÔ´¦Àí¡£ÎªËùÓд¦ÀíÈÎÎñ²ÉÈ¡Á÷´¦ÀíΪÏȵķ½·¨»á²úÉúһϵÁÐÓÐȤµÄ¸±×÷Óá£
ÕâÖÖÁ÷´¦ÀíΪÏȵķ½·¨Ò²½Ð×öKappa¼Ü¹¹£¬ÓëÖ®Ïà¶ÔµÄÊǸü¼Ó±»¹ãΪÈËÖªµÄLambda¼Ü¹¹£¨¸Ã¼Ü¹¹ÖÐʹÓÃÅú´¦Àí×÷ΪÖ÷Òª´¦Àí·½·¨£¬Ê¹ÓÃÁ÷×÷Ϊ²¹³ä²¢ÌṩÔçÆÚδ¾ÌáÁ¶µÄ½á¹û£©¡£Kappa¼Ü¹¹Öлá¶ÔÒ»ÇнøÐÐÁ÷´¦Àí£¬½è´Ë¶ÔÄ£ÐͽøÐмò»¯£¬¶øÕâÒ»ÇÐÊÇÔÚ×î½üÁ÷´¦ÀíÒýÇæÖð½¥³ÉÊìºó²Å¿ÉÐеġ£
Á÷´¦ÀíÄ£ÐÍ
FlinkµÄÁ÷´¦ÀíÄ£ÐÍÔÚ´¦Àí´«ÈëÊý¾Ýʱ»á½«Ã¿Ò»ÏîÊÓ×÷ÕæÕýµÄÊý¾ÝÁ÷¡£FlinkÌṩµÄDataStream
API¿ÉÓÃÓÚ´¦ÀíÎÞ¾¡µÄÊý¾ÝÁ÷¡£Flink¿ÉÅäºÏʹÓõĻù±¾×é¼þ°üÀ¨£º
1¡¢Stream£¨Á÷£©ÊÇÖ¸ÔÚϵͳÖÐÁ÷תµÄ£¬ÓÀºã²»±äµÄÎޱ߽çÊý¾Ý¼¯
2¡¢Operator£¨²Ù×÷·½£©ÊÇÖ¸Õë¶ÔÊý¾ÝÁ÷Ö´ÐвÙ×÷ÒÔ²úÉúÆäËûÊý¾ÝÁ÷µÄ¹¦ÄÜ
3¡¢Source£¨Ô´£©ÊÇÖ¸Êý¾ÝÁ÷½øÈëϵͳµÄÈë¿Úµã
4¡¢Sink£¨²Û£©ÊÇÖ¸Êý¾ÝÁ÷À뿪Flinkϵͳºó½øÈëµ½µÄλÖ㬲ۿÉÒÔÊÇÊý¾Ý¿â»òµ½ÆäËûϵͳµÄÁ¬½ÓÆ÷
ΪÁËÔÚ¼ÆËã¹ý³ÌÖÐÓöµ½ÎÊÌâºóÄܹ»»Ö¸´£¬Á÷´¦ÀíÈÎÎñ»áÔÚÔ¤¶¨Ê±¼äµã´´½¨¿ìÕÕ¡£ÎªÁËʵÏÖ״̬´æ´¢£¬Flink¿ÉÅäºÏ¶àÖÖ״̬ºó¶ËϵͳʹÓ㬾ßÌåÈ¡¾öÓÚËùÐèʵÏֵĸ´ÔӶȺͳ־ÃÐÔ¼¶±ð¡£
´ËÍâFlinkµÄÁ÷´¦ÀíÄÜÁ¦»¹¿ÉÒÔÀí½â¡°Ê¼þʱ¼ä¡±ÕâÒ»¸ÅÄÕâÊÇָʼþʵ¼Ê·¢ÉúµÄʱ¼ä£¬´ËÍâ¸Ã¹¦ÄÜ»¹¿ÉÒÔ´¦Àí»á»°¡£ÕâÒâζ×Å¿ÉÒÔͨ¹ýijÖÖÓÐȤµÄ·½Ê½È·±£Ö´ÐÐ˳ÐòºÍ·Ö×é¡£
Åú´¦ÀíÄ£ÐÍ
FlinkµÄÅú´¦ÀíÄ£ÐÍÔںܴó³Ì¶ÈÉϽö½öÊǶÔÁ÷´¦ÀíÄ£Ð͵ÄÀ©Õ¹¡£´ËʱģÐͲ»ÔÙ´Ó³ÖÐøÁ÷ÖжÁÈ¡Êý¾Ý£¬¶øÊǴӳ־ô洢ÖÐÒÔÁ÷µÄÐÎʽ¶ÁÈ¡Óб߽çµÄÊý¾Ý¼¯¡£Flink»á¶ÔÕâЩ´¦ÀíÄ£ÐÍʹÓÃÍêÈ«ÏàͬµÄÔËÐÐʱ¡£
Flink¿ÉÒÔ¶ÔÅú´¦Àí¹¤×÷¸ºÔØÊµÏÖÒ»¶¨µÄÓÅ»¯¡£ÀýÈçÓÉÓÚÅú´¦Àí²Ù×÷¿Éͨ¹ý³Ö¾Ã´æ´¢¼ÓÒÔÖ§³Ö£¬Flink¿ÉÒÔ²»¶ÔÅú´¦Àí¹¤×÷¸ºÔØ´´½¨¿ìÕÕ¡£Êý¾ÝÒÀÈ»¿ÉÒÔ»Ö¸´£¬µ«³£¹æ´¦Àí²Ù×÷¿ÉÒÔÖ´Ðеøü¿ì¡£
ÁíÒ»¸öÓÅ»¯ÊǶÔÅú´¦ÀíÈÎÎñ½øÐзֽ⣬ÕâÑù¼´¿ÉÔÚÐèÒªµÄʱºòµ÷Óò»Í¬½×¶ÎºÍ×é¼þ¡£½è´ËFlink¿ÉÒÔÓ뼯ȺµÄÆäËûÓû§¸üºÃµØ¹²´æ¡£¶ÔÈÎÎñÌáǰ½øÐзÖÎöʹµÃFlink¿ÉÒԲ鿴ÐèÒªÖ´ÐеÄËùÓвÙ×÷¡¢Êý¾Ý¼¯µÄ´óС£¬ÒÔ¼°ÏÂÓÎÐèÒªÖ´ÐеIJÙ×÷²½Ö裬½è´ËʵÏÖ½øÒ»²½µÄÓÅ»¯¡£
ÓÅÊÆºÍ¾ÖÏÞ
FlinkĿǰÊÇ´¦Àí¿ò¼ÜÁìÓòÒ»¸ö¶ÀÌØµÄ¼¼Êõ¡£ËäÈ»SparkÒ²¿ÉÒÔÖ´ÐÐÅú´¦ÀíºÍÁ÷´¦Àí£¬µ«SparkµÄÁ÷´¦Àí²ÉÈ¡µÄ΢Åú¼Ü¹¹Ê¹ÆäÎÞ·¨ÊÊÓÃÓںܶàÓÃÀý¡£FlinkÁ÷´¦ÀíΪÏȵķ½·¨¿ÉÌṩµÍÑÓ³Ù£¬¸ßÍÌÍÂÂÊ£¬½üºõÖðÏî´¦ÀíµÄÄÜÁ¦¡£
FlinkµÄºÜ¶à×é¼þÊÇ×ÔÐйÜÀíµÄ¡£ËäÈ»ÕâÖÖ×ö·¨½ÏΪº±¼û£¬µ«³öÓÚÐÔÄÜ·½ÃæµÄÔÒò£¬¸Ã¼¼Êõ¿É×ÔÐйÜÀíÄڴ棬ÎÞÐèÒÀÀµÔÉúµÄJavaÀ¬»ø»ØÊÕ»úÖÆ¡£ÓëSpark²»Í¬£¬´ý´¦ÀíÊý¾ÝµÄÌØÕ÷·¢Éú±ä»¯ºóFlinkÎÞÐèÊÖ¹¤ÓÅ»¯ºÍµ÷Õû£¬²¢ÇҸü¼ÊõÒ²¿ÉÒÔ×ÔÐд¦ÀíÊý¾Ý·ÖÇøºÍ×Ô¶¯»º´æµÈ²Ù×÷¡£
Flink»áͨ¹ý¶àÖÖ·½Ê½¶Ô¹¤×÷½øÐзÖÐí½ø¶øÓÅ»¯ÈÎÎñ¡£ÕâÖÖ·ÖÎöÔÚ²¿·Ö³Ì¶ÈÉÏÀàËÆÓÚSQL²éѯ¹æ»®Æ÷¶Ô¹ØÏµÐÍÊý¾Ý¿âËù×öµÄÓÅ»¯£¬¿ÉÕë¶ÔÌØ¶¨ÈÎÎñÈ·¶¨×î¸ßЧµÄʵÏÖ·½·¨¡£¸Ã¼¼Êõ»¹Ö§³Ö¶à½×¶Î²¢ÐÐÖ´ÐУ¬Í¬Ê±¿É½«ÊÜ×èÈÎÎñµÄÊý¾Ý¼¯ºÏÔÚÒ»Æð¡£¶ÔÓÚµü´úʽÈÎÎñ£¬³öÓÚÐÔÄÜ·½ÃæµÄ¿¼ÂÇ£¬Flink»á³¢ÊÔÔÚ´æ´¢Êý¾ÝµÄ½ÚµãÉÏÖ´ÐÐÏàÓ¦µÄ¼ÆËãÈÎÎñ¡£´ËÍ⻹¿É½øÐС°ÔöÁ¿µü´ú¡±£¬»ò½ö¶ÔÊý¾ÝÖÐÓи͝µÄ²¿·Ö½øÐеü´ú¡£
ÔÚÓû§¹¤¾ß·½Ã棬FlinkÌṩÁË»ùÓÚWebµÄµ÷¶ÈÊÓͼ£¬½è´Ë¿ÉÇáËɹÜÀíÈÎÎñ²¢²é¿´ÏµÍ³×´Ì¬¡£Óû§Ò²¿ÉÒԲ鿴ÒÑÌá½»ÈÎÎñµÄÓÅ»¯·½°¸£¬½è´ËÁ˽âÈÎÎñ×îÖÕÊÇÈçºÎÔÚ¼¯ÈºÖÐʵÏֵġ£¶ÔÓÚ·ÖÎöÀàÈÎÎñ£¬FlinkÌṩÁËÀàËÆSQLµÄ²éѯ£¬Í¼Ðλ¯´¦Àí£¬ÒÔ¼°»úÆ÷ѧϰ¿â£¬´ËÍ⻹֧³ÖÄÚ´æ¼ÆËã¡£
FlinkÄܺܺõØÓëÆäËû×é¼þÅäºÏʹÓá£Èç¹ûÅäºÏHadoop ¶ÑջʹÓ㬸ü¼Êõ¿ÉÒԺܺõØÈÚÈëÕû¸ö»·¾³£¬ÔÚÈκÎʱºò¶¼Ö»Õ¼ÓñØÒªµÄ×ÊÔ´¡£¸Ã¼¼Êõ¿ÉÇáËɵØÓëYARN¡¢HDFSºÍKafka
¼¯³É¡£ÔÚ¼æÈݰüµÄ°ïÖúÏ£¬Flink»¹¿ÉÒÔÔËÐÐΪÆäËû´¦Àí¿ò¼Ü£¬ÀýÈçHadoopºÍStorm±àдµÄÈÎÎñ¡£
ĿǰFlink×î´óµÄ¾ÖÏÞÖ®Ò»ÔÚÓÚÕâÒÀÈ»ÊÇÒ»¸ö·Ç³£¡°ÄêÓס±µÄÏîÄ¿¡£ÏÖʵ»·¾³ÖиÃÏîÄ¿µÄ´ó¹æÄ£²¿ÊðÉв»ÈçÆäËû´¦Àí¿ò¼ÜÄÇô³£¼û£¬¶ÔÓÚFlinkÔÚËõ·ÅÄÜÁ¦·½ÃæµÄ¾ÖÏÞĿǰҲûÓнÏΪÉîÈëµÄÑо¿¡£Ëæ×Å¿ìËÙ¿ª·¢ÖÜÆÚµÄÍÆ½øºÍ¼æÈݰüµÈ¹¦ÄܵÄÍêÉÆ£¬µ±Ô½À´Ô½¶àµÄ×éÖ¯¿ªÊ¼³¢ÊÔʱ£¬¿ÉÄÜ»á³öÏÖÔ½À´Ô½¶àµÄFlink²¿Êð¡£
×ܽá
FlinkÌṩÁ˵ÍÑÓ³ÙÁ÷´¦Àí£¬Í¬Ê±¿ÉÖ§³Ö´«Í³µÄÅú´¦ÀíÈÎÎñ¡£FlinkÒ²Ðí×îÊʺÏÓм«¸ßÁ÷´¦ÀíÐèÇ󣬲¢ÓÐÉÙÁ¿Åú´¦ÀíÈÎÎñµÄ×éÖ¯¡£¸Ã¼¼Êõ¿É¼æÈÝÔÉúStormºÍHadoop³ÌÐò£¬¿ÉÔÚYARN¹ÜÀíµÄ¼¯ÈºÉÏÔËÐУ¬Òò´Ë¿ÉÒԺܷ½±ãµØ½øÐÐÆÀ¹À¡£¿ìËÙ½øÕ¹µÄ¿ª·¢¹¤×÷ʹÆäÖµµÃ±»´ó¼Ò¹Ø×¢¡£
½áÂÛ
´óÊý¾Ýϵͳ¿ÉʹÓöàÖÖ´¦Àí¼¼Êõ¡£
¶ÔÓÚ½öÐèÒªÅú´¦ÀíµÄ¹¤×÷¸ºÔØ£¬Èç¹û¶Ôʱ¼ä²»Ãô¸Ð£¬±ÈÆäËû½â¾ö·½°¸ÊµÏֳɱ¾¸üµÍµÄHadoop½«»áÊÇÒ»¸öºÃÑ¡Ôñ¡£
¶ÔÓÚ½öÐèÒªÁ÷´¦ÀíµÄ¹¤×÷¸ºÔØ£¬Storm¿ÉÖ§³Ö¸ü¹ã·ºµÄÓïÑÔ²¢ÊµÏÖ¼«µÍÑӳٵĴ¦Àí£¬µ«Ä¬ÈÏÅäÖÿÉÄܲúÉúÖØ¸´½á¹û²¢ÇÒÎÞ·¨±£Ö¤Ë³Ðò¡£SamzaÓëYARNºÍKafka½ôÃܼ¯³É¿ÉÌṩ¸ü´óÁé»îÐÔ£¬¸üÒ×ÓõĶàÍŶÓʹÓã¬ÒÔ¼°¸ü¼òµ¥µÄ¸´ÖƺÍ״̬¹ÜÀí¡£
¶ÔÓÚ»ìºÏÐ͹¤×÷¸ºÔØ£¬Spark¿ÉÌṩ¸ßËÙÅú´¦ÀíºÍ΢Åú´¦ÀíģʽµÄÁ÷´¦Àí¡£¸Ã¼¼ÊõµÄÖ§³Ö¸üÍêÉÆ£¬¾ß±¸¸÷ÖÖ¼¯³É¿âºÍ¹¤¾ß£¬¿ÉʵÏÖÁé»îµÄ¼¯³É¡£FlinkÌṩÁËÕæÕýµÄÁ÷´¦Àí²¢¾ß±¸Åú´¦ÀíÄÜÁ¦£¬Í¨¹ýÉî¶ÈÓÅ»¯¿ÉÔËÐÐÕë¶ÔÆäËûƽ̨±àдµÄÈÎÎñ£¬ÌṩµÍÑӳٵĴ¦Àí£¬µ«Êµ¼ÊÓ¦Ó÷½Ã滹Ϊʱ¹ýÔç¡£
×îÊʺϵĽâ¾ö·½°¸Ö÷Ҫȡ¾öÓÚ´ý´¦ÀíÊý¾ÝµÄ״̬£¬¶Ô´¦ÀíËùÐèʱ¼äµÄÐèÇó£¬ÒÔ¼°Ï£ÍûµÃµ½µÄ½á¹û¡£¾ßÌåÊÇʹÓÃÈ«¹¦Äܽâ¾ö·½°¸»òÖ÷Òª²àÖØÓÚijÖÖÏîÄ¿µÄ½â¾ö·½°¸£¬Õâ¸öÎÊÌâÐèÒªÉ÷ÖØÈ¨ºâ¡£Ëæ×ÅÖð½¥³ÉÊì²¢±»¹ã·º½ÓÊÜ£¬ÔÚÆÀ¹ÀÈκÎгöÏֵĴ´ÐÂÐͽâ¾ö·½°¸Ê±¶¼ÐèÒª¿¼ÂÇÀàËÆµÄÎÊÌâ¡£
|