񻵋
ѧϰÈçºÎÔÚÒì¹¹µÄÔËÐл·¾³ÀïʹÓÃ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µÄ¹ÜµÀÔËÐÐ±ÈÆäËû¿ò¼ÜÒªÂý£¬ÒòΪÆäËû¿ò¼Ü¶ÀÁ¢ÔËÐÐÔÚÒ»¸öµ¥¶ÀµÄ»·¾³ÖУ¬²»ÐèÒªÓëÍⲿϵͳ¼¯³É¡£ÎÒÃÇ¿ÉÒÔͨ¹ýÖ»±£´æÖØÒªµÄÊý¾ÝÀ´½â¾öÕâ¸öÎÊÌâ¡£²»¹ý£¬ÕâÐèÒªÔÚ¿É¿¿ÐÔºÍÀúÊ·¹ÜÀíÍêÕûÐÔÖ®¼ä×ö³öȨºâ¡£ |