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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
SparkÔÚGrowingIOÊý¾ÝÎÞÂñµãÈ«Á¿²É¼¯³¡¾°ÏµÄʵ¼ù
 
×÷Õߣº¸¶Æì  À´Ô´£ºInfQ  ·¢²¼ÓÚ£º 2016-9-28
  2912  次浏览      27
 

½ñÌì¸ú´ó¼Ò·ÖÏíµÄÊÇÎÒÃÇGrowingIOÔÚʹÓÃSparkÖеľ­Ñ飬Óö¼ûµÄһЩÎÊÌ⣬ÒÔ¼°ÎÒÃÇÐÞ¸´µÄ·½·¨¡£ÔÚÀ´Ö®Ç°£¬×òÌìÍíÉÏÎÒÔÚ¸úÎÒÃÇ×éͬÊÂÌÖÂÛµÄʱºò£¬ÎÒ˵ÎÒ·¢¸øËûÃǼòҪдµÄÎÒÊÇGrowingIOµÄ´óÊý¾Ý¹¤³Ìʦ£¬ÎÒÃÇ×éµÄ¼¸¸ö¹¤³Ìʦ¶¼·Ç³£µÄ²»Ð¼£¬ËµÏÖÔÚ´óÊý¾ÝÒѾ­Àôó½ÖÁË£¬ËùÒÔËûÃǶÔÍâ×Ô³ÆÊý¾Ý¹¤³Ìʦ£¬²»½Ð´óÊý¾Ý¹¤³Ìʦ¡£

GrowingIOÒµÎñ¹¦Äܱ³ºóµÄ¿¼Ñé

ÊÂʵÉÏ£¬ÎÒÃÇÊÇÒ»¸ö¸Õ³ÉÁ¢Ò»ÄêµÄ¹«Ë¾£¬½ñÄê5Ô·ݸչýÁËÒ»ÖÜËêµÄÉúÈÕ£¬ÊÇÒ»¸ö±ê×¼µÄ´´Òµ¹«Ë¾£¬µ«Êǵ½Ä¿Ç°ÎªÖ¹ÎÒÃÇÿÌì´¦ÀíµÄÊý¾ÝÁ¿ÒѾ­³¬¹ýÁ˼¸°ÙÒÚÌõ£¬ËùÒÔÔÚÎÒ¿´À´ÊÇÒ»¸ö±ê×¼µÄ´óÊý¾Ý¹«Ë¾¡£

ÿÌì´¦ÀíÕâô¶àÊý¾ÝµÄ»°£¬ÎÒÃǵ±È»»áÓöµ½ºÜ¶àÎÊÌ⣬½ñÌìÖ÷ÒªµÄÄÚÈݾÍÊÇÊ×ÏȽéÉÜÎÒÃǹ«Ë¾£¬ÎÒÃǵÄÒµÎñÄ£ÐͺÍÎÒÃÇÓöµ½µÄһЩÎÊÌâ¡£µÚ¶þ²¿·ÖÎÒÃÇ»á¸ù¾ÝÕâЩÎÊÌâ½²Ò»ÏÂÎÒÃÇÊÇÈçºÎ˼¿¼ºÍÑ¡Ôñ´î½¨ÎÒÃÇ×Ô¼ºµÄ´óÊý¾Ýƽ̨¡£×îºóÒ»²¿·Ö£¬µ±ÎÒÃÇÆ½Ì¨´î½¨ÍêÖ®ºó£¬»áÓöµ½Ò»Ð©ÎÊÌ⣬ÎÒÃÇ»áÏë°ì·¨È¥ÓÅ»¯ÔÚSparkʹÓùý³ÌÖеÄÕâЩÎÊÌâ¡£

µÚÒ»²¿·Ö¾ÍÊÇÎÒÃǹ«Ë¾½éÉÜ£¬ÎÒÃÇÊÇÈ¥Äê¸Õ³ÉÁ¢µÄÒ»¼Ò¹«Ë¾£¬ÊÇ×öÊý¾Ý·ÖÎöµÄ£¬ÎÒÃǸú֮ǰµÄÊý¾Ý¹«Ë¾²»Ò»Ñù¾ÍÊÇÎÒÃÇÌṩµÄÊÇÈ«Á¿²É¼¯µÄÊý¾Ý£¬²»ÐèÒªÂñµã£¬Ö»Òª½ÓÈëÎÒÃÇSDKÖ®ºó£¬Äã¾ÍÁ¢¿ÌÄܹ»»ñµÃÄãÏëÒªµÄÊý¾Ý·ÖÎöµÄ½á¹û¡£ÎÒÃÇÏÖÔÚÌṩiOS¡¢°²×¿¡¢Web¡¢H5µÄSDK¡£

ÎÒÃDzÉÓõÄÊÇÈ«Á¿²É¼¯µÄ·½°¸£¬ËùÒÔ²»ÐèÒªÌáǰÂñµã£¬¾ÍÊÇ˵ËùÓеÄä¯ÀÀ¡¢·ÃÎÊ¡¢µã»÷ËùÓеÄÐÐΪ¶¼»á±»²É¼¯µ½£¬Õâ¸öÊý¾ÝÁ¿ÊǷdz£´óµÄ£¬¶øÇÒÎÒÃÇÌṩ°´ÐèɸѡÊý¾ÝµÄ¹¦ÄÜ£¬Èç¹ûÄãÏëÒªÖªµÀijһ¸ö°´¼üµÄµã»÷Á¿£¬ÎÒÃÇ»áÁ¢¿Ì°ïÄãɸѡ³öÀ´¡£»¹ÓÐÎÒÃÇÖ§³ÖËæÊ±»ØËÝÈÎÒâÒ»¸öʼþ¡£ÎÒÃÇÒ²Ö§³Ö²»Í¬µÄͼ±í¹¦ÄÜ¡¢²»Í¬µÄά¶È¡¢Ï໥µÄÍÏ×§ºÍ×éºÏ£¬ÎÒÃÇÌṩ40¶àÖÖ²»Í¬µÄά¶È¡£

ÌṩÕâô¶à¹¦Äܵϰ¶ÔÎÒÃÇÆ½Ì¨µÄѹÁ¦ÊǷdz£´óµÄ¡£Ê×ÏȾÍÊÇÎÒÃǵÄÊý¾Ý´¦ÀíѹÁ¦·Ç³£´ó£¬ÎÒÃÇÿÌìÒª´¦ÀíºÃ¼¸°ÙÒÚÌõÊý¾Ý£¬ÎÒÃǵÄÊý¾ÝÁ¿±ä»¯Ò²·Ç³£¿ì£¬ÓÐЩӦÓÿÉÄÜÖÜÎåÊǸ߷åÆÚ£¬ÓÐЩӦÓÃÊÇÖÜÄ©µÄ¸ß·åÆÚ£¬ËùÒÔÎÒÃǵÄÊý¾ÝÓÐÒ»¸ö²¨·åºÍ²¨¹ÈµÄ¸ÅÄî¡£ÎÒÃÇÖ§³ÖÈÎÒâÔªËØµÄʵʱ²éѯ£¬ÒÔ¼°Ö§³Ö¶àά¶ÈµÄ×éºÏ£¬ËùÒÔÐèÒªÕû¸öÊý¾Ýƽ̨ÓкÜÇ¿µÄÉìËõÐÔ¡£ÎÒÃÇ»¹ÒªÖ§³Öº£Á¿Êý¾ÝµÄ¸ßËÙË÷Òý£¬²»ÄÜÈÃÓû§µÈ´ýʱ¼ä¹ý³¤£¬Í¬Ê±ÎÒÃÇÒªÖ§³Ö¶àάÊý¾ÝµÄʵʱ²éѯ¡£

GrowingIOÊý¾Ýƽ̨´î½¨

ΪÁËÖ§³ÖÕâô¶à¹¦ÄÜ£¬ÎÒÃÇÔõô´î½¨ÎÒÃǵÄÊý¾Ýƽ̨µÄÄØ£¿

ÏÈ¿´Ò»ÏÂÎÒÃÇÊý¾Ý´¦ÀíµÄÖ÷Òª²½Ö裬Ê×ÏÈÊÇÎÒÃÇSDK²É¼¯Êý¾Ý£¬²É¼¯Êý¾ÝÖ®ºó£¬Ê×ÏȰÑËüÈÓµ½ÎÒÃǵÄÏûÏ¢¶ÓÁÐÀï×öÒ»¸ö»ù´¡µÄ³Ö¾Ã»¯£¬Ö®ºóÎÒÃÇ»áÓÐÁ½²¿·Ö£¬Ò»²¿·ÖÊÇʵʱͳ¼Æ£¬Ò»²¿·ÖÊÇÀëÏßͳ¼Æ£¬ÕâÁ½²¿·Öͳ¼ÆÍêÖ®ºó»á°Ñͳ¼Æ½á¹û´æÏÂÀ´£¬È»ºóÌṩ¸øÎÒÃǵIJéѯ·þÎñ£¬×îºóÊÇÎÒÃÇÍⲿչʾ½çÃæ¡£ÎÒÃǵÄÊý¾Ýƽ̨Ö÷Òª»ùÓÚÖмäµÄËĸöÂÌÉ«µÄ²¿·Ö¡£

¹ØÓÚÒªÇ󣬶ÔÏûÏ¢¶ÓÁÐÀ´Ëµ¿Ï¶¨ÊÇÍÌÍÂÁ¿Ò»¶¨Òª´ó£¬Òª·Ç³£ºÃµÄÀ©Õ¹ÐÔ£¬Èç¹ûÓÐÒ»¸öÏûÏ¢µÄ²¨·åµÄ»°ÒªËæÊ±Äܹ»À©Õ¹£¬ÒòΪËùÓеĶ«Î÷¶¼ÊÇ·Ö²¼Ê½µÄ£¬ËùÒÔÒª±£Ö¤½Úµã¹ÊÕϲ»»áÓ°ÏìÎÒÃÇÕý³£µÄÒµÎñ¡£

ÎÒÃǵÄʵʱ¼ÆËãĿǰ²ÉÓõÄÊÇ·ÖÖÓ¼¶±ðµÄʵʱ£¬Ã»Óо«È·µ½Ãë¼¶£¬ÀëÏß¼ÆËãÐèÒª¼ÆËãËٶȷdz£¿ì£¬ÕâÁ½²¿·ÖÎÒÃǵ±³õÔÚ¿¼ÂǵÄʱºò¾ÍÑ¡ÓÃÁËSpark£¬ÒòΪSpark±¾Éí¼ÈÖ§³Öʵʱ£¬ÓÖÖ§³ÖÀëÏߣ¬¶øÇÒÏà¶ÔÓÚÆäËûµÄʵʱµÄ·½°¸À´Ëµ£¬ÏñFlink»òÕßÊÇStormºÍSamzaÀ´Ëµ£¬ÎÒÃDz»ÐèÒªµ½Ãë¼¶µÄÕâÖÖʵʱ£¬ÎÒÃÇÐèÒªµÄÊÇÍÌÍÂÁ¿£¬ËùÒÔÎÒÃÇÑ¡ÔñSpark¡£ÊµÊ±²¿·ÖÓõÄÊÇSpark streaming£¬ÀëÏß²¿·ÖÓõÄÊÇSpark offlineµÄ·½°¸¡£

²éѯ·½°¸ÒòΪÎÒÃÇÒªÖ§³Ö¶à¸öά¶ÈµÄ×éºÏÅÅÐò£¬ËùÒÔÎÒÃÇÏ£ÍûÖ§³Ösql£¬ÕâÑùµÄ»°¸÷ÖÖ×éºÏÅÅÐò¾Í¿ÉÒÔת»¯³ÉsqlµÄgroupºÍorder²Ù×÷¡£

ÏûÏ¢¶ÓÁÐ -- Kafka

ÏûÏ¢¶ÓÁÐÎÒÃÇÑ¡ÔñµÄÊÇKafka£¬ÒòΪÔÚÎÒÃÇ¿´À´£¬KafkaĿǰÊÇ×î³ÉÊìµÄ·Ö²¼Ê½ÏûÏ¢¶ÓÁз½°¸£¬¶øÇÒËüµÄÐÔÄÜ¡¢À©Õ¹ÐÔÒ²·Ç³£ºÃ£¬¶øÇÒÖ§³ÖÈÝ´í·½°¸£¬Äã¿ÉÒÔͨ¹ýÉèÖÃÈßÓàÀ´±£Ö¤Êý¾ÝµÄÍêÕûÐÔ¡£ KafkaĿǰµÃµ½ÁËËùÓÐÖ÷Á÷Á÷ʽ¼ÆËã¿ò¼ÜµÄÖ§³Ö£¬ÏñSpark, Flink, Storm, SamzaµÈµÈ£»ÁíÍâÒ»¸ö¾ÍÊÇÎÒÃǹ«Ë¾µÄ¼¸¸ö´´Ê¼È˶¼À´×ÔÓÚLinkedIn£¬ËûÃÇ֮ǰÔÚLinkedInµÄʱºò¾ÍÒѾ­ÓùýKafka£¬¶ÔKafka·Ç³£Ê죬ËùÒÔÎÒÃÇÑ¡ÔñÁËKafka¡£

ÏûϢʱÐò -- HBase

µ«Ñ¡¶¨KafkaÖ®ºóÎÒÃÇ·¢ÏÖÁËÒ»¸öÎÊÌâ¾ÍÊÇÏûϢʱÐòµÄÎÊÌâ¡£Ê×ÏÈÎÒÃǵÄÊý¾Ý²É¼¯ ³ÌÖУ¬ÒòΪ²»Í¬µÄÓû§ÍøÂç´ø¿í²»Ò»Ñù£¬Êý¾Ý¿ÉÄÜÊÇÓÐÑӳٵģ¬Ííµ½µÄÏûÏ¢·´¶ø¿ÉÄܸüÔç·¢Éú£¬¶øÇÒKafka²»Í¬µÄpartitionÖ®¼äÊDz»±£Ö¤Ê±ÐòµÄ¡£

µ«ÊÇÎÒÃÇËùÓеÄÀëÏßͳ¼Æ³ÌÐò¶¼ÊÇÐèÒª°´Ê±¼äͳ¼ÆµÄ£¬ËùÒÔÎÒÃǾÍÐèÒªÒ»¸öÖ§³ÖʱÐòµÄÊý¾Ý¿â°ïÎÒÃǰÑÊý¾ÝÅźÃÐò£¬ÕâÀïÎÒÃÇÑ¡ÁËHBase¡£ÎÒÃÇÓÃÏûÏ¢²úÉúµÄʱ¼ä¼ÓÉÏÎÒÃÇÉú³ÉÏûÏ¢µÄID×ö³ÉËüΨһµÄrow key£¬½øÐÐÅÅÐòºÍË÷Òý¡£

SQL On HBase -- Apache Phoenix

¶ÔÓÚsqlµÄ·½°¸À´Ëµ£¬ÎÒÃÇÑ¡ÔñµÄÊÇPhoenix¡£Ñ¡PhoenixÊÇÒòΪÎÒÃÇ¿¼ÂÇÁËĿǰ¼¸¸öSQL On HBaseµÄ·½°¸£¬ÎÒÃÇ·¢ÏÖPhoenixµÄЧÂʷdz£ºÃ£¬ÊÇÒòΪËü³ä·ÖµÄÀûÓÃÁËHBase coprocessorµÄÌØÐÔ£¬ÔÚserver¶Ë½øÐÐÁË´óÁ¿µÄ¼ÆË㣬ËùÒÔ´óÁ¿¼õÇáÁËclientµÄÊý¾ÝѹÁ¦»¹ÓмÆËãѹÁ¦¡£

»¹ÓоÍÊÇËüÖ§³ÖHBaseµÄColumn Family¸ÅÄ±ÈÈç˵ÎÒÃÇÒªÖ§³Ö40¸öγ¶ÈµÄʱºòÎÒÃÇ»áÓÐÒ»ÕÅ´ó¿í±í£¬Èç¹ûÎÒÃǰÑËùÓеÄÁж¼ÉèÖÃÒ»¸öÁÐ×åµÄ»°£¬ÔÚ²éѯÈÎÒâÒ»¸öÁеÄʱºò¶¼ÐèÒª°Ñ40ÁеÄÊý¾Ý¶¼¶Á³öÀ´£¬ÕâÑùÊǵò»³¥Ê§µÄ£¬ËùÒÔPhoenixÖ§³ÖColumn FamilyµÄ»°£¬ÎÒÃǾͿÉÒ԰Ѳ»Í¬µÄÁиù¾ÝËüÃǵÄÏà¹ØÐԷֳɼ¸¸öÁÐ×壬²éѯµÄʱºò¿ÉÄÜÖ»»áÃüÖÐÒ»¸öµ½Á½¸öÁÐ×壬ÕâÑù´ó´ó¼õÉÙÁ˶ÁÈ¡Á¿¡£

Phoenix»¹Ö§³ÖSparkµÄDataSource API£¬Ö§³ÖÁмôÖ¦ºÍÐйýÂ˵ŦÄÜ£¬¶øÇÒÖ§³ÖÊý¾ÝдÈ롣ʲôÊÇSparkµÄDataSource APIÄØ£¬ SparkÔÚ1.2µÄʱºòÌṩÁËDataSource API£¬ËüÖ÷ÒªÊǸøSpark¿ò¼ÜÌṩһÖÖ¿ìËÙ¶ÁÈ¡Íâ½çÊý¾ÝµÄÄÜÁ¦£¬Õâ¸öAPI¿ÉÒÔ·½±ãµÄ°Ñ²»Í¬µÄÊý¾Ý¸ñʽͨ¹ýDataSource API×¢²á³ÉSparkµÄ±í£¬È»ºóͨ¹ýSpark SQLÖ±½Ó¶ÁÈ¡¡£Ëü¿ÉÒÔ³ä·ÖÀûÓÃSpark·Ö²¼Ê½µÄÓÅµã½øÐв¢·¢¶ÁÈ¡£¬¶øÇÒSpark±¾ÉíÓÐÒ»¸öºÜºÃµÄÓÅ»¯ÒýÇæ£¬Äܹ»¼«´óµÄ¼Ó¿ìSpark SQLµÄÖ´ÐС£

ÒòΪSpark×î½ü·Ç³£µÄ»ð£¬ËùÒÔËüµÄÉçÇø×ÊÔ´·Ç³£µÄ¶à£¬»ù±¾ÉÏËùÓÐÖ÷Á÷µÄ¿ò¼Ü£¬ÏñÎÒÃdz£¼ûµÄPhoenix£¬Cassandra, MongoDB¶¼ÓÐSpark DataSourceÏà¹ØµÄʵÏÖ¡£»¹ÓÐÒ»¸ö¾ÍÊÇËüÌṩÁËÒ»¸öͳһµÄÊý¾ÝÀàÐÍ£¬°ÑËùÓеÄÍⲿ±í¶¼Í³Ò»×ª»¯³ÉSparkµÄÊý¾ÝÀàÐÍ£¬ÕâÑùµÄ»°²»Í¬µÄÍⲿ±íÄܹ»Ï໥µÄ¹ØÁªºÍ²Ù×÷¡£

ÔÚ¾­¹ýÉÏÊöµÄ˼¿¼Ö®ºó£¬ÎÒÃÇÑ¡ÔñÁËÕâÑùµÄÒ»¸öÊý¾Ý¿ò¼Ü¡£

Ê×ÏÈÎÒÃÇ×îÏÂÃæÊÇÈý¸öSDK£¬JS¡¢°²×¿ºÍiOS£¬²É¼¯ÍêÊý¾ÝÖ®ºó»á·¢µ½ÎÒÃǵĸºÔؾùºâÆ÷£¬ÎÒÃǵĸºÔؾùºâÆ÷ÓõÄÊÇAWS£¬Ëü»á×Ô¶¯°ÑÎÒÃÇÕâЩÊý¾Ý·¢µ½ÎÒÃǵÄserver¶Ë£¬serverÔÚÊÕ¼¯ÍêÊý¾ÝÖ®ºó»á½øÐÐÒ»¸ö³õ²½µÄÇåÏ´£¬°ÑÄÇЩ²»¹æÂɵÄÊý¾Ý¸øÇåÏ´µô£¬È»ºóÔÙ°ÑÄÇЩÊý¾Ý·¢µ½KafkaÀºóÃæ¾Í½øÈëµ½ÎÒÃǵÄʵʱºÍÀëÏß¹ý³Ì¡£

×îÖÕÎÒÃǵÄÊý¾Ý»áͳ¼Æµ½HBaseÀïÃæ£¬¶ÔÍⱩ¶µÄÊÇÒ»¸ösqlµÄ½Ó¿Ú£¬¿ÉÒÔͨ¹ý¸÷ÖÖsqlµÄ×éºÏÈ¥²éѯËùÐèÒªµÄͳ¼ÆÊý¾Ý¡£Ä¿Ç°ÎÒÃÇÓõÄÖ÷Òª°æ±¾£¬SparkÓõϹÊÇ1.5.1£¬ÎÒÃÇ×Ô¼º¸ù¾ÝÎÒÃÇ×Ô¼ºµÄÒµÎñÐèÇó´òÁËһЩ¶¨ÖƵÄpatch£¬HadoopÓõϹÊÇ2.5.2£¬HBaseÊÇ0.98£¬PhoenixÊÇ4.7.0£¬ÎÒÃÇÐÞ¸´ÁËһЩСµÄbug£¬ÒÔ¼°¼ÓÁËһЩ×Ô¼ºµÄÌØÐÔ£¬´òÁË×Ô¼ºµÄpatch¡£

Sparkʵ¼ùÓëÓÅ»¯

µÚÈý²¿·Ö½²Ò»ÏÂÎÒÃÇÔÚʹÓÃÕâ¸öÊý¾Ýƽ̨µÄ¹ý³ÌÖеÄһЩʵ¼ùºÍÓÅ»¯µÄµØ·½£¬ÒòΪ´î½¨ÍêÆ½Ì¨Ö®ºóÕâÖÖ¶«Î÷²»ÊÇÒ»õí¶ø¾ÍµÄ£¬·Ö²¼Ê½µÄ·½°¸»áÓкܶàµÄÎÊÌ⣬ÏÖÔÚ¿ªÔ´µÄ¶«Î÷½ø»¯µÄºÜ¿ì£¬ÐµĶ«Î÷³öÀ´Ö®ºó¿ÉÄÜ»áÓкܶàbug£¬°üÀ¨ÎÒÃǵ±Ê±ÔÚÓÃDataFrame APIµÄʱºò·¢ÏÖÁËÖØ¸´¼ÆËã¡¢°üÀ¨ÄÚ´æÐ¹Â¶µÈbug£¬ËùÒÔ¾ÍÐèÒªºÜºÃµÄÓÅ»¯ÄÜÁ¦£¬¼°Ê±µÄ·¢ÏÖÕâЩÎÊÌâ²¢ÓÅ»¯Ëü¡£

ÎÒÃÇĿǰʵʱ´¦ÀíµÄÁ÷³ÌÊÇÕâÑùµÄ¡£

´ÓKafkaÖ®ºó£¬·Ö³ÉÁ½¿é£¬Ò»¿éÊÇÃë¼¶µÄSpark Streaming£¬´ó¸ÅÔÚ10Ãë-20ÃëµÄÒ»¸öbatch£¬È»ºó°ÑÕâЩÊý¾Ý½øÐгõ²½µÄÇåÏ´£¬°ÑÒ»Ð©ÖØÒªµÄÊý¾Ý´æµ½HBaseÀïÃæ£¬È»ºóÌá½»SparkÈÎÎñ×ö¼ÆËã¡£

»¹ÓÐÒ»²¿·Ö»á°ÑÈ«Á¿µÄÊý¾Ý´æµ½HDFSÀµ«ÊÇ´æHDFS»áÓÐÒ»¸öÎÊÌ⣬¾ÍÊÇÈç¹ûÄãbatchʱ¼ä¹ý¶ÌµÄ»°»á²úÉú´óÁ¿µÄËéÎļþ£¬ÎÒÃǵÄÏë·¨¾ÍÊǰÑSpark StreamingµÄbatchʱ¼äÉ賤£¬10·ÖÖÓÒ»¸öbatch£¬ÕâÑùµÄ»°»á´óÁ¿¼õÉÙÎÒÃÇдÈëHDFSµÄÎļþÊýÁ¿¡£

ͬʱÔÚSpark StreamingÀïÃæ£¬ÎÒÃǽèÖúÁËRedisºÍPostgresµÄһЩ´æ´¢µÄ·½°¸¡£±ÈÈç˵ÔÚRedisÀÎÒÃÇ»á½øÐÐһЩ¼òµ¥µÄ¼ÆÊý£¬»òÕß´æÒ»Ð©ÏàÓ¦¹ØÁªµÄÐÅÏ¢¡£È»ºóÔÚPostgresÀÎÒÃÇ´æÁË´óÁ¿Óû§×Ô¶¨ÒåµÄ¹æÔòºÍÊôÐÔ£¬Spark Streaming´¦Àí¹ý³ÌÖлáÈ¥¶ÁRedis»òÕßÊǹØÁª¶ÔÓ¦µÄPostgres¡£

ÎÒÃÇÀëÏßÈÎÎñʹÓÃÎÒÃÇ×Ô¼º¶¨ÖƵÄSpark Server£¬ÎÒÃÇдºÃ¶ÔÓ¦µÄÒµÎñÂß¼­£¬È»ºóÌá½»ÈÎÎñ¸øSpark Server¡£Spark ServerÖ´ÐÐÕâЩÈÎÎñ£¬´ÓHBaseºÍHive±íÀïͨ¹ýDataSource API¶ÁÈëһЩÊý¾Ý£¬È»ºó½øÐмÆË㣬ÇåÏ´ºÍÕûÀíÖ®ºó£¬ÔÙͨ¹ýDataSource API´æµ½HBaseÀÓÃÀ´²éѯµÄ¡£

ÓÅÏÈʹÓÃSpark SQL & DataFrame

ÎÒÃǵÄÊý¾ÝÂß¼­Óкܶ࣬ËùÒÔ·ÖÁ˲»Í¬µÄÈÎÎñ£¬Ã¿¸öÈÎÎñ»á¶¨Òåµ¥¶ÀµÄJob£¬»á¶¨Ê±µÄÈ¥Ìá½»Job¡£ÔÚÎÒÃÇʹÓÃSparkµÄʱºò£¬ÓÅÏÈʹÓÃÁËDataFrameµÄAPIºÍSparkSQL£¬ÕâÒ²ÊÇеÄSparkʹÓõķ½·¨£¬ÎªÊ²Ã´ÄØ£¿

ÒòΪÊ×ÏÈSQLµÄ±í´ï¸ü¼Ó¼ò½à£¬ÒòΪSQLÊÇÒ»¸ö±È½ÏͨÓõļÆËã·½°¸£¬¸÷ÖÖ±í´ïºÜÇåÎú£¬ÕâÖÖ¶«Î÷Ëü±í´ïÄÜÁ¦Ô¶Ô¶±ÈRDDÒª¼ò½à¡£Ò²¸üÈÝÒ×Àí½â£¬¸üÈÝÒ×Àí½â´øÀ´µÄºÃ´¦¾ÍÊǸüÈÝÒ×ά»¤¡£

µ±È»DataFrameºÍSQL±ÈRDDµÄÁíÒ»¸öºÃ´¦¾ÍÊÇ£¬RDD¶ÔÓÚSparkÍêÈ«ÊÇÒ»¸öºÚºÐ£¬ËùÒÔSpark²¢²»ÖªµÀÈçºÎÈ¥ÓÅ»¯Õâ¸öRDDµÄ¶ÁÈ¡ºÍ´æ´¢£¬µ«DataFrame±¾Éí¾Í°üº¬ÁËÒ»¸öschema£¬ËüÃèÊöÁËËüÿ¸öÁж¼ÊÇʲôÑùµÄÊý¾ÝÀàÐÍ¡£ÕâÑùµÄ»°SparkÔÚÖ´ÐеÄʱºò¾ÍÄܹ»³ä·ÖµÄÀí½âËüÐèÒª¶ÁÄÄЩÊý¾Ý£¬ÕâЩÊý¾ÝÊÇʲôÀàÐÍ£¬ÔÚºóÐøµÄʱºò£¬Ëü¾Í»áÈ¥ÓÅ»¯ËüµÄ´æ´¢£¬´Ó¶ø´ó´óµÄ¼õÉÙËüÔÚÄÚ´æÀïµÄ´æ´¢¿Õ¼ä¡£

ÁíÍ⣬Spark Dataframe, SQL»¹ÓÐÏÖÔÚ¸Õ³öÀ´µÄDataSet¹²ÏíÒ»Ì×ÓÅ»¯ÒýÇæ£¬Ëü»áÈ¥ÓÅ»¯Ò»Ð©Ã»±ØÒªµÄ²Ù×÷ºÍÊý¾ÝµÄ¶ÁÈ¡£¬°üÀ¨Ò»Ð©ÈßÓàµÄ¼ÆËãµÈµÈ£¬ÕâÒ²»á´ó´ó¼Ó¿ìÖ´ÐÐËÙ¶È¡£

»¹ÓÐÒ»µã¾ÍÊÇRDD¡¢DataFrameºÍSQLËüÃÇÖ®¼ä¿ÉÒÔÏ໥ת»¯£¬±ÈÈçÎÒÃÇ¿ÉÒÔ°ÑDataframe×¢²á³ÉÒ»¸öÁÙʱ±í£¬ÕâÑù¾Í¿ÉÒÔÓÃSQLÀ´½øÐвÙ×÷£¬Í¬Ê±ÎÒÃÇ¿ÉÒÔ°ÑDataFrame map³ÉÒ»¸öRDD£¬ÕâÑùµÄ»°¾Í¿ÉÒÔÖØ»Øµ½Ò»¸öRDDµÄ²Ù×÷£¬DataframeºÍSQLËäÈ»±í´ïÄÜÁ¦ºÜÇ¿£¬µ«ÊÇÓÐʱºò»áÓöµ½Ò»Ð©ÎÞ·¨±í´ïµÄÒµÎñÂß¼­£¬ÕâʱÎÒÃǾÍÐèÒª´ÓSQLÀïתµ½DataFrameÀÔÙÖØÐÂת»ØRDDµÄÄ£ÐÍÀ´Ö´ÐÐÎÒÃÇÕâЩ±È½Ï¸´ÔӵļÆË㣬µ±Ö´ÐÐÍêÖ®ºóÎÒÃǰÑRDDµÄÕⲿ·ÖÊý¾ÝÖØÐÂ×¢²á³ÉÁÙʱ±í£¬×ª»ØSQLÄ£ÐÍ£¬ÕâÑùÄÜ´ó´óµÄÌá¸ßÎÒÃǵĿª·¢ËÙ¶È£¬ÒòΪ¿ÉÒÔÔÚÈý¸öÄ£ÐÍÖ®¼äÏ໥ת»¯¡£

Spark ServerÉè¼Æ

ÏÂÃæ½²Ò»ÏÂSpark ServerÔÚÉè¼Æ¹ý³ÌÖеÄһЩ˼¿¼¡£ÎÒÃǵÄSpark ServerÉè¼ÆµÄÊ×ÒªµÄÄ¿±ê¾ÍÊǹ²ÏíÒ»¸öSpark Context£¬´Ó¶ø¹²ÏíSpark×ÊÔ´¡£

Ö®ËùÒÔÕâÑùÊÇÒòΪÈç¹ûÓÃSpark SubmitÀ´Ìá½»ÈÎÎñµÄ»°£¬ÎÒÃÇ»áÓöµ½Ò»¸öÎÊÌ⣬¾ÍÊÇÈÎÎñÈç¹ûÖ´ÐеÄʱ¼ä±È½Ï³¤£¬Ëü¿ÉÄÜ»áÓÐÒ»Á½¸ötaskÖ´Ðеķdz£Âý£¬µ¼ÖÂÕû¸ö×ÊÔ´ÎÞ·¨ÊÍ·Å¡£±ÈÈçÄãÉêÇëÁË100ºË£¬µ«Äã¿ÉÄÜ98¸öÈÎÎñ¶¼Ö´ÐÐÍêÁË£¬Ê£ÏÂ2¸öÈÎÎñ¿¨ÔÚÄǸöµØ·½»áµ¼ÖÂ100¸öºË¶¼ÎÞ·¨ÊÍ·Å¡£

»¹ÓÐÒ»¸ö¾ÍÊÇÎÒÃÇÏÖÔÚ»áÅܺܶàÁÙʱµÄСÈÎÎñ £¬Ã¿¸öСÈÎÎñʱ¼ä¿ÉÄÜÖ»ÓÐÊ®¼¸Ã룬Èç¹ûµ¥¶ÀΪÕâЩСÈÎÎñÈ¥ÉêÇë×ÊÔ´µÄ»°£¬¿ÉÄÜÉêÇë×ÊÔ´¶¼µÃ30Ãë»òÕß1·ÖÖÓ¡£

»¹ÓÐÒ»¸ö¾ÍÊÇûÓз¨ÕýÈ·µÄÔ¤¹ÀÎÒÃÇËùÐèÒªµÄ×ÊÔ´£¬ÒòΪÎÒÃDz»Í¬µÄÈÎÎñÓв»Í¬µÄÈÎÎñÄ£ÐÍ£¬¶ÁµÄÊý¾ÝÁ¿ÊÇÓвî¾àµÄ£¬ËùÒÔ¼ÆËãµÄ³É±¾Ò²ÊDz»Ò»ÑùµÄ¡£ÎÒÃÇÊý¾ÝÁ¿ÊÇÓв¨·å²¨¹ÈµÄ£¬ËùÒÔ¸ü¼ÓÄÑÒÔÔ¤¹Àµ½Ä³Ò»¸öʱ¼äµã£¬Ã¿¸öÈÎÎñÐèÒª¶àÉÙ¸öºË¡£

ËùÒÔÔÚÕâ¸öÇé¿öÏ£¬ÎÒÃǹ²ÏíÒ»¸öSpark Context¾Í¿ÉÒÔ¸øÕâ¸öSparkÉêÇë¸ü¶àµÄ×ÊÔ´£¬ÕâÑùÆäËûµÄÈËÀ´¹²ÏíÕâ¸ö×ÊÔ´¡£

ͬʱ£¬ÔÚʹÓÃͬһ¸öHive ContextµÄʱºò»áÓöµ½Ò»¸öÎÊÌ⣬Ïñ³¤Ê±¼äÔËÐÐÈÎÎñºÍһЩ±È½Ï¿ìËÙµÄÈÎÎñ£¬Ëü¿ÉÄÜËùÐèÒªµÄÅäÖÃÊDz»Ò»ÑùµÄ£¬±ÈÈç˵ÄãÒª¶ÁÒ»¸ö100GµÄÈÎÎñ£¬¿ÉÄÜËüÐèÒªµÄshuffleÊýÁ¿ÊÇ1000£¬µ«±ÈÈç˵ֻ1GµÄÊý¾Ý£¬¿ÉÄÜ10¸öshuffle¾Í¹»ÁË£¬ËùÒÔÎÒÃÇÖ§³ÖʹÓò»Í¬µÄHive Context£¬¸ø²»Í¬µÄContextÉèÖò»Í¬µÄ²ÎÊý£¬ÕâÑùµÄ»°ÄãÔÚÔËÐеÄʱºò¿ÉÒÔ×Ô¼ºÖ¸¶¨ÄãÐèÒªÄĸöHive Context¡£

ͬʱÎÒÃÇʹÓÃFair SchedulerÄܹ»±£Ö¤²»Í¬µÄÈÎÎñͬʱ¹²Ïí×ÊÔ´¡£

ÎÒÃǸøÈÎÎñÉ趨ÁËÒ»¸öÓÅÏȼ¶£¬Ã¿¸öÈÎÎñÌá½»µÄʱºòÖ¸¶¨×Ô¼ºµÄÓÅÏȼ¶£¬ÎÒÃǸù¾ÝÈÎÎñµÄÓÅÏȼ¶ÓëËü´´½¨µÄʱ¼äÀ´Ñ¡ÔñÖ´ÐÐ˳Ðò£¬ÎÒÃÇͬÑùÖ§³Ö·Ç³£ÖØÒªµÄÈÎÎñÁÙʱ²å¶ÓµÄ·½°¸£¬¾ÍÊÇ˵ÔÚ´´½¨ÍêÖ®ºóÁ¢¿ÌÖ´ÐС£

ΪÁËÖ§³ÖÉÏÃæÕâ¸öÓÅÏȼ¶ºÍÈÎÎñ²å¶ÓµÄÕâ¸ö·½°¸£¬ÎÒÃÇʹÓÃÁËPostgres×÷ΪÈÎÎñµÄ³Ö¾Ã»¯¡£

ËüÓкܶàºÃ´¦£¬±ÈÈç˵֧³ÖÖØÅÜ£¬Èç¹ûÈÎÎñÓÐÎÊÌ⣬×îÖÕÅÜÏÂÀ´µÄÊý×ÖÊDz»¶ÔµÄ£¬¾Í¿ÉÒÔÔÚPostgresÀï°ÑÕâ¸öÈÎÎñÖØÐÂÌύһϡ£

ͬʱÔÚÈÎÎñÖ´ÐеÄʱºò£¬Èç¹ûÓöµ½ÁËExceptionÎÒÃÇ»á°Ñ¶ÔÓ¦µÄÏûÏ¢ºÍ¶ÑÕ»ÐÅÏ¢´æµ½Postgres±íÀÕâÑù¾Í¿ÉÒÔÖªµÀÿ¸öÈÎÎñʧ°ÜµÄÔ­Òò£¬Ê²Ã´Ê±ºòʧ°ÜµÄ£¬ÔÚÄÄÒ»ÐÐʧ°ÜµÄ¡£

ÒòΪÊÇ·ÅÔÚPostgresÀËùÒÔÎÒÃÇÖ§³ÖÊÖ¶¯ÐÞ¸ÄÓÅÏȼ¶£¬ÕâÑùµÄ»°Óöµ½Ò»Ð©½ô¼±µÄÇé¿öÎÒÃÇ¿ÉÒÔÓÅÏÈÆô¶¯Ò»Ð©±È½Ï½ô¼±µÄÈÎÎñ¡£ÎÒÃÇÏÖÔڻᶨʱµÄͳ¼ÆÒ»ÏÂÎÒÃÇÿ¸öÈÎÎñ´´½¨Ê±¼ä¡¢±»µ÷Æðʱ¼ä£¬ÒÔ¼°×îºóÍê³ÉµÄʱ¼ä£¬À´ÕÒµ½Ã¿¸öÈÎÎñÖ´ÐÐÆ½¾ùʱ¼äÒÔ¼°²»Í¬ÈÎÎñµÄÆ¿¾±£¬´Ó¶øÕÒµ½ÓÅ»¯µã¡£

ÎÒÃǵÄÈÎÎñÂß¼­ÊÇͬÑùÒ»¸öÈÎÎñ£¬¿ÉÄÜÊǰ´Ê±¼äÀ´ÅÜ£¬±ÈÈç˵һ¸öСʱͳ¼ÆÒ»´Î£¬ÕâÑùµÄ»°Í¬Ò»¸öÈÎÎñÊÇÓÐʱ¼ä¸ÅÄîµÄ¡£ÎªÁËÖ§³ÖÕâÖÖʱ¼ä¸ÅÄÎÒÃǾÍÐèÒªÖ§³ÖÈÎÎñÒÔµ¥ÀýģʽÔËÐУ¬ÒòΪ²»Í¬µÄÈÎÎñ²»Í¬Ê±¼ä¶ÎËüµÄ»º´æ±í»¹ÓÐÊä³ö·¾¶»áÏ໥ӰÏìµÄ£¬ÒÔ¼°ÈÎÎñÖ®¼ä¿ÉÄÜÊÇÓÐÒÀÀµµÄ£¬±ÈÈç˵¾Åµãµ½Ê®µã£¬¿ÉÄÜÒÀÀµÓڰ˵㵽¾ÅµãµÄ½á¹û£¬ÕâÑùµÄ»°¾ÍÐèÒªÕâ¸öÈÎÎñÒÔµ¥ÀýÐÎʽÔËÐУ¬¶ø²»ÊDz¢ÐеÄÔËÐС£

ΪÁ˱ÜÃâÈÎÎñÖ®¼äµÄÏ໥ӰÏ죬ÎÒÃÇΪÿ¸öExecutorÅäÒ»¸öºË£¬ÒòΪÎÒÃÇ֮ǰÓöµ½Ò»¸öÎÊÌ⣬ SparkÖ§³Öÿ¸öExecutorÅä¶àºË£¬µ«ÊÇÎÊÌâÊÇ£¬¿ÉÄÜÔÚÕâÒ»¸öExecutorÉÏͬʱÅÜÁ˲»Í¬µÄ¼¸¸öÈÎÎñ£¬Õ⼸ÖÖÖ®¼äÊÇÏ໥ӰÏìµÄ£¬Èç¹ûÕâ¸öExecutorÔÚÅÜÒ»¸öºÜ³¤µÄÈÎÎñ£¬ËüÅÜÁËÒ»°ëµÄʱºòͻȻÕâ±ß¼ÓÁËÒ»¸öСÈÎÎñ£¬Õâ¸öСÈÎÎñ¿ÉÄܻἫ´óµÄÓ°Ïì¡¢ÍÏÂýËÙ¶È¡£µÚ¶þËü¿ÉÄÜ»á°ÑÕû¸öExecutor¿¨ËÀ£¬ÕâÖÖÇé¿öÔÚSparkÖл¹ÊǺܳ£¼ûµÄ£¬±ÈÈçÊý¾ÝÓÐÇãб£¬ÄÚ´æÒç³öµÈµÈ£¬¿ÉÄÜ»á°ÑÕû¸öExecutor¿¨ËÀ£¬Õâ¾Í»áµ¼ÖÂÕâ¸öExecutorËùÓÐÅܵÄÈÎÎñ¶¼»á¹Òµô£¬»áÓ°ÏìÄÇÖÖ³¤Ê±¼äÔËÐÐÈÎÎñµÄЧÂÊ¡£ËùÒÔÎÒÃÇĿǰΪÿһ¸öExecutorÖ»ÅäÁËÒ»¸öºË¡£

ÎÒÃÇ»¹Ê¹ÓÃÁËSpark REST APIÀ´¼à¿ØÈÎÎñÅܵÄʱ¼ä£¬×Ô¶¯É±µôʱ¼ä¹ý³¤µÄÈÎÎñ£¬ÕâÖÖʱ¼ä¹ý³¤µÄÈÎÎñÓкܶàÔ­Òò£¬±ÈÈç˵ÊÇÊý¾ÝÇãб£¬ÕâÊÇSparkÈÎÎñÖÐÒ»¸öºÜ³£¼ûµÄÇé¿ö£¬»¹ÓпÉÄܾÍÊÇ´úÂëÂß¼­ÓÐÎÊÌ⣬»òÕß˵Êý¾ÝÁ¿Óм¤Ôö£¬ÕâЩ¶¼ÐèÒªÔÚɱµôÖ®ºóÈ¥·ÖÎöÔ­ÒòÀ´½øÐÐÓÅ»¯¡£

Óöµ½µÄÎÊÌâ

ÎÒÃÇÔÚʹÓÃSparkµÄ¹ý³ÌÖл¹Óöµ½Ò»Ð©ÎÊÌâ¡£ÕâЩÎÊÌâ¿ÉÄÜÓÐһЩÈËÒ²Óöµ½¹ý£¬ÎÒÃÇ¿ÉÒÔ·ÖÏíÒ»ÏÂÎÒÃÇÔÚ´¦ÀíÕâЩÎÊÌâ¹ý³ÌÖеÄһЩÏë·¨¡£

±ÈÈç˵ÎÒÃÇÓöµ½µÄKafkaÖØ¸´Ïû·ÑµÄÎÊÌ⣬¶ÔÓÚÎÒÃÇÀ´ËµKafkaµÄÏû·ÑµÄÄ¿±ê²»ÊÇÓÃExactly Once¡£µ±ÎÒÃÇÓöµ½Ò»Ð©ÎÊÌâһЩͳ¼ÆÂß¼­»òÕßһЩÊý¾ÝÍíµ½µÄÎÊÌâµÄʱºò£¬ÎÒÃÇÐèÒª´Óijһ¸öʱ¼äµãÖØÐ»Ø×·ËùÓеÄÊý¾Ý£¬ÕâÑùµÄ»°Kafka¾ÍÒªÖ§³ÖÖØ¸´Ïû·Ñ¡£

µÚ¶þ¸ö¾ÍÊǵ±ÒµÎñÂß¼­Ô½À´Ô½¶àµÄʱºò£¬ Spark Streaming¾ÍºÜÄÑÀ©Õ¹¡£

µÚÈý¡¢Í¬Ê±ÔËÐÐÈÎÎñ¹ý¶àµÄʱºò£¬Spark ServerµÄÈÎÎñµ÷¶È¾Í»á±äÂý£¬ÒòΪĿǰÎÒÃÇÒ»ÌìÒªÅÜÒ»Íò¶à¸öÈÎÎñ£¬Spark ServerͬʱÔËÐеÄÈÎÎñ¿ÉÄÜÔÚ100-200£¬µ±Í¬Ê±ÔËÐÐÈÎÎñ¹ý¶àµÄʱºò£¬Spark Server¾Í»á±äÂý¡£

µÚËÄ¡¢Óöµ½Ò»¸öСbug£¬SparkÔÚдHive±íµÄʱºòËü»áÏȰÑÊý¾Ýдµ½Ò»¸öÁÙʱĿ¼Àͨ¹ýŲÎļþµÄ·½Ê½°ÑËùÓеÄÊý¾ÝŲ»ØHive±íÀµ«ÊÇËü»áÁôÏ´óÁ¿µÄÁÙʱĿ¼ûÓÐÇå¡£

»¹ÓÐÒ»¸ö¾ÍÊÇPhoenixÔÚÓöµ½¶à±íunionµÄʱºòËٶȱäÂý£¬ÒÔ¼°ÖðÌõдHBaseµÄ·½°¸»á±È½ÏÂý¡£

×îºó¾ÍÊÇcount distinctµÄÊýÁ¿Ì«´ó£¬count distinctÊÇsqlµÄÓï·¨£¬ËüµÄÎÊÌâÊǵ±ÊýÁ¿¹ý¶àµÄʱºò£¬¾Í»áÔÚclient¶ËÔì³ÉºÜ´óµÄѹÁ¦£¬±ÈÈç˵¶ÔÓÚÎÒÃÇÀ´Ëµ£¬¾ÍÊÇcount distinct user£¬user¾ÍÊÇÒ»¸öÓû§£¬ÎÒÃÇÐèÒªÖªµÀ×òÌìÓÐ10ÍòÈË£¬½ñÌìÓÐ10ÍòÈË£¬ÕâÁ½¸ö10ÍòÈËÖ®¼ä¿ÉÄÜÓÐ5ÍòÈËÖØ¸´£¬ÎÒÃÇÒªÖªµÀÕâÁ½¸ö10ÍòÈË¼ÓÆðÀ´Ò»¹²ÊǶàÉÙdistinctµÄÊýÁ¿£¬ËùÒÔ¾ÍÐèÒª°ÑËùÓеÄ20ÍòÈ˶¼Äõ½client¶Ë½øÐйýÂË¡£¼ÙÈç10Íò¼¶±ðµÄ»°¿ÉÄÜ»¹Ã»ÓÐÎÊÌ⣬µ«µ±ÎÒÃǵÄÓû§Á¿´ïµ½°ÙÍò¡¢Ç§Íò¼¶±ðµÄʱºò¾Í»á´ó´óµÄÓ°Ïì²éѯµÄÐÔÄÜ¡£

ÎÊÌâ1£ºKafkaÏûÏ¢ÖØ¸´Ïû·Ñ

Ê×ÏÈKafkaÖØ¸´Ïû·ÑµÄÎÊÌâ¡£

ÎÒÃÇĿǰʹÓõÄÊÇSparkµÄKafka Direct API£¬Direct API²»Î¬»¤offset£¬ËùÒÔÎÒÃÇÑ¡ÔñÔÚzookeeper×Ô¼ºÎ¬»¤£¬ÕâÑùµÄ»°Èç¹ûÏëÖØ¸´Ïû·ÑµÄʱºòÎÒÃÇÖ»ÐèÒªÕÒµ½¶ÔӦʱ¼äµãµÄoffset£¬È»ºó´ÓÕâ¸öoffsetÖØÅܾͿÉÒÔÁË¡£

ĿǰÓкܶàÆäËûµÄ¹«Ë¾£¬»á¶¨ÆÚµÄά»¤Ò»¸öoffsetµ½Ê±¼äµÄÓ³É䣬Ȼºóµ±ËûÃÇÐèÒªÕÒµ½Ä³¸öʱ¼äµÄʱºòËûµ½Õâ¸öÓ³Éä±íÀïÈ¥·´²é¡£ÎÒÃǵÄÏûÏ¢ËäÈ»²»ÊÇÑϸñʱÐòµÄ£¬µ«Ëü¶¼ÊǽӽüʱÐòµÄ£¬¿ÉÄÜÁ½¸öÏûÏ¢Ö®¼ä×î¶à²îÒ»¶þÊ®Ã룬ËùÒÔÎÒÃÇ¿ÉÄÜͨ¹ý½üËÆ¶þ·Ö·¨À´´ÓKafkaÀïÕÒµ½¶ÔÓ¦µÄʱ¼äµãµÄoffset¡£

ͬʱÎÒÃÇʹÓÃKafkaµÄpartition¼Óoffset×÷ΪÕâ¸öÏûÏ¢µÄΨһID£¬ÕâÑùµÄ»°ÔÚÉú³ÉÒ»¸öÏûÏ¢µÄʱºò£¬ÎÒÃǵÄID¾Í²»»áÖØ¸´£¬¼´Ê¹ÄãÖØÅܺܶà´Î£¬HBase»á×Ô¶¯°ÑËüÈ¥ÖØ¡£

ÎÊÌâ2£ºStreamingÒµÎñÂß¼­½Ï¶à£¬ÄÑÒÔά»¤

µÚ¶þ¾ÍÊÇÎÒÃǵÄÒµÎñÂß¼­¹ý¶à£¬ÎÒÃǰÑDStreamÈ«²¿Ó³Éä³ÉDataFrame£¬È»ºóͨ¹ý³éÏ󣬰ÑÎÒÃǵÄÒµÎñÂß¼­³éÏó³ÉÁ½ÖÖ£¬Ò»ÖÖÊÇOperation£¬Ò»ÖÖÊÇPipeline£¬Ò»¸öOperation¾ÍÊǶÔDataFrame½øÐÐÒ»¸ö²Ù×÷£¬È»ºó°ÑËùÓеÄOperationÅÅÁÐÆðÀ´¾ÍÊÇÒ»¸öPipeline¡£±ÈÈç˵ÎÒÃÇ¿ÉÄÜ´ÓDStream¹ýÀ´Ö®ºó£¬°ÑËüÓ³Éä³ÉDataFrame£¬µÚÒ»²½Òª½âÎöIP£¬½âÎöIPµÄ²Ù×÷¾ÍÊǰÑÕâ¸öDataFrameµÄIPÄóöÀ´£¬½âÎöÍêÖ®ºó¿ÉÄÜÉú³É¹ú¼Ò¡¢³ÇÊС¢µØÇø£¬È»ºó°ÑËüÖØÐÂÈûµ½DataFrameÀïÃæ¡£

µÚ¶þ¸öOperation±ÈÈç˵ÎÒÃÇÐèÒªÖªµÀ±±¾©µÄÓû§ÊǶàÉÙ£¬¾ÍÔÚÕâ¸öPipelineÀïÃæ¼ÓÒ»¸öFilter£¬³ÇÊеÈÓÚ±±¾©¡£Ö®ºóÎÒÃÇ¿ÉÄÜÐèÒª°Ñ·ÖÎö³öÀ´µÄÊý¾Ý¸ø´æÏÂÀ´£¬±ÈÈç˵ÎÒÃÇÒª´æµ½±±¾©µÄÕâÕÅÓû§±íÀÎÒÃÇͬʱҪ´æµ½ÖйúÕâÕÅÓû§±íÀËùÒÔËüµÄÊä³ö¿ÉÄÜÊǶà¸öÊä³ö£¬ÎªÁ˽â¾öÕâÖÖ¶à¸öÊä³öÎÊÌâÎÒÃÇ»á×Ô¶¯ÔÚPipeline·ÖÖ§µÄµØ·½¼ÓÉÏpersistºÍunpersistµÄ¹ý³Ì£¬¼õÉÙÖØ¸´¼ÆËã¡£

ͬʱÎÒÃÇÖ§³Ö°ÑPipeline¶¨Òå³ÉÒ»¸ö¿É²å°ÎµÄÅäÖÃÎļþ£¬ÏÖÔÚÒª¿ª·¢Ò»¸öеÄÒµÎñÂß¼­µÄ»°Ê×ÏȾÍÒªÖØÐ´Ò»¸öOperationÀ࣬¶¨ÒåÄãµÄ²Ù×÷ÀàÐÍ£¬ÊäÈëºÍÊä³ö£¬´ó²¿·Ö¿ÉÄÜÊÇÀïÃæÐ´ÁËudf£¬Ö®ºóÒª°ÑOpeartionдµ½ÄãÈÏΪÕýÈ·µÄÁ÷³Ì¶¨ÒåÀïÃæ£¬ÕâÑùµÄ»°Spark Streaming¾Í»á´ÓÕýÈ·µÄÁ÷³Ì¿ªÊ¼£¬²¢ÇҼ̳Ð֮ǰµÄÂß¼­¡£

ÎÊÌâ3£ºÍ¬Ê±ÔËÐÐÈÎÎñ¹ý¶à£¬ÈÎÎñµ÷¶È±äÂý

ͬʱÔËÐйý¶àµÄÇé¿ö£¬ÎÒÃǵÚÒ»¸ö·´Ó¦¾ÍÊÇÔö¼ÓdriverÄڴ棬ʹÓøüºÃÐÔÄܵĻúÆ÷£¬µ«·¢ÏÖÕâ¸ö»áÓÐÒ»µãµãÌáÉý£¬µ«ÊÇÌáÉý²»´ó£¬ºóÀ´ÎÒÃÇ·¢ÏÖSparkÔÚÔÚ²éÕÒcache dataµÄʱºò£¬ÐèÒª½âÎöLogical Plan£¬µ±ÎÒÃÇÔÚÄÚ´æÀï´æÀX°ÙÕűíµÄʱºò£¬Ã¿Õűí¿ÉÄܶ¼ºÜС£¬µ«Ã¿ÕÅ±í¶¼¶ÔÓ¦ÁËÒ»¸öLogical Plan¡£µ±ÎÒÐèҪijһ¸öcacheÊý¾ÝµÄʱºòËü»á°ÑÕâ¸öLogical Plan¸úËùÓеÄÄÚ´æ±íÀïµÄLogical PlanÖØÐ±ȶÔһϣ¬Ëü±È¶ÔµÄʱºò»áÖØÐ½âÎöÒ»¸öÕâ¸öLogical Plan£¬ËùÒÔÄãÿ´Î±È¶Ô¶¼Òª½âÎöÒ»Á½°Ù¸öLogical Plan¡£ÕâÖÖÇé¿öÔÚÄãµÄcache dataÔ½À´Ô½¶àµÄʱºò£¬»áÔ½À´Ô½Âý£¬ËùÒÔÎÒÃÇÐÞ¸ÄÁËÏà¹Ø´úÂ룬°ÑÕâ¸ö½âÎöLogical Plan¸Ä³ÉÖ»Ö´ÐÐÒ»´Î¡£

ÎÊÌâ4£ºSparkдHive±íʱ£¬ÁÙʱĿ¼δÇåÀí

SparkдHive±íµÄʱºòÁÙʱĿ¼ûÓÐÇåÀí£¬ÎÒÃǾÍÐÞ¸ÄÁËһϣ¬¼ÓÁËÁ½ÐдúÂ룬ÔÚ½áÊøÖ®ºó°ÑÕâÖÖÁÙʱĿ¼ֱ½Óɾµô¾Í¿ÉÒÔÁË£¬ÕâÊÇÒ»¸öºÜСµÄÐ޸ġ£

ÎÊÌâ5£ºPhoenix²éѯÓöµ½¶à±íunionʱËٶȹýÂý

»¹ÓоÍÊÇPhoenix unionµÄÎÊÌ⣬±ÈÈç˵ÎÒÒª²éÈýÔ·ݡ¢ËÄÔ·ݡ¢ÎåÔ·ÝÊý¾ÝµÄʱºò£¬ÎÒÆäʵ¾ÍÐèÒªÕâÈý¸öunion£¬µ«PhoenixÔÚunionµÄʱºòÓÐÒ»¸öÎÊÌ⣬¾ÍÊÇ˵ËüÊÇ´®ÐÐÖ´Ðеģ¬ËüÐèÒªÏÈÈ¥²éÈýÔ·ݵÄÊý¾Ý£¬½áÊøÖ®ºó²éËÄÔ·ݵÄÊý¾Ý£¬½áÊøÖ®ºóÔÙ²éÎåÔ·ݵÄÊý¾Ý¡£

ÕâÑùµÄ»°¾ÍºÜÂý£¬ËùÒÔÎÒÃǸijɲ¢ÐУ¬ÕâÑùËü»áͬʱִÐÐÈýËÄÎåÔµÄÊý¾Ý£¬È»ºó°ÑËùÓеÄÊý¾Ý²¢ÐеÄÄûØÀ´¡£ÕâÑù»á´ó´ó¼Ó¿ìÎÒÃÇunionµÄËÙ¶È¡£

ÎÊÌâ6£ºÖðÌõдHBaseÌ«Âý

ÏÂÒ»¸öÎÊÌâ¾ÍÊÇдHBaseÌ«ÂýµÄÎÊÌâ¡£ÒòΪÎÒÃÇÒ»ÌìҪд¼¸Ç§ÍòÐС¢ÉÏÒÚÉÏÊý¾Ý£¬HBase´ø¿íÓкܴóѹÁ¦£¬ÁíÍâÒªÖØ¸´µÄ½øÐÐcompact¡£HBaseÌṩÁËBulkloadµÄ·½·¨£¬µ«ËüÌṩµÄÊÇMapReduceµÄ°æ±¾£¬BulkloadµÄ·½·¨¾ÍÊǰÑËùÐèÒªµÄÊý¾ÝÌáǰÕûÀíºÃ£¬ÕûÀí³ÉHFile£¬È»ºóÒ»´ÎÐÔͨ¹ýŲÎļþµÄ·½Ê½Å²µ½HBaseÀïÃæ£¬ÕâÑù¾Í´ó´ó¼õÇáÁËHBaseµÄѹÁ¦¡£

ÎÒÃÇ»ùÓÚMapReduce°æµÄ·½·¨Ð´ÁËSpark°æµÄ¡£¹é¹¦ÓÚSparkµÄÓÅ»¯ÄÜÁ¦£¬ÎÒÃÇ·¢ÏÖSpark°æµÄ»á±ÈMapReduceÒª¿ìÎå±¶£¬´ó´ó¼õÉÙÁËHBaseµÄѹÁ¦¡£

ͬʱÎÒÃÇ»á°ÑÄÇЩÐèÒªÖØ¸´¼ÆËãµÄÊý¾ÝÁÙʱ´æÔÚHDFSÉÏ£¬±ÈÈç˵½ñÌìͳ¼ÆÁËÒ»µã¡¢Á½µã¡¢Èýµã¡¢ËĵãµÄÊý¾Ý£¬µ«¿ÉÄÜÍíÉÏͳ¼ÆµÄʱºòÐèÒªÒ»µãµ½¶þÊ®ËĵãµÄÊý¾ÝÈ«²¿Í³¼ÆÏÂÀ´£¬ËùÒÔÎÒÃDz»ÐèÒª·´¸´µÄÈ¥¶ÁHBase£¬ÒòΪHBaseµ¥Ìõ²éÊǺܿìµÄ£¬µ«Èç¹ûÄãÒª²é´óÁ¿µÄÊý¾ÝµÄ»°£¬Ñ¹Á¦·Ç³£´ó£¬ËùÒÔÎÒÃǾͻá°ÑÕâЩÐèÒªÖØ¸´ÀûÓõÄÊý¾Ý´æÈëÁÙʱ±í£¬ÕâÑùµÄ»°¿ÉÒÔÖ±½Ó´ÓÁÙʱ±íÀï³öËùÐèÒªµÄͳ¼ÆÊý¾Ý¡£

ÎÊÌâ7£ºcount distinctÊýÁ¿Ì«´ó

»¹ÓÐcount distinct¹ý¶àµÄÎÊÌ⣬ÓÐÁ½ÖÖ·½°¸¡£

Ò»ÖÖ·½°¸ÊÇBitMapµÄ·½Ê½¡£ÎÒÃÇ¿ÉÒÔ°Ñÿ¸öÈ˽øÐÐÒ»¸ö±àºÅ£¬·ÖÅäÒ»¸öΨһµÄID£¬°ÑËùÓгöÏÖµÄID´æ³ÉÒ»¸öBitMap£¬ÕâÑùµÄ»°¾Í¿ÉÒÔ°ÑÒ»¸öÈËѹ³ÉÒ»¸öbit¡£ÕâÑùcount distinct²Ù×÷¾ÍÄÜת»»³É¶ÔÓ¦µÄBitMapµÄ²Ù×÷¡£

±ÈÈç˵×òÌìºÍ½ñÌìµÄÈË£¬Æäʵ¾ÍÊÇÁ½¸öBitMap»ò²Ù×÷£¬ÔÙ±ÈÈç²é×òÌì²¢ÇÒÊDZ±¾©µÄÓû§£¬ÄǾÍÐèÒª°Ñ×òÌìµÄÓû§ÄóöÀ´£¬°Ñ±±¾©µÄÓû§ÄóöÀ´£¬×öÒ»ÏÂBitMapÓë²Ù×÷£¬ÕâÑù¾Í³öÁË×òÌì±±¾©µÄÓû§¡£Í¬Ê±£¬µ±³öÏÖÈËÌØ±ðÏ¡ÊèµÄʱºò£¬±ÈÈç˵ºÜ¶àÈË×òÌìÀ´ÁË£¬½ñÌìûÀ´£¬½ñÌì³öÏÖÁË´óÁ¿µÄ¿Õλ¡£ÒòΪID·ÖÅäºÃÁË£¬ËùÒÔÎÒÃDzÉÓÃÁËѹËõµÄ·½·¨£¬¾ÍÊǰÑÕâЩ²»ÐèÒªµÄÁã»òÕßÒ»µÄλÖÃÈ«²¿Ñ¹Ëõһϡ£

»¹ÓÐÒ»ÖÖ·½°¸ÊÇHyperloglogµÄ·½°¸¡£ËüµÄÓŵã¾ÍÊÇ˵²»ÐèÒª±àºÅ£¬Õ¼ÓÿռäҲС£¬ÏñRedisµÄ»°Ò²ÌṩHyperloglogµÄ·½·¨£¬Ò»¸öHyperloglog¿ÉÄܾÍÐèҪʮ¼¸KµÄ´æ´¢¿Õ¼ä£¬ËüµÄÎó²î¸úÄãËùʹÓõļĴæÆ÷µÄÊýÁ¿Óйأ¬RedisÖÐÎó²îÂÊСÓÚ1%¡£

µ«Ëü²»ÊÇÒ»¸ö¾«È·µÄ·½°¸£¬Ëü»¹ÓÐÒ»¸öȱµã¾ÍÊÇ˵ËüÖ»ÄÜ×ö²¢¼¯²»ÄÜ×ö½»¼¯£¬Äã¿ÉÒÔ°Ñ×òÌìµÄÓû§ºÍ½ñÌìµÄÓû§ÄóöÀ´£¬mergeһϾÍÊÇÕâÁ½ÌìµÄ×ÜÊý£¬µ«Äã²»ÄܰÑ×òÌìµÄÓû§ºÍ±±¾©µÄÓû§×öһϽ»¼¯µÄ²Ù×÷¡£ÏñSparkµÄ»°ËüÔÚ2.0µÄʱºò£¬ËüµÄwindow²Ù×÷ÀïÃæµÄÒ²»áÆôÓÃÕâÖÖ·½°¸¡£

ÎÒÃÇĿǰÀëÏß¼ÆËã»áÓÃBitMapµÄ·½·¨£¬ËüµÄÓŵãÊǺÜ׼ȷ£¬Ö§³Ö¸÷ÖÖ²Ù×÷£¬ÎÒÃÇʵʱ¼ÆËãÓõÄÊÇHyperloglog·½°¸£¬ËäÈ»»áÓÐÎó²î£¬µ«ÊµÊ±¼ÆËãÎó²îСÓÚ1%µÄ»°ÆäʵÊÇ¿ÉÒÔ½ÓÊܵġ£

   
2912 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚ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[±±¾©]

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

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

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