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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ΪÒì¹¹µÄ´óÊý¾ÝÔËÐл·¾³¹¹½¨Êý¾Ý¹ÜµÀ
 
×÷Õߣº Dongyao Wu Liming Zhu µÈ À´Ô´£ºÍøÂç ·¢²¼ÓÚ£º 2017-6-15
  3673  次浏览      27
 

񻵋

ѧϰÈçºÎÔÚÒì¹¹µÄÔËÐл·¾³ÀïʹÓÃPipeline61¹ÜÀíÊý¾Ý¹ÜµÀ

Pipeline61µÄÈý¸öÖ÷Òª×é¼þ£ºÖ´ÐÐÒýÇæ¡¢Êý¾Ý·þÎñ£¬ÒÔ¼°ÒÀÀµºÍ°æ±¾¹ÜÀíÆ÷

×Ô¶¯»¯°æ±¾¿ØÖƺÍÒÀÀµ¹ÜÀíΪÎÒÃÇÌṩÁËÀúÊ·¿É×·×ÙÐԺͿÉÔÙÏÖÐÔ

±È½Ï¼¸¸öÊý¾Ý¹ÜµÀ¿ò¼Ü£¬ÈçCrunch¡¢Pig¡¢Cascading¡¢FlumeºÍTez

°¸Àýѧϰ£ºÊ¹ÓÃPipeline61´¦ÀíÈýÖÖ²»Í¬¸ñʽµÄÊý¾Ý£¨CSV¡¢Îı¾ºÍJSON£©

ÕâÆªÎÄÕÂÏÈÊdzöÏÖÔÚIEEE SoftwareÔÓÖ¾ÉÏ£¬IEEE SoftwareÊÇÒ»±¾ÌṩÑϽ÷¿Æ¼¼×ÊѶµÄÔÓÖ¾¡£ÆóÒµ×ÜÊÇÔÚ¿É¿¿ÐÔºÍÁé»îÐÔ·½ÃæÃæÁÙÌôÕ½£¬IT¾­ÀíºÍ¼¼ÊõÁìµ¼ÕßÒÀÀµITר¼ÒÃÇÀ´Ìṩ¸ß³¬µÄ½â¾ö·½°¸¡£

Pipeline61¿ò¼Ü¿ÉÒÔÓÃÓÚΪÒì¹¹µÄÔËÐл·¾³¹¹½¨Êý¾Ý¹ÜµÀ¡£Ëü¿ÉÒÔÖØÓÃÒѾ­²¿ÊðÔÚ¸÷¸ö»·¾³ÀïµÄ×÷Òµ´úÂ룬²¢ÌṩÁ˰汾¿ØÖƺÍÒÀÀµ¹ÜÀíÀ´½â¾öµäÐ͵ÄÈí¼þ¹¤³ÌÎÊÌâ¡£

Ñо¿ÈËÔ±¿ª·¢ÁË´óÊý¾Ý´¦Àí¿ò¼Ü£¬ÈçMapReduceºÍSpark£¬ÓÃÓÚ´¦Àí·Ö²¼ÔÚ´ó¹æÄ£¼¯ÈºÀïµÄ´óÊý¾Ý¼¯¡£ÕâЩ¿ò¼Ü×Åʵ½µµÍÁË¿ª·¢´óÊý¾ÝÓ¦ÓóÌÐòµÄ¸´ÔÓ¶È¡£ÔÚʵ¼Êµ±ÖУ¬ÓкܶàµÄÕæÊµ³¡¾°ÒªÇ󽫶à¸öÊý¾Ý´¦ÀíºÍÊý¾Ý·ÖÎö×÷Òµ½øÐйܵÀ»¯ºÍ¼¯³É¡£ÀýÈ磬ͼÏñ·ÖÎöÓ¦ÓÃÒªÇóһЩԤ´¦Àí²½Ö裬ÈçͼÏñ½âÎöºÍÌØÕ÷³éÈ¡£¬¶ø»úÆ÷ѧϰËã·¨ÊÇÕû¸ö·ÖÎöÁ÷ÀïΨһµÄºËÐÄ×é¼þ¡£²»¹ý£¬Òª¶ÔÒѾ­¿ª·¢ºÃµÄ×÷Òµ½øÐйܵÀ»¯ºÍ¼¯³É£¬ÒÔ±ãÖ§³Ö¸üΪ¸´ÔÓµÄÊý¾Ý·ÖÎö³¡¾°£¬²¢²»ÊÇÒ»¼þÈÝÒ×µÄÊ¡£ÎªÁ˽«ÔËÐÐÔÚÒì¹¹ÔËÐл·¾³ÀïµÄÊý¾Ý×÷Òµ¼¯³ÉÆðÀ´£¬¿ª·¢ÈËÔ±±ØÐëдºÜ¶à½ºË®´úÂ룬ÈÃÊý¾ÝÔÚÕâЩ×÷Òµ¼äÁ÷ÈëÁ÷³ö¡£GoogleµÄÒ»ÏîÑо¿±íÃ÷£¬Ò»¸ö³ÉÊìµÄϵͳ¿ÉÄÜÖ»°üº¬ÁË5%µÄ»úÆ÷ѧϰ´úÂ룬¶øÊ£ÏµÄ95%¶¼ÊǽºË®´úÂë¡£

ΪÁËÖ§³Ö¶Ô´óÊý¾Ý×÷Òµ½øÐйܵÀ»¯ºÍ¼¯³É£¬Ñо¿ÈËÔ±ÍÆ¼öʹÓø߼¶µÄ¹ÜµÀ¿ò¼Ü£¬ÈçCrunch¡¢PigºÍCascadingµÈ¡£ÕâЩ¿ò¼Ü´ó¶¼ÊÇ»ùÓÚµ¥Ò»µÄÊý¾Ý´¦ÀíÔËÐл·¾³¶ø¹¹½¨µÄ£¬²¢ÒªÇóʹÓÃÌØ¶¨µÄ½Ó¿ÚºÍ±à³Ì·¶Ê½À´¹¹½¨¹ÜµÀ¡£¿öÇÒ£¬¹ÜµÀÓ¦ÓÃÐèÒª²»¶ÏÑÝ»¯£¬Âú×ãеıä¸üºÍÐèÇó¡£ÕâЩӦÓû¹ÓпÉÄܰüº¬¸÷ÖÖÒÅÁôµÄ×é¼þ£¬ËüÃÇÐèÒª²»Í¬µÄÔËÐл·¾³¡£Òò´Ë£¬Î¬»¤ºÍ¹ÜÀíÕâЩ¹ÜµÀ±äµÃ·Ç³£¸´ÔӺͺÄʱ¡£

Pipeline61¿ò¼ÜÖ¼ÔÚΪÔÚÒì¹¹µÄÔËÐл·¾³Àïά»¤ºÍ¹ÜÀíÊý¾Ý¹ÜµÀ¼õÉÙ¾«Á¦µÄͶÈ룬¶ø²»ÐèÒªÖØÐ´Ô­ÓеÄ×÷Òµ¡£Ëü¿ÉÒÔ½«ÔËÐÐÔÚ¸÷ÖÖ»·¾³ÀïµÄÊý¾Ý´¦Àí×é¼þ¼¯³ÉÆðÀ´£¬°üÀ¨MapReduce¡¢SparkºÍ½Å±¾¡£Ëü¾¡¿ÉÄÜÖØÓÃÏÖÓеÄÊý¾Ý´¦Àí×é¼þ£¬¿ª·¢ÈËÔ±¾ÍûÓбØÒªÖØÐÂѧϰеıà³Ì·¶Ê½¡£³ý´ËÖ®Í⣬ËüΪÿ¸ö¹ÜµÀµÄÊý¾ÝºÍ×é¼þÌṩÁË×Ô¶¯»¯µÄ°æ±¾¿ØÖƺÍÒÀÀµ¹ÜÀí¡£

ÏÖÓеĹܵÀ¿ò¼Ü

´ó¶àÊýÓÃÓÚ¹¹½¨¹ÜµÀ»¯´óÊý¾Ý×÷ÒµµÄ¿ò¼Ü¶¼ÊÇ»ùÓÚµ¥Ò»µÄ´¦ÀíÒýÇæ¶ø¹¹½¨µÄ£¨±ÈÈçHadoop£©£¬²¢Ê¹ÓÃÁËÍⲿµÄ³Ö¾Ã»¯·þÎñ£¨±ÈÈçHadoop·Ö²¼Ê½Îļþϵͳ£©À´½»»»Êý¾Ý¡£±íA±È½ÏÁ˼¸ÖÖ×îÎªÖØÒªµÄ¹ÜµÀ¿ò¼Ü¡£

Crunch¶¨ÒåÁË×Ô¼ºµÄÊý¾ÝÄ£Ðͺͱà³Ì·¶Ê½£¬ÓÃÓÚÖ§³Ö¹ÜµÀµÄдÈ룬²¢ÔÚMapReduceºÍSparkÉÏÔËÐйܵÀ×÷Òµ¡£PigʹÓÃÁËÒ»ÖÖ»ùÓÚÊý¾ÝÁ÷µÄ±à³Ì·¶Ê½À´±àдETL£¨³éÈ¡¡¢×ª»»¡¢¼ÓÔØ£©½Å±¾£¬²¢ÔÚÖ´ÐÐÆÚ±»×ª»»³ÉMapReduce×÷Òµ¡£CascadingΪ¹ÜµÀÌṩÁË»ùÓÚ²Ù×÷·ûµÄ±à³Ì½Ó¿Ú£¬²¢Ö§³ÖÔÚMapReduceÉÏÔËÐÐCascadingÓ¦Óá£Flume×î³õÊÇΪ»ùÓÚÈÕÖ¾µÄ¹ÜµÀ¶øÉè¼ÆµÄ£¬Óû§Í¨¹ýÅäÖÃÎļþºÍ²ÎÊýÀ´´´½¨¹ÜµÀ¡£MRQL£¨MapReduce²éѯÓïÑÔ£©ÊÇÒ»ÖÖͨÓõÄϵͳ£¬ÓÃÓÚÔÚ¸÷ÖÖÔËÐл·¾³ÉϽøÐвéѯºÍÓÅ»¯£¬ÈçHadoop¡¢SparkºÍFlink¡£TezÊÇÒ»¸ö»ùÓÚÓÐÏòÎÞ»·Í¼µÄÓÅ»¯¿ò¼Ü£¬Ëü¿ÉÒÔÓÃÓÚÓÅ»¯Ê¹ÓÃPigºÍHive±àдµÄMapReduce¹ÜµÀ¡£

Pipeline61ÓëÕâЩ¿ò¼ÜµÄ²»Í¬µãÔÚÓÚ£º

Ö§³Ö¶ÔÒì¹¹µÄÊý¾Ý´¦Àí×÷Òµ£¨MapReduce¡¢SparkºÍ½Å±¾£©½øÐйܵÀ»¯ºÍ¼¯³É¡£

ÖØÓÃÏÖÓеıà³Ì·¶Ê½£¬¶ø²»ÊÇÒªÇ󿪷¢ÈËԱѧϰеıà³Ì·¶Ê½¡£

Ìṩ×Ô¶¯»¯µÄ°æ±¾¿ØÖƺÍÒÀÀµ¹ÜÀí£¬¾ß±¸ÀúÊ·¿É×·×ÙÐԺͿÉÖØÏÖÐÔ£¬ÕâЩ¶ÔÓڹܵÀµÄ³ÖÐø¿ª·¢À´ËµÊǷdz£ÖØÒªµÄ¡£

ÓëPipeline61ÀàËÆ£¬Apache Object Oriented Data Technology£¨OODT£©Êý¾ÝÕ¤¸ñ¿ò¼ÜÖ§³ÖÈÃÓû§´ÓÒì¹¹»·¾³Öв¶×½¡¢¶¨Î»ºÍ·ÃÎÊÊý¾Ý¡£ÓëPipeline61Ïà±È£¬OODTÌṩÁ˸ü¾ßͨÓÃÐÔµÄÈÎÎñÇý¶¯¹¤×÷Á÷Ö´Ðйý³Ì£¬¿ª·¢ÈËÔ±±ØÐë±àд³ÌÐòÀ´µ÷Óò»Í¬µÄÈÎÎñ¡£Ïà·´£¬Pipeline61רעÓÚÓ뵱ǰµÄ´óÊý¾Ý´¦Àí¿ò¼Ü½øÐÐÉî¶È¼¯³É£¬°üÀ¨Spark¡¢MapReduceºÍIPython¡£OODTʹÓÃÁË»ùÓÚXMLµÄ¹ÜµÀÅäÖ㬶øPipeline61Ϊ¸÷ÖÖ±à³ÌÓïÑÔÌṩÁ˱à³Ì½Ó¿Ú¡£×îºó£¬OODTÐèҪά»¤Êý¾Ý¼¯µÄÒ»°ãÐÔÐÅÏ¢ºÍÔªÊý¾Ý¡£Pipeline61Ϊ¹ÜµÀÀïµÄIOÊý¾ÝºÍת»»ÈÎÎñÌṩÁËÏÔʽµÄÀ´Ô´ÐÅÏ¢¡£Òò´Ë£¬Pipeline61Ô­ÉúµØÖ§³ÖÀúÊ·Êý¾Ý¹ÜµÀ»ò²¿·ÖÊý¾Ý¹ÜµÀµÄÖØÐÂÉú³ÉºÍÖØÐÂÖ´ÐС£

Ò»¸öÓÐȤµÄÀý×Ó

ÎÒÃǵÄÀý×ÓÊÇÒ»¸öÏÓÒɼì²âϵͳ£¬Í¼1չʾÁ˸ÃϵͳµÄÊý¾Ý´¦Àí¹ÜµÀ¡£ÏµÍ³ÊÕ¼¯À´×Ô¸÷¸ö²¿ÃźÍ×éÖ¯µÄÊý¾Ý£¬±ÈÈçÀ´×ÔÕþ¸®µÀ··þÎñ²¿ÃŵĻú¶¯³µ×¢²á¼Ç¼¡¢À´×ÔÕþ¸®Ë°Îñ²¿ÃŵĸöÈËÊÕÈ뱨¸æ£¬»òÀ´×Ôº½¿Õ¹«Ë¾µÄº½³Ì¼Ç¼¡£À´×Ô²»Í¬Êý¾ÝÔ´µÄ¼Ç¼¿ÉÄܾßÓв»Í¬µÄ¸ñʽ£¬ÈçCSV¡¢Îı¾¡¢JSON£¬ËüÃǵĽṹÊDz»Ò»ÑùµÄ¡£

ͼ1.ÏÓÒɼì²âϵͳµÄÊý¾Ý´¦Àí¹ÜµÀ¡£À´×Ô²»Í¬²¿ÃźÍ×éÖ¯µÄÊý¾Ý¿ÉÄܾßÓв»Í¬µÄ¸ñʽºÍ½á¹¹¡£CSV±íʾÒÔ¶ººÅ·Ö¸ôµÄÊý¾ÝÖµ£¬JSON±íʾJavaScript Object Notation£¬MR±íʾMapReduce£¬HDFSÊÇHadoop·Ö²¼Ê½Îļþϵͳ¡£

ÔÚÊý¾Ý¹ÜµÀµÄ¸÷¸ö½×¶Î£¬²»Í¬µÄÊý¾Ý¿ÆÑ§¼Ò»ò¹¤³ÌʦÃÇ¿ÉÄÜʹÓò»Í¬µÄ¼¼ÊõºÍ¿ò¼ÜÀ´¿ª·¢Êý¾Ý´¦Àí×é¼þ£¬±ÈÈçIPython¡¢MapReduce¡¢RºÍSpark¡£Ò»Ð©ÒÅÁôµÄ×é¼þÒ²¿ÉÒÔͨ¹ýBash½Å±¾»òµÚÈý·½Èí¼þ½øÐм¯³É¡£ËùÒÔ£¬¹ÜÀíºÍά»¤Òì¹¹»·¾³Àï³ÖÐø±ä»¯µÄÊý¾Ý¹ÜµÀÊÇÒ»¸ö¸´ÔÓ¶ø³ÁÃÆµÄÈÎÎñ¡£Ê¹ÓÃпò¼ÜÌæ´ú¾É¿ò¼ÜµÄ´ú¼ÛÊǺܸߵ쬻òÐí¸ü¼ÓÄÑÒÔ³ÐÊÜ¡£ÔÚ×µÄÇé¿öÏ£¬¿ª·¢ÈËÔ±¿ÉÄÜÐèÒªÖØÐÂʵÏÖËùÓеÄÊý¾Ý´¦Àí×é¼þ¡£

ÁíÍ⣬ÕýÈçÎÒÃÇ֮ǰÌá¹ýµÄÄÇÑù£¬ÎªÁËÂú×ãеÄϵͳ±ä¸üÐèÇ󣬹ܵÀÓ¦ÓóÌÐòÐèÒª±£³ÖÑÝ»¯ºÍ¸üС£ÀýÈ磬¿ÉÄÜ»áÓÐеÄÊý¾ÝÔ´¼ÓÈë½øÀ´£¬»òÕßÏÖÓеÄÊý¾ÝÔ´µÄ¸ñʽºÍ½á¹¹»á·¢Éú±ä¸ü£¬»òÕßÉý¼¶·ÖÎö×é¼þÀ´ÌáÉýÐÔÄܺÍ׼ȷÐÔ¡£ÕâЩ¶¼»áµ¼Ö¹ܵÀ×é¼þµÄ³ÖÐø±ä»¯ºÍ¸üС£ÔڹܵÀÑÝ»¯¹ý³ÌÖÐÌṩ¿É×·×ÙÐԺͿÉÔÙÏÖÐÔ»á³ÉΪһ¸öÌôÕ½¡£¹ÜµÀ¿ª·¢ÈËÔ±¿ÉÄÜÏë¼ì²é¹ÜµÀµÄÀúÊ·£¬ÓÃÓڱȽϸüÐÂǰºóÓÐʲô²»Í¬¡£ÁíÍ⣬Èç¹ûÓбØÒª£¬Ã¿¸öÊý¾Ý´¦Àí×é¼þÓ¦¸ÃÄܹ»»Ø¹öµ½ÉÏÒ»¸ö°æ±¾¡£

Pipeline61

ΪÁ˽â¾öÕâЩÌôÕ½ÐÔÎÊÌ⣬Pipeline61ʹÓÃÁËÈý¸öÖ÷ÒªµÄ×é¼þ£ºÖ´ÐÐÒýÇæ´¥·¢Æ÷¡¢¼à¿ØÆ÷£¬ÒÔ¼°¹ÜµÀ¹ÜÀíÆ÷¡£Êý¾Ý·þÎñÌṩÁËͳһµÄÊý¾ÝIO²ã£¬ÓÃÓÚÍê³É¿ÝÔïµÄÊý¾Ý½»»»ÒÔ¼°¸÷ÖÖ²»Í¬Êý¾ÝÔ´Ö®¼äµÄת»»¹¤×÷¡£ÒÀÀµºÍ°æ±¾¹ÜÀíÆ÷Ϊ¹ÜµÀÀïµÄÊý¾ÝºÍ×é¼þÌṩÁË×Ô¶¯»¯µÄ°æ±¾¿ØÖƺÍÒÀÀµ¹ÜÀí¡£Pipeline61Ϊ¿ª·¢ÈËÔ±ÌṩÁËÒ»Ì×¹ÜÀíAPI£¬ËûÃÇ¿ÉÒÔͨ¹ý·¢ËͺͽÓÊÕÏûÏ¢½øÐйܵÀµÄ²âÊÔ¡¢²¿ÊðºÍ¼à¿Ø¡£

ͼ2. Pipeline61¼Ü¹¹¡£Pipeline61¿ò¼ÜÖ¼ÔÚΪÔÚÒì¹¹µÄÔËÐл·¾³Àïά»¤ºÍ¹ÜÀíÊý¾Ý¹ÜµÀ¼õÉÙ¾«Á¦µÄͶÈ룬¶ø²»ÐèÒªÖØÐ´Ô­ÓеÄ×÷Òµ¡£DAG±íʾÓÐÏòÎÞ»·Í¼¡£

PipeÄ£ÐÍ

Pipeline61½«¹ÜµÀ×é¼þ±íʾΪpipe£¬Ã¿¸öpipeÓÐһЩÏà¹ØÁªµÄʵÌ壺

pipeµÄÃû×Ö±ØÐëÊÇΨһµÄ£¬¶øÇÒÒªÓëpipeµÄ¹ÜÀíÐÅÏ¢¾ßÓÐÏà¹ØÐÔ¡£Ãû×ÖÀï¿ÉÒÔ°üº¬ÃüÃû¿Õ¼äÐÅÏ¢¡£

pipeµÄ°æ±¾ÐÅÏ¢»á×Ô¶¯Ôö³¤¡£Óû§¿ÉÒÔÖ´ÐÐÖ¸¶¨°æ±¾µÄpipe¡£

¹ÜµÀ·þÎñÆ÷¸ºÔð¹ÜÀíºÍά»¤pipe¡£pipeÐèÒªÖªµÀ¹ÜµÀ·þÎñÆ÷µÄµØÖ·ÐÅÏ¢£¬ÔÚÔËÐÐÆÚ¼ä£¬Ëü¿ÉÒÔÏò¹ÜµÀ·þÎñÆ÷·¢ËÍ֪ͨÏûÏ¢¡£

ÊäÈëºÍÊä³öURLÀï°üº¬ÁËpipeµÄIOÊý¾ÝËùʹÓõÄЭÒéºÍµØÖ·¡£Ð­Òé±íʾ³Ö¾Ã»¯ÏµÍ³µÄÀàÐÍ£¬ÈçHDFS£¨Hadoop·Ö²¼Ê½Îļþϵͳ£©¡¢JDBC£¨Java Database Connectivity£©¡¢S3£¨Amazon Simple Storage Service£©¡¢Îļþ´æ´¢ºÍÆäËûÀàÐ͵ÄÊý¾Ý´æ´¢ÏµÍ³¡£

IOÊý¾ÝµÄÊäÈë¸ñʽºÍÊä³ö¸ñʽָÃ÷ÁËÊý¾ÝµÄ¶ÁÈ¡¸ñʽºÍдÈë¸ñʽ¡£

ÔËÐÐÉÏÏÂÎÄÖ¸Ã÷ÁËÔËÐл·¾³ºÍÔËÐпò¼ÜËùÐèÒªµÄÆäËûÐÅÏ¢¡£

ÔËÐÐÉÏÏÂÎÄÓëÊý¾Ý´¦Àí¿ò¼Ü½ôÃÜÏà¹Ø¡£Pipeline61ĿǰÓÐÈýÖÖÖ÷ÒªµÄÔËÐÐÉÏÏÂÎÄ£º

SparkÔËÐÐÉÏÏÂÎİüº¬ÁËÒ»¸öSparkProcÊôÐÔ£¬¸ÃÊôÐÔΪSparkSQLÌṩÁËÒ»¸öת»»º¯Êý£¬ÓÃÓÚ½«ÊäÈëRDD£¨µ¯ÐÔ·Ö²¼Ê½Êý¾Ý¼¯£©×ª»¯³ÉÊä³öRDD£¬»òÕß½«ÊäÈëDataFrameת»»³ÉÊä³öDataFrame¡£

MapReduceÔËÐÐÉÏÏÂÎİüº¬ÁËһЩ½á¹¹»¯µÄ²ÎÊý£¬Ö¸Ã÷ÁËMapReduce×÷ÒµµÄMapper¡¢Reducer¡¢CombinerºÍPartitioner¡£¿ÉÒÔʹÓÃkey-valueµÄÐÎʽÌí¼ÓÆäËû²ÎÊý¡£

shellÔËÐÐÉÏÏÂÎİüº¬ÁËÒ»¸ö½Å±¾Îļþ»òÕßÄÚÁªµÄÃüÁî¡£PythonºÍR½Å±¾ÊÇshell pipe×é¼þµÄ×ÓÀàÐÍ£¬ËüÃÇ¿ÉÒÔʹÓøü¶àÓÉÊý¾Ý·þÎñ¿ØÖƵÄÊäÈëºÍÊä³ö¡£shell pipeµÄ²»×ãÖ®´¦ÔÚÓÚ£¬¿ª·¢ÈËÔ±±ØÐëÊÖ¶¯µØ´¦ÀíÊäÈëºÍÊä³öµÄÊý¾Ýת»»¡£

ͼ3չʾÁËÈçºÎдһ¸ö¼òµ¥µÄSparkPipe¡£»ù±¾ÉÏ£¬¿ª·¢ÈËԱֻҪʹÓÃSparkProc½Ó¿ÚÀ´°ü×°Spark RDDº¯Êý£¬È»ºóʹÓÃSparkProc³õʼ»¯Ò»¸öSparkPipe¶ÔÏó¡£

ͼ3. ÈçºÎдһ¸ö¼òµ¥µÄSparkPipe¡£¿ª·¢ÈËԱʹÓÃSparkProc½Ó¿Ú°ü×°Spark RDDº¯Êý£¬È»ºóʹÓÃSparkProc³õʼ»¯Ò»¸öSparkPipe¶ÔÏó¡£

Pipeline61Èÿª·¢ÈËÔ±¿ÉÒÔÔÚÂß¼­²ãÃæ½«²»Í¬ÀàÐ͵ÄpipeÎÞ·ìµØ¼¯³Éµ½Ò»Æð¡£ËüÌṩÁË·½·¨£¬ÓÃÓÚ½«pipeÁ¬½ÓÆðÀ´ÐγɹܵÀ¡£ÔÚ½«pipeÁ¬½ÓÆðÀ´Ö®ºó£¬Ç°Ò»¸öpipeµÄÊä³ö¾Í±ä³ÉÁËÏÂÒ»¸öpipeµÄÊäÈë¡£ÔÚºóÃæµÄ°¸Àýѧϰ²¿·Ö£¬ÎÒÃÇ»áչʾһ¸ö¸ü¾ßÌåµÄÀý×Ó¡£

Ö´ÐÐÒýÇæ

Ö´ÐÐÒýÇæ°üº¬ÁËÈý¸ö×é¼þ¡£

¹ÜµÀ·þÎñÆ÷°üº¬ÁËÏûÏ¢´¦ÀíÆ÷£¬ÓÃÓÚ½ÓÊպʹ¦ÀíÀ´×ÔÓû§ºÍÈÎÎñµÄÏûÏ¢¡£Óû§¿ÉÒÔͨ¹ý·¢ËÍÏûÏ¢À´Ìá½»¡¢²¿ÊðºÍ¹ÜÀíËûÃǵĹܵÀ×÷ÒµºÍÒÀÀµ¡£ÔËÐÐÖеÄÈÎÎñ¿ÉÒÔͨ¹ý·¢ËÍÏûÏ¢À´±¨¸æËüÃǵÄÔËÐÐ״̬¡£ÔËÐÐʱÏûÏ¢Ò²¿ÉÒÔ´¥·¢Ò»Ð©Ê¼þ£¬ÕâЩʼþ¿ÉÒÔÔÚÔËÐÐÆÚ¼äµ÷¶ÈºÍ»Ö¸´½ø³Ì¡£

ÓÐÏòÎÞ»·Í¼µ÷¶ÈÆ÷±éÀú¹ÜµÀµÄÈÎÎñͼ£¬²¢½«ÈÎÎñÌá½»µ½ÏàÓ¦µÄÔËÐл·¾³¡£Ò»¸öÈÎÎñ»áÔÚËüµÄËùÓи¸ÈÎÎñ¶¼±»³É¹¦Ö´ÐÐÖ®ºó½øÈë×Ô¼ºµÄÖ´Ðе÷¶ÈÆÚ¡£

ÈÎÎñÆô¶¯Æ÷ΪpipeÆô¶¯Ö´Ðнø³Ì¡£Ä¿Ç°£¬Pipeline61ʹÓÃÁËÈýÖÖÀàÐ͵ÄÈÎÎñÆô¶¯Æ÷£º

SparkÆô¶¯Æ÷»á³õʼ»¯Ò»¸ö×Ó½ø³Ì£¬×÷ΪִÐÐSpark×÷ÒµµÄÇý¶¯½ø³Ì¡£Ëü»á²¶×½ÔËÐÐʱ״̬µÄ֪ͨÏûÏ¢£¬²¢½«Í¨Öª·¢Ë͸ø¹ÜµÀ·þÎñÆ÷£¬ÓÃÓÚ¼à¿ØºÍµ÷ÊÔ¡£

MapReduceÆô¶¯Æ÷»á³õʼ»¯Ò»¸ö×Ó½ø³Ì£¬ÓÃÓÚÌá½»ÓÉpipeÖ¸¶¨µÄMapReduce×÷Òµ¡£ÔÚ½«Ö´ÐÐ״̬·¢Ë͸ø¹ÜµÀ·þÎñÆ÷֮ǰ£¬×Ó½ø³Ì»áµÈ´ý×÷ÒµÖ´ÐÐÍê±Ï£¬²»¹ÜÊdzɹ¦»¹ÊÇʧ°Ü¡£

shellÆô¶¯Æ÷»á´´½¨Ò»ÏµÁнø³ÌͨµÀ£¬ÓÃÓÚ´¦Àíshell½Å±¾»òÕßÓÉshell pipeËùÖ¸¶¨µÄÃüÁî¡£ÔÚÕâЩ½ø³Ì½áÊø»òÕßÈκÎÒ»¸ö½ø³Ìʧ°ÜÖ®ºó£¬Ïà¹ØµÄ״̬ÏûÏ¢½«±»·¢Ë͸ø¹ÜµÀ·þÎñÆ÷¡£

¿ª·¢ÈËÔ±¿ÉÒÔʵÏÖеÄÈÎÎñÆô¶¯Æ÷£¬ÓÃÓÚÖ§³ÖеÄÔËÐÐÉÏÏÂÎÄ£º

¿ÉÒÔʹÓÃÓÉÖ´Ðпò¼Ü£¨±ÈÈçHadoopºÍSpark£©ÌṩµÄAPI

ÔÚÒѾ­Æô¶¯µÄ½ø³ÌÀï³õʼ»¯×Ó½ø³Ì£¬²¢Ö´ÐгÌÐòÂß¼­¡£

ÀíÂÛÉÏ£¬ÈκοÉÒÔͨ¹ýshell½Å±¾Æô¶¯µÄÈÎÎñ¶¼¿ÉÒÔʹÓýø³ÌÆô¶¯Æ÷À´Ö´ÐС£

Êý¾Ý·þÎñ

ÿ¸öpipeÔÚÔËÐÐÆÚ¼ä¶¼ÊǶÀÁ¢Ö´Ðеġ£pipe¸ù¾ÝÊäÈë·¾¶ºÍ¸ñʽÀ´¶ÁÈ¡ºÍ´¦ÀíÊäÈëÊý¾Ý£¬²¢½«Êä³ö½á¹ûдÈëÖ¸¶¨µÄ´æ´¢ÏµÍ³¡£¹ÜÀí¸÷ÖÖIOÊý¾ÝµÄЭÒéºÍ¸ñʽÊǼþ¿ÝÔïµÄÊÂÇ飬¶øÇÒÈÝÒ׳ö´í¡£ËùÒÔ£¬Êý¾Ý·þÎñΪ¿ª·¢ÈËÔ±´úÀÍÁËÕâЩ¹¤×÷¡£

Êý¾Ý·þÎñÌṩÁËÒ»×éÊý¾Ý½âÎöÆ÷£¬ËüÃǸù¾Ý¸ø¶¨µÄ¸ñʽºÍЭÒéÔÚÌØ¶¨ÔËÐл·¾³Àï¶ÁÈ¡ºÍдÈëÊý¾Ý¡£ÀýÈ磬¶ÔÓÚÒ»¸öSpark pipeÀ´Ëµ£¬Êý¾Ý·þÎñʹÓÃÔ­ÉúµÄSpark APIÀ´¼ÓÔØÎļþ±¾Îĵ½RDD¶ÔÏ󣬻òÕßʹÓÃSparkSQL API´ÓJDBC»òJSONÎļþ¼ÓÔØÊý¾Ýµ½Spark DataFrame¡£¶ÔÓÚPython pipeÀ´Ëµ£¬Êý¾Ý·þÎñʹÓÃPython Hadoop API¼ÓÔØCSVÎļþµÄÊý¾Ýµ½HDFS£¬²¢×ª»»³ÉPython DataFrame¡£»ù±¾ÉÏ£¬Êý¾Ý·þÎñÊǽ«Êý¾ÝЭÒéºÍ¸ñʽӳÉäµ½ÌØ¶¨ÔËÐл·¾³µÄÊý¾Ý½âÎöÆ÷¡£

ÎÒÃÇ¿ÉÒÔÀ©Õ¹Êý¾Ý·þÎñ£¬ÊµÏÖ²¢×¢²áеÄÊý¾Ý½âÎöÆ÷¡£Ò»Ð©Êý¾Ý½âÎö¹¤¾ß£¬ÈçApache Tika£¬¿ÉÒÔ×÷ΪÊý¾Ý·þÎñµÄ²¹³äʵÏÖ¡£

ÒÀÀµºÍ°æ±¾¹ÜÀíÆ÷

¶ÔÓڹܵÀ¹ÜÀíÔ±À´Ëµ£¬¹ÜÀíºÍά»¤¹ÜµÀÉúÃüÖÜÆÚÊÇÒ»¼þºÜÖØÒªµÄÊÂÇ飬ͬʱҲºÜ¸´ÔÓ¡£ ΪÁ˽â¾ö¹ÜµÀ¹ÜÀí·½Ãæ´æÔÚµÄÍ´µã£¬ÒÀÀµºÍ°æ±¾¹ÜÀíÆ÷¿ÉÒÔ°ïÖúÓû§À´Î¬»¤¡¢¸ú×ٺͷÖÎö¹ÜµÀÊý¾ÝºÍ×é¼þµÄÀúÊ·ÐÅÏ¢¡£

ÒÀÀµºÍ°æ±¾¹ÜÀíÆ÷Ϊÿ¸ö¹ÜµÀά»¤ÁËÈýÖÖÀàÐ͵ÄÐÅÏ¢¡£¹ÜµÀÖ´Ðиú×Ù¹ý³ÌΪ¹ÜµÀÓ¦ÓóÌÐòµÄÿһ¸öÔËÐÐʵÀýά»¤ÁËÒ»¸öÊý¾ÝÁ÷ͼ¡£Ã¿¸öͼµÄ½Úµã¶¼°üº¬ÁËʵÀý×é¼þµÄÔªÊý¾Ý£¬±ÈÈçÆô¶¯Ê±¼ä¡¢½áÊøÊ±¼äºÍÔËÐÐ״̬¡£

ͼ4. ÔÚPipeline61ÖÐά»¤µÄÀúÊ·ºÍÒÀÀµÐÅÏ¢£¬µÚÒ»²¿·Ö¡£¹ÜµÀÖ´Ðиú×Ù¹ý³ÌΪ¹ÜµÀÓ¦ÓóÌÐòµÄÿһ¸öÔËÐÐʵÀýά»¤ÁËÒ»¸öÊý¾ÝÁ÷ͼ¡£

¹ÜµÀÒÀÀµ¸ú×Ù¹ý³Ì(ͼ5a)Ϊÿ¸ö¹ÜµÀ×é¼þµÄ²»Í¬°æ±¾Î¬»¤×ÅÀúÊ·ÔªÊý¾Ý¡£Ëü½«Ã¿¸ö×é¼þµÄÒÀÀµÐÅÏ¢±£´æ³ÉÊ÷×´½á¹¹¡£±£´æÔÚÊ÷ÖеÄÔªÊý¾Ý°üº¬ÁË×î½ü¸üеÄÃû×Ö¡¢°æ±¾¡¢×÷Õß¡¢Ê±¼ä´Á£¬ÒÔ¼°ÔËÐÐÒÀÀµ°ü¡£

ͼ5. ÔÚPipeline61ÖÐά»¤µÄÀúÊ·ºÍÒÀÀµÐÅÏ¢£¬µÚ¶þ²¿·Ö¡£(a) ¹ÜµÀÒÀÀµ¸ú×Ù¹ý³ÌΪÿ¸ö¹ÜµÀ×é¼þµÄ²»Í¬°æ±¾Î¬»¤×ÅÀúÊ·ÔªÊý¾Ý¡£(b) Êý¾Ý¿ìÕÕ°üº¬Á˹ܵÀÓ¦ÓóÌÐòÿһ¸öÔËÐÐʵÀýµÄÊäÈëÊä³öλÖúÍÑù±¾Êý¾Ý¡£

Êý¾Ý¿ìÕÕ£¨Í¼5b£©°üº¬Á˹ܵÀÓ¦ÓóÌÐòÿһ¸öÔËÐÐʵÀýµÄÊäÈëÊä³öλÖúÍÑù±¾Êý¾Ý¡£

Pipeline61Óû§¿ÉÒÔͨ¹ýÕâЩÀúÊ·ÐÅÏ¢À´·ÖÎö¹ÜµÀÀúÊ·£¬²¢Í¨¹ýÖØÐÂÔËÐоɰ汾µÄ¹ÜµÀÀ´ÖØÐÂÉú³ÉÀúÊ·½á¹û¡£

°¸Àýѧϰ

ÒÔϵݸÀýѧϰչʾÁËPipeline61µÄЧÂʺÍÓÅÊÆ¡£Ê¾ÀýʹÓÃÁËÀ´×Ô²»Í¬×éÖ¯µÄÈýÖÖ¸ñʽµÄÊý¾ÝÔ´£¬°üÀ¨CSV¡¢Îı¾ºÍJSON¡£Á½×éÊý¾Ý¿ÆÑ§¼ÒʹÓÃÉÙÁ¿ÊÖдµÄMapReduceºÍPython³ÌÐòÀ´¶ÔÕûÌåÊý¾Ý¼¯½øÐзÖÎö¡£ÎÒÃÇÒýÈëÁËÎÒÃǵĹܵÀ¿ò¼Ü£¬ÓÃÓÚ×Ô¶¯Ö´ÐйܵÀÈÎÎñºÍ¹ÜµÀ¹ÜÀí¡£Í¼6չʾÁËÎÒÃÇÊÇÈçºÎÔÚPipeline61ÀïÖ¸¶¨¹ÜµÀµÄ¡£

ͼ6. ÔÚPipeline61ÀïÖ¸¶¨¹ÜµÀ¡£ÔÚÏà¹ØµÄ°¸ÀýѧϰÀÁ½×éÊý¾Ý¿ÆÑ§¼ÒʹÓÃÉÙÁ¿ÊÖдµÄMapReduceºÍPython³ÌÐòÀ´¶ÔÕûÌåÊý¾Ý¼¯½øÐзÖÎö¡£

Ê×ÏÈ£¬ÎÒÃÇÖ¸¶¨ÁËÈýÖÖÊý¾ÝÓ³ÉäÆ÷¡ª¡ªcsvMapper¡¢jsonMapperºÍtextMapper¡ª¡ªÓÃÓÚ´¦Àí²»Í¬¸ñʽµÄÊäÈëÊý¾Ý¡£ÎÒÃÇÖ¸¶¨ÁËÈý¸öMapReduce pipe£¬²¢½«ÈýÖÖmapper·Ö±ð×÷ΪÊý¾Ý½âÎöÆ÷´«µÝ½øÈ¥¡£

½ÓÏÂÀ´£¬ÎÒÃÇʹÓÃRDDº¯ÊýDataJoinerProcÖ¸¶¨ÁËÒ»¸ö½Ð×÷dataJoinerµÄSpark pipe£¬ÓÃÓÚ×éºÏÈýÖÖmapperµÄÊä³ö½á¹û¡£

×îºó£¬ÎÒÃÇÖ¸¶¨ÁËÁ½×é·ÖÎöpipe×é¼þ£¬´ÓdataJoinerÄÇÀïÏû·ÑÊä³ö½á¹û¡£ÒòΪÿ¸ö·ÖÎö·ÖÖ§¹Ø×¢²»Í¬µÄÊäÈëÌØÕ÷£¬ÎÒÃÇΪÿ¸ö·ÖÎö×é¼þÌí¼ÓÁËÒ»¸öÌØÕ÷³éÈ¡Æ÷¡£È»ºóÎÒÃǽ«ÕâÁ½¸ö·ÖÎö×é¼þʵÏÖΪPython pipeºÍSpark pipe¡£×îºó£¬ÎÒÃÇʹÓÃÁ¬½Ó²Ù×÷½«ÕâЩpipeÁ¬½ÓÔÚÒ»Æð£¬×é³ÉÁËÕûÌåµÄÊý¾ÝÁ÷¡£

ÔÚÕâ¸ö³¡¾°ÀÈç¹ûʹÓÃÏÖÓеĹܵÀ¿ò¼Ü£¬±ÈÈçCrunchºÍCascading£¬ÄÇô¿ª·¢ÈËÔ±ÐèÒªÖØÐÂʵÏÖËùÓеĶ«Î÷¡£ÕâÑù×ö´æÔÚ·çÏÕ£¬Ò²·Ç³£ºÄʱ¡£Ëü²»½ö¶ÔÖØÓÃÒÑÓеÄMapReduce¡¢Python»òshell½Å±¾³ÌÐòÔì³ÉÏÞÖÆ£¬¶øÇÒÒ²¶ÔÊý¾Ý·ÖÎö¿ò¼Ü£¨ÈçIPythonºÍR£©µÄʹÓÃÔì³ÉÔ¼Êø¡£

Ïà·´£¬Pipeline61רעÓÚ¹ÜÀíºÍ¹ÜµÀ»¯Òì¹¹µÄ¹ÜµÀ×é¼þ£¬ËùÒÔËü¿ÉÒÔÏÔÖøµØ¼õÉÙ¼¯³ÉоÉÊý¾Ý´¦Àí×é¼þËùÐèÒªµÄͶÈë¡£

¹ÜµÀºóÐøµÄ¿ª·¢ºÍ¸üÐÂÒ²»á´ÓPipeline61µÄ°æ±¾ºÍÒÀÀµ¹ÜÀíÖлñµÃºÃ´¦¡£ÀýÈ磬Èç¹û¿ª·¢ÈËÔ±ÏëÒª¸üÐÂÒ»¸ö×é¼þ£¬ËûÃÇ¿ÉÒÔ´ÓÊý¾Ý¿ìÕÕÀúÊ·ÖлñµÃ×é¼þ×îеÄÊäÈëºÍÊä³öÑù±¾¡£È»ºó£¬ËûÃÇ»ùÓÚÑù±¾Êý¾ÝʵÏֺͲâÊÔеijÌÐò£¬È·±£Ð°汾×é¼þ²»»á¶Ô¹ÜµÀÔì³ÉÆÆ»µ¡£

ÔÚ½«¸üйýµÄ×é¼þÌá½»µ½Éú²ú»·¾³Ö®Ç°£¬¿ª·¢ÈËÔ±¿ÉÒÔΪÐÂ×é¼þÖ¸¶¨Ò»¸öеĹܵÀʵÀý£¬²¢½«ËüµÄÊä³ö½á¹ûÓëÉú²ú»·¾³µÄ°æ±¾½øÐбȽϣ¬¶ÔÕýÈ·ÐÔ½øÐÐË«ÖØ¼ì²é¡£³ý´ËÖ®Í⣬Èç¹ûÐÂ×é¼þÔÚ²¿ÊðÖ®ºó³öÏÖ´íÎ󣬹ܵÀ¹ÜÀíÆ÷¿ÉÒÔºÜÈÝÒ׵ػعöµ½Ç°Ò»¸ö°æ±¾¡£¹ÜµÀ·þÎñÆ÷×Ô¶¯Î¬»¤×Åÿ¸ö×é¼þµÄÀúÊ·Êý¾ÝºÍÒÀÀµ£¬ËùÒÔ¿ÉÒÔʵÏֻعö¡£

ÕâÖÖDevOps·ç¸ñµÄÖ§³Ö¶ÔÓÚά»¤ºÍ¹ÜÀí¹ÜµÀÓ¦ÓóÌÐòÀ´ËµÊǺÜÓÐÒâÒåµÄ£¬¶øÏÖÓеĹܵÀ¿ò¼ÜºÜÉÙ»áÌṩÕâЩ֧³Ö¡£

²»¹ýPipeline61Ò²´æÔÚ²»×ã¡£Ëü²»¼ì²é¸÷¸öÊý¾Ý´¦Àí¿ò¼ÜÊý¾Ý½á¹¹µÄ¼æÈÝÐÔ¡£µ½Ä¿Ç°ÎªÖ¹£¬¿ª·¢ÈËÔ±ÔÚ½øÐйܵÀ¿ª·¢Ê±£¬±ØÐëÊÖ¶¯¶Ôÿ¸öpipeµÄÊäÈëºÍÊä³ö½øÐÐÊÖ¶¯²âÊÔ£¬È·±£Ò»¸öpipeµÄÊä³ö¿ÉÒÔ×÷ΪÏÂÒ»¸öpipeµÄÊäÈ롣ΪÁ˽â¾öÕâ¸öÎÊÌ⣬ÎÒÃÇ´òËãʹÓÃÏÖÓеĽṹƥÅ䣨schema-matching£©¼¼Êõ¡£

µ±È»£¬ÔڹܵÀÔËÐÐÆÚ¼ä£¬´ó²¿·ÖÖмä½á¹ûÐèÒª±»Ð´µ½µ×²ãµÄÎïÀíÊý¾Ý´æ´¢£¨ÈçHDFS£©ÀÓÃÓÚÁ¬½Ó²»Í¬ÔËÐÐÉÏÏÂÎĵÄpipe£¬Í¬Ê±±£Ö¤¹ÜµÀ×é¼þµÄ¿É¿¿ÐÔ¡£Òò´Ë£¬Pipeline61µÄ¹ÜµÀÔËÐÐ±ÈÆäËû¿ò¼ÜÒªÂý£¬ÒòΪÆäËû¿ò¼Ü¶ÀÁ¢ÔËÐÐÔÚÒ»¸öµ¥¶ÀµÄ»·¾³ÖУ¬²»ÐèÒªÓëÍⲿϵͳ¼¯³É¡£ÎÒÃÇ¿ÉÒÔͨ¹ýÖ»±£´æÖØÒªµÄÊý¾ÝÀ´½â¾öÕâ¸öÎÊÌâ¡£²»¹ý£¬ÕâÐèÒªÔÚ¿É¿¿ÐÔºÍÀúÊ·¹ÜÀíÍêÕûÐÔÖ®¼ä×ö³öȨºâ¡£

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

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

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

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