±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn£¬±¾ÎĽéÉÜÁËÃÀͼÔڴÍêÊý¾Ýƽ̨²¢¿ª·Å¸ø¸÷¸öÒµÎñÏßʹÓÃºó£¬¶ÔÆ½Ì¨Îȶ¨ÐÔ×öµÄһЩʵ¼ùºÍÓÅ»¯¡£ |
|
Èç½ñ´óÊý¾ÝÔÚ¸÷ÐÐÒµµÄÓ¦ÓÃÔ½À´Ô½¹ã·º£ºÔËÓª»ùÓÚÊý¾Ý¹Ø×¢ÔËӪЧ¹û£¬²úÆ·»ùÓÚÊý¾Ý·ÖÎö¹Ø×¢×ª»¯ÂÊÇé¿ö£¬¿ª·¢»ùÓÚÊý¾ÝºâÁ¿ÏµÍ³ÓÅ»¯Ð§¹ûµÈ¡£ÃÀͼ¹«Ë¾ÓÐÃÀÅÄ¡¢ÃÀͼÐãÐã¡¢ÃÀÑÕÏà»úµÈÊ®¼¸¸ö
app£¬Ã¿¸ö app ¶¼»á»ùÓÚÊý¾Ý×ö¸öÐÔ»¯ÍƼö¡¢ËÑË÷¡¢±¨±í·ÖÎö¡¢·´×÷±×¡¢¹ã¸æµÈ£¬ÕûÌå¶ÔÊý¾ÝµÄÒµÎñÐèÇó±È½Ï¶à¡¢Ó¦ÓÃÒ²±È½Ï¹ã·º¡£
Òò´ËÃÀͼÊý¾Ý¼¼ÊõÍŶӵÄÒµÎñ±³¾°Ö÷ÒªÌåÏÖÔÚ£ºÒµÎñÏß¶àÒÔ¼°Ó¦ÓñȽϹ㷺¡£ÕâÒ²ÊÇ´ÙʹÎÒÃǴÊý¾Ýƽ̨µÄÒ»¸ö×îÖ÷ÒªµÄÔÒò£¬ÓÉÒµÎñÇý¶¯¡£

¾Ù¼¸¸öÃÀͼµÄÊý¾ÝÓ¦Óð¸Àý¡£Èçͼ 1 Ëùʾ£¬×óÆðµÚÒ»ÕÅÊÇÃÀͼ×ÔÑеÄÊý¾Ý¿ÉÊÓ»¯Æ½Ì¨
DataFace£¬Ö§³ÖÒµÎñ·½×ÔÓÉÍÏ×§Éú³É¿ÉÊÓ»¯±¨±í£¬±ãÓÚ¸ßЧµÄ×öÊý¾Ý±¨±íÒÔ¼°ºóÐøµÄ·ÖÎö£»µÚ¶þÕÅÊÇÃÀÅÄ
APP µÄÊ×Ò³£¬ÈÈßöÐÔ»¯ÍƼö£¬»ùÓÚÓÃÓÚµÄÐÐΪÊý¾Ý£¬ÎªÓû§ÍƼö¿ÉÄÜϲ»¶¡¢¸ÐÐËȤµÄÊÓÆµÁÐ±í£»µÚÈýÕÅÊÇ»ùÓÚÓû§µÄ×÷±×µÄÊý¾Ý£¬¸ù¾ÝÒ»¶¨µÄÄ£ÐÍÓë²ßÂÔ½øÐз´×÷±×£¬ÓÐЧÅжϡ¢¹ýÂËÓû§µÄ×÷±×ÐÐΪ¡£³ý´ËÖ®Í⣬°üÀ¨ËÑË÷¡¢a/b
ʵÑé¡¢ÇþµÀ¸ú×Ù¡¢¹ã¸æµÈ·½Ãæ¶¼Óй㷺ӦÓá£
µ±Ç°ÃÀͼÿÔÂÓÐ 5 ÒÚ»îÔ¾Óû§£¬ÕâЩÓû§Ã¿Ìì²úÉú½Ó½ü 200 ÒÚÌõµÄÐÐΪÊý¾Ý£¬ÕûÌåµÄÁ¿¼¶Ïà¶ÔÀ´Ëµ»¹ÊDZȽϴ󣬼¯Èº»úÆ÷´ïµ½Ç§Á¿¼¶£¬ÒÔ¼°ÓÐ
PB ¼¶µÄÀúÊ·×ÜÊý¾ÝÁ¿¡£
ÃÀͼÓбȽ϶àµÄÒµÎñÏߣ¬²¢ÇÒ¸÷ÒµÎñÏ߱ȽϹ㷺µØÔËÓõ½Êý¾Ý£¬ÒÔ¼°ÕûÌåµÄÓû§¹æÄ£±È½Ï´ó£¬ÒÔÉÏÒòËØ¶¼´ÙʹÎÒÃDZØÐë¹¹½¨¶ÔÓ¦µÄÊý¾Ýƽ̨£¬À´Çý¶¯ÕâЩҵÎñÔö³¤£¬¸ü¸ßЧµØÊ¹ÓÃÊý¾Ý¡£
ÃÀͼÊý¾Ýƽ̨ÕûÌå¼Ü¹¹
Èçͼ 2 ËùʾÊÇÎÒÃÇÊý¾Ýƽ̨µÄÕûÌå¼Ü¹¹¡£ÔÚÊý¾ÝÊÕ¼¯Õⲿ·Ö£¬ÎÒÃǹ¹½¨Ò»Ìײɼ¯·þÎñ¶ËÈÕ־ϵͳ Arachnia£¬Ö§³Ö¸÷
app ¼¯³ÉµÄ¿Í»§¶Ë SDK£¬¸ºÔðÊÕ¼¯ app ¿Í»§¶ËÊý¾Ý£»Í¬Ê±Ò²ÓлùÓÚ DataX ʵÏÖµÄÊý¾Ý¼¯³É£¨µ¼Èëµ¼³ö£©£»Mor
ÅÀ³æÆ½Ì¨Ö§³Ö¿ÉÅäÖõÄÅÀÈ¡¹«ÍøÊý¾ÝµÄÈÎÎñ¿ª·¢¡£

Êý¾Ý´æ´¢²ãÖ÷ÒªÊǸù¾ÝÒµÎñÌØµãÀ´Ñ¡Ôñ²»Í¬µÄ´æ´¢·½°¸£¬Ä¿Ç°Ö÷ÒªÓÐÓõ½ HDFS¡¢MongoDB¡¢Hbase¡¢ES
µÈ¡£ÔÚÊý¾Ý¼ÆË㲿·Ö£¬µ±Ç°ÀëÏß¼ÆËãÖ÷Òª»¹ÊÇ»ùÓÚ Hive&MR¡¢ÊµÊ±Á÷¼ÆËãÊÇ Storm ¡¢
Flink ÒÔ¼°»¹ÓÐÁíÍâÒ»¸ö×ÔÑÐµÄ bitmap ϵͳ Naix¡£
ÔÚÊý¾Ý¿ª·¢Õâ¿éÎÒÃǹ¹½¨ÁËÒ»Ì×Êý¾Ý¹¤·»¡¢Êý¾Ý×ÜÏß·Ö·¢¡¢ÈÎÎñµ÷¶ÈµÈƽ̨¡£Êý¾Ý¿ÉÊÓ»¯ÓëÓ¦Óò¿·ÖÖ÷ÒªÊÇ»ùÓÚÓû§ÐèÇó¹¹½¨Ò»ÏµÁÐÊý¾ÝÓ¦ÓÃÆ½Ì¨£¬°üÀ¨£ºA/B
ʵÑéÆ½Ì¨¡¢ÇþµÀÍÆ¹ã¸ú×ÙÆ½Ì¨¡¢Êý¾Ý¿ÉÊÓ»¯Æ½Ì¨¡¢Óû§»ÏñµÈµÈ¡£
ͼ 2 ÓÒ²àչʾµÄÊÇһЩ¸÷×é¼þ¶¼¿ÉÄÜÒÀÀµµÄ»ù´¡·þÎñ£¬°üÀ¨µØÀíλÖá¢ÔªÊý¾Ý¹ÜÀí¡¢Î¨Ò»É豸±êʶµÈ¡£
Èçͼ 3 ËùʾÊÇ»ù±¾µÄÊý¾Ý¼Ü¹¹Á÷ͼ£¬µäÐ굀 lamda ¼Ü¹¹£¬´Ó×ó¶ËÊý¾ÝÔ´ÊÕ¼¯¿ªÊ¼£¬Arachnia¡¢AppSDK
·Ö±ð½«·þÎñ¶Ë¡¢¿Í»§¶ËÊý¾ÝÉϱ¨µ½´úÀí·þÎñ collector£¬Í¨¹ý½âÎöÊý¾ÝÐÒ飬°ÑÊý¾Ýдµ½ kafka£¬È»ºóʵʱÁ÷»á¾¹ýÒ»²ãÊý¾Ý·Ö·¢£¬×îÖÕÒµÎñÏû·Ñ
kafka Êý¾Ý½øÐÐʵʱ¼ÆËã¡£

ÀëÏß»áÓÉ ETL ·þÎñ¸ºÔð´Ó Kafka dump Êý¾Ýµ½ HDFS£¬È»ºóÒì¹¹Êý¾ÝÔ´£¨±ÈÈç
MySQL¡¢Hbase µÈ£©Ö÷Òª»ùÓÚ DataX ÒÔ¼° Sqoop ½øÐÐÊý¾ÝµÄµ¼Èëµ¼³ö£¬×îÖÕͨ¹ý hive¡¢kylin¡¢spark
µÈ¼ÆËã°ÑÊý¾ÝдÈëµ½¸÷ÀàµÄ´æ´¢²ã£¬×îºóͨ¹ýͳһµÄ¶ÔÍâ API ¶Ô½ÓÒµÎñϵͳÒÔ¼°ÎÒÃÇ×Ô¼ºµÄ¿ÉÊÓ»¯Æ½Ì¨µÈ¡£
Êý¾Ýƽ̨µÄ½×¶ÎÐÔ·¢Õ¹
ÆóÒµ¼¶Êý¾Ýƽ̨½¨ÉèÖ÷Òª·ÖÈý¸ö½×¶Î£º
1.¸Õ¿ªÊ¼ÊÇ»ù±¾Ê¹ÓÃÃâ·ÑµÄµÚÈý·½Æ½Ì¨£¬Õâ¸ö½×¶ÎµÄÌØµãÊÇÄÜ¿ìËÙ¼¯³É²¢¿´µ½
app µÄһЩͳ¼ÆÖ¸±ê£¬µ«ÊÇȱµãÒ²ºÜÃ÷ÏÔ£¬Ã»ÓÐÔʼÊý¾Ý³ýÁËÄÇЩµÚÈý·½ÌṩµÄ»ù±¾Ö¸±êÆäËû·ÖÎö¡¢ÍƼöµÈ¶¼ÎÞ·¨ÊµÏÖ¡£ËùÒÔÓдÓ
0 µ½ 1 µÄ¹ý³Ì£¬ÈÃÎÒÃÇ×Ô¼ºÓÐÊý¾Ý¿ÉÒÔÓã»
2.ÔÚÓÐÊý¾Ý¿ÉÓúó£¬ÒòΪҵÎñÏß¡¢ÐèÇóÁ¿µÄ±¬·¢£¬ÐèÒªÌá¸ß¿ª·¢Ð§ÂÊ£¬Èøü¶àµÄÈ˲ÎÓëÊý¾Ý¿ª·¢¡¢Ê¹Óõ½Êý¾Ý£¬¶ø²»½ö½ö¾ÖÏÞÓÚÊý¾ÝÑз¢ÈËԱʹÓã¬ËùÒÔ¾ÍÉæ¼°µ½°ÑÊý¾Ý¡¢¼ÆËã´æ´¢ÄÜÁ¦¿ª·Å¸ø¸÷¸öÒµÎñÏߣ¬¶ø²»ÊÇÎÕÔÚ×Ô¼ºÊÖÉÏ£»
3.ÔÚµ±Êý¾Ý¿ª·ÅÁËÒÔºó£¬ÒµÎñ·½»áÒªÇóÊý¾ÝÈÎÎñÄÜ·ñÅܵøü¿ì£¬ÄÜ·ñÃë³ö£¬ÄÜ·ñ¸üʵʱ£»ÁíÍâÒ»·½Ã棬ΪÁËÂú×ãÒµÎñÐèÇó¼¯ÈºµÄ¹æÄ£Ô½À´Ô½´ó£¬Òò´Ë»á¿ªÊ¼¿¼ÂÇÂú×ãÒµÎñµÄͬʱ£¬ÈçºÎʵÏÖ¸ü½ÚÊ¡×ÊÔ´¡£
ÃÀͼÏÖÔÚÊÇ´¦ÓÚµÚ¶þÓëµÚÈý½×¶ÎµÄ¹ý¶ÉÆÚ£¬ÔÚ²»¶ÏÍêÉÆÊý¾Ý¿ª·ÅµÄͬʱ£¬Ò²Öð²½ÌáÉý²éѯ·ÖÎöЧÂÊ£¬ÒÔ¼°¿ªÊ¼¿¼ÂÇÈçºÎ½øÐÐÓÅ»¯³É±¾¡£½ÓÏÂÀ´»áÖØµã½éÉÜ
0 µ½ 1 ÒÔ¼°Êý¾Ý¿ª·ÅÕâÁ½¸ö½×¶ÎÎÒÃÇÆ½Ì¨µÄʵ¼ùÒÔ¼°ÓÅ»¯Ë¼Â·¡£
´Ó 0 µ½ 1
´Ó 0 µ½ 1 ½â¾ö´ÓÊý¾Ý²É¼¯µ½×îÖÕ¿ÉÒÔʹÓÃÊý¾Ý¡£Èçͼ 4 ËùʾÊÇÊý¾ÝÊÕ¼¯µÄÑݽø¹ý³Ì£¬´Ó¸Õ¿ªÊ¼Ê¹ÓÃÀàËÆ
umeng¡¢flurry ÕâÀàµÄÃâ·ÑµÚÈý·½Æ½Ì¨£¬µ½ºóÃæ¿ìËÙʹÓà rsync ͬ²½ÈÕÖ¾µ½Ò»Ì¨·þÎñÆ÷ÉÏ´æ´¢¡¢¼ÆË㣬ÔÙµ½ºóÃæ¿ìËÙ¿ª·¢ÁËÒ»¸ö¼òµ¥µÄpython½Å±¾Ö§³ÖÒµÎñ·þÎñÆ÷Éϱ¨ÈÕÖ¾£¬×îÖÕÎÒÃÇ¿ª·¢ÁË·þÎñ¶ËÈÕÖ¾²É¼¯ÏµÍ³
Arachnia ÒÔ¼°¿Í»§¶Ë AppSDK¡£

Êý¾Ý²É¼¯ÊÇÊý¾ÝµÄÔ´Í·£¬ÔÚÕû¸öÊý¾ÝÁ´Â·ÖÐÊÇÏà¶ÔÖØÒªµÄ»·½Ú£¬ÐèÒª¸ü¶à¹Ø×¢£ºÊý¾ÝÊÇ·ñÍêÕû¡¢Êý¾ÝÊÇ·ñÖ§³ÖʵʱÉϱ¨¡¢Êý¾ÝÂñµãÊÇ·ñ¹æ·¶×¼È·¡¢ÒÔ¼°Î¬»¤¹ÜÀí³É±¾¡£Òò´ËÎÒÃǵÄÈÕÖ¾²É¼¯ÏµÍ³ÐèÒªÂú×ãÒÔÏÂÐèÇó£º
1.Äܼ¯³É¹ÜÀíά»¤£¬°üÀ¨ Agent ÄÜ×Ô¶¯»¯²¿Êð°²×°Éý¼¶Ð¶ÔØ¡¢ÅäÖÃÈȸü¡¢ÑÓ³Ù·½ÃæµÄ¼à¿Ø£»
2.ÔÚ¿É¿¿ÐÔ·½ÃæÖÁÉÙÐèÒª±£Ö¤ at least once£»
3.ÃÀͼÏÖÔÚÓжà IDC µÄÇé¿ö£¬ÐèÒªÄÜÖ§³Ö¶à¸ö IDC Êý¾Ý²É¼¯»ã×ܵ½Êý¾ÝÖÐÐÄ£»
4.ÔÚ×ÊÔ´ÏûºÄ·½Ã澡Á¿Ð¡£¬¾¡Á¿×öµ½²»Ó°ÏìÒµÎñ¡£
»ùÓÚÒÔÉÏÐèÇóÎÒÃÇûÓÐʹÓà flume¡¢scribe¡¢fluentd£¬×îÖÕÑ¡Ôñ×Ô¼º¿ª·¢Ò»Ìײɼ¯ÏµÍ³
Arachnia¡£

ͼ 5 ÊÇ Arachnia µÄ¼òÒ׼ܹ¹Í¼£¬Ëüͨ¹ýϵͳ´óÄÔ½øÐм¯ÖÐʽ¹ÜÀí¡£puppet Ä£¿éÖ÷Òª×÷Ϊµ¥¸ö
IDC ÄÚͳһ»ã×Ü Agent µÄ metrics£¬ÖÐתת·¢µÄ metrics »òÕßÅäÖÃÈȸüÃüÁî¡£²É¼¯Æ÷
Agent Ö÷ÒªÊÇÔËάƽ̨¸ºÔð°²×°¡¢Æô¶¯ºó´Ó brain ÀÈ¡µ½ÅäÖ㬲¢¿ªÊ¼²É¼¯Éϱ¨Êý¾Ýµ½ collector¡£
½Ó×Å¿´ Arachnia µÄʵ¼ùÓÅ»¯£¬Ê×ÏÈÊÇ at least once µÄ¿É¿¿ÐÔ±£Ö¤¡£²»ÉÙµÄϵͳ¶¼ÊDzÉÓðÑÉϱ¨Ê§°ÜµÄÊý¾Ýͨ¹ý
WAL µÄ·½Ê½¼Ç¼ÏÂÀ´£¬ÖØÊÔÔÙÉϱ¨£¬ÒÔÃâÉϱ¨Ê§°Ü¶ªÊ§¡£ÎÒÃǵÄʵ¼ùÊÇÈ¥µô WAL£¬Ôö¼ÓÁË coordinator
À´Í³Ò»µÄ·Ö·¢¹ÜÀí tx ״̬¡£

¿ªÊ¼²É¼¯Ç°»á´Ó coordinator ·¢³ö txid£¬source ½ÓÊÕµ½Ðźźó¿ªÊ¼²É¼¯£¬²¢½»ÓÉ
sink ·¢ËÍÊý¾Ý£¬·¢Ëͺó»áack tx£¬¸æËß coordinator ÒѾ commit¡£coordinator
»á½øÐÐУÑéÈ·ÈÏ£¬È»ºóÔÙ·¢ËÍ commit µÄÐźŸø source¡¢sink ¸üÐÂ״̬£¬×îÖÕ tx Íê
source »á¸üвɼ¯½ø¶Èµ½³Ö¾Ã²ã£¨Ä¬ÈÏÊDZ¾µØ file£©¡£¸Ã·½Ê½Èç¹ûÔÚÇ°Ãæ 3 ²½ÓÐÎÊÌ⣬ÔòÊý¾ÝûÓз¢Ëͳɹ¦£¬²»»áÖØ¸´Ö´ÐУ»Èç¹ûºóÃæ
4 ¸ö²½Öèʧ°Ü£¬ÔòÊý¾Ý»áÖØ¸´£¬¸Ã tx »á±»ÖØ·Å¡£
»ùÓÚÉÏÎÄµÄ at least once ¿É¿¿ÐÔ±£Ö¤£¬ÓÐЩҵÎñ·½ÊÇÐèҪΨһÐԵģ¬ÎÒÃÇÕâ±ßÖ§³ÖΪÿÌõÈÕÖ¾Éú³ÉΨһ
ID ±êʶ¡£ÁíÍâÒ»¸öÊý¾Ý²É¼¯ÏµÍ³µÄÖ÷Ҫʵ¼ùÊÇ£ºÎ¨Ò»¶¨Î»Ò»¸öÎļþÒÔ¼°¸øÃ¿ÌõÈÕÖ¾×öΨһµÄ MsgID£¬·½±ãÒµÎñ·½¿ÉÒÔ»ùÓÚ
MsgID ÔÚ·¢ÉúÈÕÖ¾ÖØ¸´Ê±ÄÜÔÚºóÃæ×öÇåÏ´¡£
ÎÒÃÇÒ»¿ªÊ¼ÊÇʹÓà filename£¬ºóÃæ·¢ÏÖ filename ºÜ¶àÒµÎñ·½¶¼»á±ä¸ü£¬ËùÒÔ¸ÄΪ
inode£¬µ«ÊÇ inode linux »á»ØÊÕÖØ¸´ÀûÓã¬×îºóÊÇÒÔ inode & ÎļþÍ·²¿ÄÚÈÝ×ö
hash À´×÷ΪfileID¡£¶ø MsgID ÊÇͨ¹ý agentID & fileID &
offset À´Î¨Ò»È·ÈÏ¡£
Êý¾ÝÉϱ¨Ö®ºóÓÉ collector ¸ºÔð½âÎöÐÒéÍÆËÍÊý¾Ýµ½ Kafka£¬ÄÇô Kafka ÈçºÎÂ䵨µ½
HDFS ÄØ£¿ Ê×ÏÈ¿´ÃÀͼµÄËßÇó£º
1.Ö§³Ö·Ö²¼Ê½´¦Àí£»
2.Éæ¼°µ½½Ï¶àÒµÎñÏßÒò´ËÓжàÖÖÊý¾Ý¸ñʽ£¬ËùÒÔÐèÒªÖ§³Ö¶àÖÖÊý¾Ý¸ñʽµÄÐòÁл¯£¬°üÀ¨
json¡¢avro¡¢ÌØÊâ·Ö¸ô·ûµÈ£»
3.Ö§³ÖÒòΪ»úÆ÷¹ÊÕÏ¡¢·þÎñÎÊÌâµÈµ¼ÖµÄÊý¾ÝÂäµØÊ§°ÜÖØÅÜ£¬¶øÇÒÐèÒªÄÜÓбȽϿìËÙµÄÖØÅÜÄÜÁ¦£¬ÒòΪһµ©Õâ¿é¹ÊÕÏ£¬»áÓ°Ïìµ½ºóÐø¸÷¸öÒµÎñÏßµÄÊý¾ÝʹÓã»
4.Ö§³Ö¿ÉÅäÖÃµÄ HDFS ·ÖÇø²ßÂÔ£¬ÄÜÖ§³Ö¸÷¸öÒµÎñÏßÏà¶ÔÁé»îµÄ¡¢²»Ò»ÑùµÄ·ÖÇøÅäÖã»
5.Ö§³ÖÒ»Ð©ÌØÊâµÄÒµÎñÂß¼´¦Àí£¬°üÀ¨£ºÊý¾ÝУÑé¡¢¹ýÆÚ¹ýÂË¡¢²âÊÔÊý¾Ý¹ýÂË¡¢×¢ÈëµÈ£»
»ùÓÚÉÏÊöËßÇóÍ´µã£¬ÃÀͼ´Ó Kafka Â䵨µ½ HDFS µÄÊý¾Ý·þÎñʵÏÖ·½Ê½Èçͼ 7 Ëùʾ¡£

»ùÓÚ Kafka ºÍ MR µÄÌØµã£¬Õë¶Ôÿ¸ö kafka topic
µÄ partition£¬×é×° mapper µÄ inputsplit£¬È»ºóÆðÒ»¸ö mapper ½ø³Ì´¦ÀíÏû·ÑÕâ¸öÅú´ÎµÄ
kafka Êý¾Ý£¬¾¹ýÊý¾Ý½âÎö¡¢ÒµÎñÂß¼´¦Àí¡¢Ð£Ñé¹ýÂË¡¢×îÖÕ¸ù¾Ý·ÖÇø¹æÔòÂäµØÐ´µ½Ä¿±ê HDFS Îļþ¡£Â䵨³É¹¦ºó»á°ÑÕâ´Î´¦ÀíµÄ
meta ÐÅÏ¢£¨°üÀ¨ topic¡¢partition¡¢¿ªÊ¼µÄ offset¡¢½áÊøµÄoffset£©´æ´¢µ½
MySQL¡£Ï´ÎÔÙ´¦ÀíµÄʱºò£¬»á´ÓÉϴδ¦ÀíµÄ½áÊøµÄ offset ¿ªÊ¼¶ÁÈ¡ÏûÏ¢£¬¿ªÊ¼ÐÂÒ»ÅúµÄÊý¾ÝÏû·ÑÂ䵨¡£
ʵÏÖÁË»ù±¾¹¦ÄܺóÄÑÃâ»áÓöµ½Ò»Ð©ÎÊÌ⣬±ÈÈ粻ͬµÄÒµÎñ topic µÄÊý¾ÝÁ¿¼¶ÊDz»Ò»ÑùµÄ£¬ÕâÑù»áµ¼ÖÂÒ»´ÎÈÎÎñÐèÒªµÈ´ý
partition Êý¾ÝÁ¿×î¶àÒÔ¼°´¦Àíʱ¼ä×µÄ mapper ½áÊø£¬²ÅÄܽáÊøÕû¸öÈÎÎñ¡£ÄÇÎÒÃÇÔõô½â¾öÕâ¸öÎÊÌâÄØ£¿ÏµÍ³Éè¼ÆÖÐÓиö²»³ÉÎÄÔÔòÊÇ£º·Ö¾Ã±ØºÏ¡¢ºÏ¾Ã±Ø·Ö£¬Õë¶ÔÊý¾ÝÇãбµÄÎÊÌâÎÒÃDzÉÓÃÁËÀàËÆµÄ˼·¡£

Ê×ÏȶÔÊý¾ÝÁ¿¼¶½ÏСµÄ partition ºÏ²¢µ½Ò»¸ö inputsplit£¬´ïµ½Ò»¸ö mapper
¿ÉÒÔ´¦Àí¶à¸öÒµÎñµÄ partition Êý¾Ý£¬×îÖÕÂäµØÐ´¶à·ÝÎļþ¡£

ÁíÍâ¶ÔÊý¾ÝÁ¿¼¶½Ï´óµÄ partition Ö§³Ö·Ö¶Î²ð·Ö£¬Æ½·Öµ½¶à¸ö
mapper ´¦Àíͬһ¸ö partition£¬ÕâÑù¾ÍʵÏÖÁ˸ü¾ùºâµÄ mapper ´¦Àí£¬ÄܸüºÃµØÓ¦¶ÔÒµÎñÁ¿¼¶µÄÍ»Ôö¡£
³ýÁËÊý¾ÝÇãбµÄÎÊÌ⣬»¹³öÏÖ¸÷ÖÖÔÒòµ¼ÖÂÊý¾Ý dump µ½ HDFS ʧ°ÜµÄÇé¿ö£¬±ÈÈçÒòΪ kafka
´ÅÅÌÎÊÌâ¡¢hadoop ¼¯Èº½Úµãå´»ú¡¢ÍøÂç¹ÊÕÏ¡¢Íⲿ·ÃÎÊȨÏ޵ȵ¼Ö¸à ETL ³ÌÐò³öÏÖÒì³££¬×îÖÕ¿ÉÄܵ¼ÖÂÒòΪδ
close HDFS Îļþµ¼ÖÂÎļþË𻵵ȣ¬ÐèÒªÖØÅÜÊý¾Ý¡£ÄÇÎÒÃǵÄÊý¾Ýʱ¼ä·ÖÇø»ù±¾¶¼ÊÇÒÔÌìΪµ¥Î»£¬ÓÃÔÀ´µÄ·½Ê½¿ÉÄܻᵼÖÂÒ»¸öÌìÁ£¶ÈµÄÎļþË𻵣¬½âÎöÎÞ·¨¶ÁÈ¡¡£

ÎÒÃDzÉÓÃÁË·ÖÁ½½×¶Î´¦ÀíµÄ·½Ê½£ºmapper 1 ÏȰÑÊý¾Ýдµ½Ò»¸öÁÙʱĿ¼£¬mapper
2 °Ñ Hdfs µÄÁÙʱĿ¼µÄÊý¾Ý append µ½Ä¿±êÎļþ¡£ÕâÑùµ± mapper1 ʧ°ÜµÄʱºò¿ÉÒÔÖ±½ÓÖØÅÜÕâ¸öÅú´Î£¬¶ø²»ÓÃÖØÅÜÕûÌìµÄÊý¾Ý£»µ±
mapper2 ʧ°ÜµÄʱºòÄÜÖ±½Ó´ÓÁÙʱĿ¼ merge Êý¾ÝÌæ»»×îÖÕÎļþ£¬¼õÉÙÁËÖØÐ ETL ÌìÁ£¶ÈµÄ¹ý³Ì¡£
ÔÚÊý¾ÝµÄʵʱ·Ö·¢¶©ÔÄдÈëµ½ kafka1 µÄÊý¾Ý»ù±¾ÊÇÿ¸öÒµÎñµÄÈ«Á¿Êý¾Ý£¬µ«ÊÇÕë¶ÔÐèÇ󷽴󲿷ÖÒµÎñ¶¼Ö»¹Ø×¢Ä³¸öʼþ¡¢Ä³Ð¡Àà±ðµÄÊý¾Ý£¬¶ø²»ÊÇÈκÎÒµÎñ¶¼Ïû·ÑÈ«Á¿Êý¾Ý×ö´¦Àí£¬ËùÒÔÎÒÃÇÔö¼ÓÁËÒ»¸öʵʱ·Ö·¢
Databus À´½â¾öÕâ¸öÎÊÌâ¡£

Databus Ö§³ÖÒµÎñ·½×Ô¶¨Òå·Ö·¢ rules ÍùÏÂÓ뵀 kafka ¼¯ÈºÐ´Êý¾Ý£¬·½±ãÒµÎñ·½¶©ÔÄ´¦Àí×Ô¼ºÏëÒªµÄÊý¾Ý£¬²¢ÇÒÖ§³Ö¸üСÁ£¶ÈµÄÊý¾ÝÖØ¸´ÀûÓá£

ͼ 12 ¿ÉÒÔ¿´³ö Databus µÄʵÏÖ·½Ê½£¬ËüµÄÖ÷Ìå»ùÓÚ Storm
ʵÏÖÁË databus topology¡£Databus ÓÐÁ½¸ö spout£¬Ò»¸öÖ§³ÖÀȡȫÁ¿ÒÔ¼°ÐÂÔöµÄ
rules£¬È»ºó¸üе½ÏÂÓεķַ¢ bolt ¸üлº´æ¹æÔò£¬ÁíÍâÒ»¸öÊÇ´Ó kafka Ïû·ÑµÄ spout¡£¶ø
distributionbolt Ö÷ÒªÊǸºÔð½âÎöÊý¾Ý¡¢¹æÔò match£¬ÒÔ¼°°ÑÊý¾ÝÍùÏÂÓ뵀 kafka
¼¯Èº·¢ËÍ¡£
Êý¾Ý¿ª·Å
ÓÐÁËÔʼÊý¾Ý²¢ÇÒÄÜ×öÀëÏß¡¢ÊµÊ±µÄÊý¾Ý¿ª·¢ÒÔºó£¬ËæÖ®¶øÀ´µÄÊÇÊý¾Ý¿ª·¢ÐèÇóµÄ¾®Å磬Êý¾ÝÑз¢ÍŶÓÓ¦½Ó²»Ï¾¡£ËùÒÔÎÒÃÇͨ¹ýÊý¾Ýƽ̨µÄ·½Ê½¿ª·ÅÊý¾Ý¼ÆËã¡¢´æ´¢ÄÜÁ¦£¬¸³ÓèÒµÎñ·½ÓÐÊý¾Ý¿ª·¢µÄÄÜÁ¦¡£
¶ÔʵÏÖÔªÊý¾Ý¹ÜÀí¡¢ÈÎÎñµ÷¶È¡¢Êý¾Ý¼¯³É¡¢DAG ÈÎÎñ±àÅÅ¡¢¿ÉÊÓ»¯µÈ²»Ò»Ò»×¸Êö£¬Ö÷Òª½éÉÜÊý¾Ý¿ª·Åºó£¬ÃÀͼ¶ÔÎȶ¨ÐÔ·½ÃæµÄʵ¼ùÐĵá£
Êý¾Ý¿ª·ÅºÍϵͳÎȶ¨ÐÔÊÇÏà°®ÏàɱµÄ¹ØÏµ£ºÒ»·½Ã棬¿ª·ÅÁËÖ®ºó²»ÔÙÊÇÓÐÊý¾Ý»ù´¡µÄÑз¢ÈËÔ±À´×ö£¬¾³£»áÓöµ½Ìá½»·Ç·¨¡¢¸ß×ÊÔ´ÏûºÄµÈÎÊÌâµÄÊý¾ÝÈÎÎñ£¬¸øµ×²ãµÄ¼ÆËã¡¢´æ´¢¼¯ÈºµÄÎȶ¨ÐÔÔì³ÉÁ˱ȽϴóµÄÀ§ÈÅ£»ÁíÍâÒ»·½Ã棬ÆäʵҲÊÇÒòΪÊý¾Ý¿ª·Å£¬²Å²»¶ÏÍÆ½øÎÒÃDZØÐëÌá¸ßϵͳÎȶ¨ÐÔ¡£
Õë¶Ô²»Éٵĸß×ÊÔ´¡¢·Ç·¨µÄÈÎÎñ£¬ÎÒÃÇÊ×ÏÈ¿¼ÂÇÄÜ·ñÔÚ HiveSQL ²ãÃæÄÜ×öһЩУÑé¡¢ÏÞÖÆ¡£Èçͼ 13
ËùʾÊÇ HiveSQL µÄÕû¸ö½âÎö±àÒëΪ¿ÉÖ´ÐÐµÄ MR µÄ¹ý³Ì£º

Ê×ÏÈ»ùÓÚ Antlr ×öÓï·¨µÄ½âÎö£¬Éú³É AST£¬½Ó×Å×öÓïÒå½âÎö£¬»ùÓÚAST
»áÉú³É JAVA ¶ÔÏó QueryBlock¡£»ùÓÚ QueryBlock Éú³ÉÂß¼¼Æ»®ºó×öÂß¼ÓÅ»¯£¬×îºóÉú³ÉÎïÀí¼Æ»®£¬½øÐÐÎïÀíÓÅ»¯ºó£¬×îÖÕת»»ÎªÒ»¸ö¿ÉÖ´ÐеÄ
MR ÈÎÎñ¡£
ÎÒÃÇÖ÷ÒªÔÚÓïÒå½âÎö½×¶ÎÉú³É QueryBlock ºó£¬Äõ½Ëü×öÁ˲»ÉÙµÄÓï¾äУÑ飬°üÀ¨£º·Ç·¨²Ù×÷¡¢²éѯÌõ¼þÏÞÖÆ¡¢¸ß×ÊÔ´ÏûºÄУÑéÅжϵȡ£
µÚ¶þ¸öÔÚÎȶ¨ÐÔ·½ÃæµÄʵ¼ù£¬Ö÷ÒªÊǶԼ¯ÈºµÄÓÅ»¯£¬°üÀ¨£º
1.ÎÒÃÇÍêÕûµØ¶Ô Hive¡¢Hadoop ¼¯Èº×öÁËÒ»´ÎÉý¼¶¡£Ö÷ÒªÊÇÒòΪ֮ǰÔڵͰ汾ÓÐ
fix һЩÎÊÌâÒÔ¼°ºÏ²¢Ò»Ð©ÉçÇøµÄ patch£¬ÔÚºóÃæÐ°汾¶¼ÓÐÐÞ¸´£»ÁíÍâÒ»¸öÔÒòÊÇа汾µÄÌØÐÔÒÔ¼°ÐÔÄÜ·½ÃæµÄÓÅ»¯¡£ÎÒÃǰÑ
Hive ´Ó 0.13 °æ±¾Éý¼¶µ½ 2.1 °æ±¾£¬Hadoop ´Ó 2.4 Éý¼¶µ½ 2.7£»
2.¶Ô Hive ×öÁË HA µÄ²¿ÊðÓÅ»¯¡£ÎÒÃÇ°Ñ HiveServer
ºÍ MetaStoreServer ²ð·Ö¿ªÀ´·Ö±ð²¿ÊðÁ˶à¸ö½Úµã£¬±ÜÃâºÏ²¢ÔÚÒ»¸ö·þÎñ²¿ÊðÔËÐÐÏ໥ӰÏ죻
3.֮ǰִÐÐÒýÇæ»ù±¾¶¼ÊÇ On MapReduce µÄ£¬ÎÒÃÇÒ²ÔÚ×ö
Hive On Spark µÄÇ¨ÒÆ£¬Öð²½°ÑÏßÉÏÈÎÎñ´Ó Hive On MR Çл»µ½ Hive On
Spark£»
4.ÀÒ»¸öÄÚ²¿·ÖÖ§¶ÔƽʱÓöµ½µÄһЩÎÊÌâ×ö bugfix »òºÏ²¢ÉçÇø
patch µÄÌØÐÔ£»
ÔÚÆ½Ì¨Îȶ¨ÐÔ·½ÃæµÄʵ¼ù×îºóÒ»²¿·ÖÊÇÌá¸ßȨÏÞ¡¢°²È«ÐÔ£¬·ÀÖ¹¶Ô¼¯Èº¡¢Êý¾ÝµÄ·Ç·¨·ÃÎÊ¡¢¹¥»÷µÈ¡£Ìá¸ßȨÏÞÖ÷Òª·ÖÁ½¿é£ºAPI
·ÃÎÊÓ뼯Ⱥ¡£

1.API Server £ºÉÏÎÄÌáµ½ÎÒÃÇÓÐ OneDataAPI£¬Ìṩ¸ø¸÷¸öÒµÎñϵͳ·ÃÎÊÊý¾ÝµÄͳһ
API¡£Õâ·½ÃæÖ÷ÒªÊǶîÍâʵÏÖÁËÒ»¸öͳһÈÏÖ¤ CA ·þÎñ£¬ÒµÎñϵͳ±ØÐë½ÓÈë CA Äõ½ token ºóÀ´·ÃÎÊOneDataAPI£¬OneDataAPI
ÔÚ CA ÑéÖ¤¹ýºó£¬ºÏ·¨µÄ²ÅÔÊÐíÕæÕý·ÃÎÊÊý¾Ý£¬´Ó¶ø·ÀÖ¹ÒµÎñϵͳ¿ÉÒÔÈÎÒâ·ÃÎÊËùÓÐÊý¾ÝÖ¸±ê¡£
2.¼¯Èº£ºÄ¿Ç°Ö÷ÒªÊÇ»ùÓÚ Apache Ranger À´Í³Ò»¸÷À༯Ⱥ£¬°üÀ¨
Kafka¡¢Hbase¡¢Hadoop µÈ×ö¼¯ÈºµÄÊÚȨ¹ÜÀíºÍά»¤£»
ÄǽÓÏÂÀ´¶ÔÊý¾Ýƽ̨½¨Éè¹ý³Ì×öÒ»¸ö¼òµ¥µÄ×ܽᡣ
1.Ê×ÏÈÔڴÊý¾Ýƽ̨֮ǰ£¬Ò»¶¨ÒªÏÈÁ˽âÒµÎñ£¬¿´ÒµÎñµÄÕûÌåÌåÁ¿ÊÇ·ñ±È½Ï´ó¡¢ÒµÎñÏßÊÇ·ñ±È½Ï¹ã¡¢ÐèÇóÁ¿ÊÇ·ñ¶àµ½ÑÏÖØÓ°ÏìÎÒÃǵÄÉú²úÁ¦¡£Èç¹û¶¼Êǿ϶¨´ð°¸£¬ÄÇ¿ÉÒÔ¿¼ÂǾ¡¿ì´î½¨Êý¾Ýƽ̨£¬ÒÔ¸ü¸ßЧ¡¢¿ìËÙÌá¸ßÊý¾ÝµÄ¿ª·¢Ó¦ÓÃЧÂÊ¡£Èç¹û±¾ÉíµÄÒµÎñÁ¿¼¶¡¢ÐèÇ󲻶࣬²»Ò»¶¨·ÇµÃÌ×´óÊý¾Ý»òÕߴ¶àôÍêÉÆµÄÊý¾Ýƽ̨£¬ÒÔ¿ìËÙÂú×ãÖ§³ÅÒµÎñÓÅÏÈ¡£
2.ÔÚÆ½Ì¨½¨Éè¹ý³ÌÖУ¬ÐèÒªÖØµã¹Ø×¢Êý¾ÝÖÊÁ¿¡¢Æ½Ì¨µÄÎȶ¨ÐÔ£¬±ÈÈç¹Ø×¢Êý¾ÝÔ´²É¼¯µÄÍêÕûÐÔ¡¢Ê±Ð§ÐÔ¡¢É豸µÄΨһ±êʶ£¬¶àÔÚÆ½Ì¨µÄÎȶ¨ÐÔ·½Ãæ×öÓÅ»¯ºÍʵ¼ù£¬ÎªÒµÎñ·½Ìṩһ¸öÎȶ¨¿É¿¿µÄƽ̨¡£
3.ÔÚÌá¸ß·ÖÎö¾ö²ßЧÂÊÒÔ¼°¹æÄ£Öð½¥À©´óºóÐèÒª¶Ô³É±¾¡¢×ÊÔ´×öһЩÓÅ»¯ºÍ˼¿¼¡£
|