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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÌÚѶTDW:´óÐÍHadoop¼¯ÈºÓ¦ÓÃ
 
×÷ÕߣºUri Margalit À´Ô´£ºInfoQ ·¢²¼ÓÚ£º2015-8-10
  2886  次浏览      27
 

TDW£¨Tencent distributed Data Warehouse£¬ÌÚѶ·Ö²¼Ê½Êý¾Ý²Ö¿â£©»ùÓÚ¿ªÔ´Èí¼þHadoopºÍHive½øÐй¹½¨£¬´òÆÆÁË´«Í³Êý¾Ý²Ö¿â²»ÄÜÏßÐÔÀ©Õ¹¡¢¿É¿ØÐÔ²îµÄ¾ÖÏÞ£¬²¢ÇÒ¸ù¾ÝÌÚѶÊý¾ÝÁ¿´ó¡¢¼ÆË㸴ÔÓµÈÌØ¶¨Çé¿ö½øÐÐÁË´óÁ¿ÓÅ»¯ºÍ¸ÄÔì¡£

TDW·þÎñ¸²¸ÇÁËÌÚѶ¾ø´ó²¿·ÖÒµÎñ²úÆ·£¬µ¥¼¯Èº¹æÄ£´ïµ½4400̨£¬CPU×ܺËÊý´ïµ½10Íò×óÓÒ£¬´æ´¢ÈÝÁ¿´ïµ½100PB£»Ã¿ÈÕ×÷ÒµÊý100¶àÍò£¬Ã¿ÈÕ¼ÆËãÁ¿4PB£¬×÷Òµ²¢·¢Êý2000×óÓÒ£»Êµ¼Ê´æ´¢Êý¾ÝÁ¿80PB£¬ÎļþÊýºÍ¿éÊý´ïµ½6Òڶࣻ´æ´¢ÀûÓÃÂÊ83%×óÓÒ£¬CPUÀûÓÃÂÊ85%×óÓÒ¡£¾­¹ýËÄÄê¶àµÄ³ÖÐøÍ¶ÈëºÍ½¨É裬TDWÒѾ­³ÉΪÌÚѶ×î´óµÄÀëÏßÊý¾Ý´¦ÀíÆ½Ì¨¡£

TDWµÄ¹¦ÄÜÄ£¿éÖ÷Òª°üÀ¨£ºHive¡¢MapReduce¡¢HDFS¡¢TDBank¡¢LhotseµÈ£¬Èçͼ1Ëùʾ¡£TDW CoreÖ÷Òª°üÀ¨´æ´¢ÒýÇæHDFS¡¢¼ÆËãÒýÇæMapReduce¡¢²éѯÒýÇæHive£¬·Ö±ðÌṩµ×²ãµÄ´æ´¢¡¢¼ÆËã¡¢²éѯ·þÎñ£¬²¢ÇÒ¸ù¾Ý¹«Ë¾ÒµÎñ²úÆ·µÄÓ¦ÓÃÇé¿ö½øÐÐÁ˺ܶàÉî¶È¶©Ñu¡£TDBank¸ºÔðÊý¾Ý²É¼¯£¬Ö¼ÔÚͳһÊý¾Ý½ÓÈëÈë¿Ú£¬Ìṩ¶àÑùµÄÊý¾Ý½ÓÈ뷽ʽ¡£LhotseÈÎÎñµ÷¶È‚SͳÊÇÕû¸öÊý¾Ý²Ö¿âµÄ×ܹܣ¬ÌṩһվʽÈÎÎñµ÷¶ÈÓë¹ÜÀí¡£

ͼ1 TDWµÄ¹¦ÄÜÄ£¿é

½¨Éèµ¥¸ö´ó¹æÄ£¼¯ÈºµÄÜ«Òò

Ëæ×ÅÒµÎñµÄ¿ìËÙÔö³¤£¬TDWµÄ½ÚµãÊýÒ²ÔÚÔö¼Ó£¬¶Ôµ¥¸ö´ó¹æÄ£Hadoop¼¯ÈºµÄÐèÇóÒ²Ô½À´Ô½Ç¿ÁÒ¡£TDWÐèÒª×öµ¥¸ö´ó¹æÄ£¼¯Èº£¬Ö÷ÒªÊÇ´ÓÊý¾Ý¹²Ïí¡¢¼ÆËã×ÊÔ´¹²Ïí¡¢¼õÇáÔËÓª¸ºµ£ºÍ³É±¾µÈÈþ¸ö·½üI¿¼ÂÇ¡£

1. Êý¾Ý¹²Ïí¡£TDW֮ǰÔÚ¶à¸öIDC²¿ÊðÊýÊ®¸ö¼¯Èº£¬Ö÷ÒªÊǸù¾ÝÒµÎñ·Ö±ð²¿Êð£¬ÕâÑùµ±Ò»¸öÒµÎñÐèÒªÆäËûÒµÎñµÄÊý¾Ý£¬»òÕßÐèÒª¹«¹²Êý¾Ýʱ£¬¾ÍÐèÒª¿ç¼¯Èº»òÕß¿ç IDC·ÃÎÊÊý¾Ý£¬ÕâÑù»áÕ¼ÓÃIDCÖ®¼äµÄÍøÂç´ø¿í¡£ÎªÁ˼õÉÙ¿çIDCµÄÊý¾Ý´«Ê䣬ÓÐʱ»á½«¹«¹²Êý¾ÝÈßÓà·Ö²¼µ½¶à¸öIDCµÄ¼¯Èº£¬ÕâÑùÓÖ»á´øÀ´´æ´¢¿Õ¼äÀË·Ñ¡£

2. ¼ÆËã×ÊÔ´¹²Ïí¡£µ±Ò»¸ö¼¯ÈºµÄ¼ÆËã×ÊÔ´ÓÉÓÚijЩܫÒò±äµÃ½ôÕÅʱ£¬ÀýÈçÐèÒªÊý¾Ý²¹Â¼Ê±£¬Õâ¸ö¼¯ÈºµÄ¼ÆËã×ÊÔ´¾Í×½½ó¼ûÖ⣬¶øÍ¬Ê±£¬ÁíÒ»¸ö¼¯ÈºµÄ¼ÆËã×ÊÔ´¿ÉÄÜ¿ÕÏУ¬µ«ÕâÁ½ÕßÖ®¼äûÓÐ×öµ½»¥Í¨ÓÐÎÞ¡£

3. ¼õÇáÔËÓª¸ºµ£ºÍ³É±¾¡£Ê®¼¸¸ö¼¯ÈºÍ¬Ê±ÐèÒªÎȶ¨ÔËÓª£¬¶øÇÒµ±Ò»¸ö¼¯ÈºµÄÎÊÌâ½â¾öʱ£¬Ò²ÐèÒª½â¾öÆäËû¼¯ÈºÒѾ­³öÏֵĻòÕßDZÔÚµÄÎÊÌâ¡£Ò»¸öHadoop°æ±¾ÒªÔÚÊ®¼¸¸ö¼¯ÈºÖðÒ»±ä¸ü£¬¼à¿Ø‚SͳҲҪÔÚÊ®¼¸¸ö¼¯ÈºÉϲ¿Êð¡£ÕâЩ¶¼¸øÔËÓª´øÀ´Á˺ܴ󸺵£¡£´ËÍ⣬·ÖÉ¢µÄ¶à¸öС¼¯Èº£¬×ÊÔ´ÀûÓÃÂʲ»¸ß£¬»úÆ÷³É±¾½Ï´ó¡£

½¨Éèµ¥¸ö´ó¹æÄ£¼¯ÈºµÄ·½°¸¼°ÓÅ»¯

üIÁÙµÄÌôÕ½

TDW´Óµ¥¼¯Èº400̨¹æÄ£½¨Éè³Éµ¥¼¯Èº4000̨¹æÄ££¬üIÁÙµÄ×î´óÌôÕ½ÊÇHadoop¼Ü¹¹µÄµ¥µãÎÊÌ⣺¼ÆËãÒýÇæµ¥µãJobTracker¸ºÔØÖØ£¬Ê¹µÃµ÷¶ÈЧÂʵ͡¢¼¯ÈºÀ©Õ¹ÐÔ²»ºÃ£»´æ´¢ÒýÇæµ¥µãNameNodeûÓÐÈÝÔÖ£¬Ê¹µÃÖØÆôºÄʱ³¤¡¢²»Ö§³Ö»Ò¶È±ä¸ü¡¢¾ßÓжªÊ§Êý¾ÝµÄ·çÏÕ¡£TDWµ¥µãÆ¿¾±µ¼ÖÂÆ½Ì¨µÄ¸ß¿ÉÓÃÐÔ¡¢¸ßЧÐÔ¡¢¸ßÀ©Õ¹ÐÔÈþ·½üI¶¼ÓÐËùǷȱ£¬½«ÎÞ·¨Ö§³Å4000̨¹æÄ£¡£ÎªÁ˽â¾öµ¥µãÆ¿¾±£¬TDWÖ÷Òª½øÐÐÁËJobTracker·ÖÉ¢»¯ºÍ NameNode¸ß¿ÉÓÃÁ½·½üIµÄʵʩ¡£

JobTracker·ÖÉ¢»¯

1.µ¥µãJobTrackerµÄÆ¿¾±

TDWÒÔǰµÄ¼ÆËãÒýÇæÊÇ´«Í³µÄÁ½²ã¼Ü¹¹£¬µ¥µãJobTracker¸ºÔðÕû¸ö¼¯ÈºµÄ×ÊÔ´¹ÜÀí¡¢ÈÎÎñµ÷¶ÈºÍÈÎÎñ¹ÜÀí£¬TaskTracker¸ºÔðÈÎÎñÖ´ÐС£JobTrackerµÄÈþ¸ö¹¦ÄÜÄ£¿éñîºÏÔÚÒ»Æð£¬¶øÇÒÈ«²¿ÓÉÒ»¸öMaster½Úµã¸ºÔðÖ´ÐУ¬µ±¼¯Èº²¢·¢ÈÎÎñÊý½ÏÉÙʱ£¬ÕâÖּܹ¹¿ÉÒÔÕý³£ÔËÐУ¬µ«µ±¼¯Èº²¢·¢ÈÎÎñÊý´ïµ½2000¡¢½ÚµãÊý´ïµ½4000ʱ£¬ÈÎÎñµ÷¶È¾Í»á³öÏÖÆ¿¾±£¬½ÚµãÐÄÌø´¦Àí³Ù»º£¬¼¯ÈºÀ©Õ¹Ò²»áÓöµ½Æ¿¾±¡£

2.JobTracker·ÖÉ¢»¯·½°¸

TDW½è¼øYARNºÍFacebook°æcoronaÉè¼Æ·½°¸£¬½øÐÐÁ˼ÆËãÒýÇæµÄÈþ²ã¼Ü¹¹ÓÅ»¯£¨Èçͼ2Ëùʾ£©£º½«×ÊÔ´¹ÜÀí¡¢ÈÎÎñµ÷¶ÈºÍÈÎÎñ¹ÜÀíÈþ¸ö¹¦ÄÜÄ£¿é½âñJobTrackerëb¸ºÔðÈÎÎñ¹ÜÀí¹¦ÄÜ£¬¶øÇÒÒ»¸öJobTrackerëb¹ÜÀíÒ»¸öJob£»½«±È½ÏÇáÁ¿µÄ×ÊÔ´¹ÜÀí¹¦ÄÜÄ£¿é°þÀë³öÀ´½»¸øÐµijÆÎªClusterManagerµÄMaster¸ºÔðÖ´ÐУ»ÈÎÎñµ÷¶ÈÒ²°þÀë³öÀ´£¬½»¸ø¾ßÓÐ×ÊÔ´ÐÅÏ¢µÄClusterManager¸ºÔðÖ´ÐУ»¶ÔÐÔÄÜÒªÇó½Ï¸ßµÄÈÎÎñµ÷¶ÈÄ£¿é²ÉÓøü¼Ó¾«Ï¸µÄµ÷¶È·½Ê½¡£

ͼ2 JobTracker·ÖÉ¢»¯¼Ü¹¹

мܹ¹ÏÂÈþ¸ö½ÇÉ«·Ö±ðÊÇ£ºClusterManager¸ºÔðÕû¸ö¼¯ÈºµÄ×ÊÔ´¹ÜÀíºÍÈÎÎñµ÷¶È£¬JobTracker¸ºÔ𵥸öJobµÄ¹ÜÀí£¬TaskTracker¸ºÔðÈÎÎñµÄÖ´ÐС£

£¨1£©Á½Â·ÐÄÌø¡£Ö®Ç°µÄ¼Ü¹¹Ï£¬TaskTrackerÏòJobTrackerÉϱ¨ÐÄÌø£¬JobTracker´®Ðеش¦ÀíÕâЩÐÄÌø£¬ÐÄÌø´¦ÀíÖнøÐнڵã¹ÜÀí¡¢ÈÎÎñ¹ÜÀí¡¢ÈÎÎñµ÷¶ÈµÈ£¬ÐÄÌø·±ÖØ£¬Ó°ÏìÈÎÎñµ÷¶ÈºÍ¼¯ÈºÀ©Õ¹ÐÔ¡£Ð¼ܹ¹Ï£¬ÐÄÌø±»²ð·Ö³ÉÁ½Â·ÐÄÌø£¬·Ö±ðÉϱ¨ÈÎÎñºÍ×ÊÔ´ÐÅÏ¢¡£

JobTracker»ñÖªÈÎÎñÐÅϢͨ¹ýÈÎÎñÉϱ¨ÐÄÌøµÄ·½Ê½¡£ÈÎÎñÉϱ¨ÐÄÌøÊÇͨ¹ýÈÎÎñËùÔÚµÄTaskTrackerÆô¶¯Ò»¸öеĶÀÁ¢Ïß³ÌÏò¶ÔÓ¦µÄ JobTrackerÉϱ¨ÐÄÌøÕâÌõ;¾¶£¬ÔÚͬһ¸öTaskTrackerÉÏ£¬²»Í¬JobµÄÈÎÎñʹÓò»Í¬µÄÏß³ÌÏò²»Í¬µÄJobTrackerÉϱ¨ÐÄÌø£¬Í¾¾¶·ÖÉ¢£¬ÌáÉýÁËÐÄÌøÉϱ¨Ð§ÂÊ¡£

TaskTrackerͨ¹ýÉϱ¨ÐÄÌøµÄ·½Ê½½«×ÊÔ´ÐÅÏ¢»ã±¨¸øClusterManager¡£ClusterManager´ÓTaskTracker µÄÐÄÌøÖлñÈ¡½ÚµãµÄ×ÊÔ´ÐÅÏ¢£ºCPUÊýÁ¿¡¢ÄÚ´æ¿Õ¼ä´óС¡¢´ÅÅ̿ռä´óСµÈµÄ×ÜÖµºÍÊ£ÓàÖµ£¬¸ù¾ÝÕâЩÐÅÏ¢ÅжϽڵãÊÇ·ñ»¹ÄÜÖ´Ðиü¶àµÄÈÎÎñ¡£Í¬Ê±£¬ClusterManagerͨ¹ýTaskTrackerÓëÆäÖ®¼äά‚SµÄÐÄÌøÀ´¹ÜÀí½ÚµãµÄÉúËÀ´æÍö¡£

ÒÔǰ·±ÖصÄһ·ÐÄÌø±»²ð·Ö³ÉÁËÁ½Â·ÇáÁ¿µÄÐÄÌø£¬ÐÄÌø¼ä¸ôÓÉ40sÓÅ»¯³É1s£¬¼¯ÈºµÄ¿ÉÀ©Õ¹ÐԵõ½ÁËÌáÉý¡£

£¨2£©×ÊÔ´¸ÅÄ֮ǰ¼Ü¹¹ëbÓÐslot¸ÅÄһ°ã¸ù¾ÝºËÊýÀ´ÉèÖÃslotÊýÁ¿£¬¶ÔÄÚ´æ¡¢´ÅÅ̿ռäµÈûÓпØÑu¡£Ð¼ܹ¹Èõ»¯ÁËslot¸ÅÄ¼ÓÇ¿ÁË×ÊÔ´µÄ¸ÅÄî¡£

ÿ¸ö×ÊÔ´ÇëÇó°üÀ¨¾ßÌåµÄÎïÀí×ÊÔ´ÐèÇóÃèÊö£¬°üÀ¨ÄÚ´æ¡¢´ÅÅ̺ÍCPUµÈ¡£ÏòClusterManager½øÐÐ×ÊÔ´ÉêÇëµÄÓÐÈþÖÖÀ´Ô´ÀàÐÍ£ºMap¡¢ Reduce¡¢JobTracker£¬Ã¿ÖÖÀ´Ô´ÐèÒªµÄ¾ßÌå×ÊÔ´Á¿²»Í¬¡£ÔÚCPU×ÊÔ´ÉÏ£¬µ÷¶ÈÆ÷ÈÔÈ»±£Áôslot¸ÅÄ²¢ÇÒÕë¶ÔÈþÖÖÀ´Ô´±£Ö¤¸÷×Թ̶¨µÄ×ÊԴñ¡£

ÀýÈ磬¶ÔÓÚ24ºËµÄ½Úµã£¬ÅäÖÃ13¸öºË¸øMapÓá¢6¸öºË¸øReduceÓá¢1¸öºË¸øJobTrackerÓã¬ÔòÈÏΪ¸Ã½ÚµãÉÏÓÐ1¸ö JobTracker slot¡¢13¸öMap slot¡¢6¸öReduce slot¡£Ä³¸öMapÇëÇóµÄ×ÊÔ´ÐèÒª2¸öºË£¬ÔòÈÏΪÐèÒªÁ½¸öMap slot£¬µ±Ò»¸ö½ÚµãµÄMap slotÓÃÍêÖ®ºó£¬¼´Ê¹ÓÐÊ£ÓàµÄCPU£¬Ò²²»»á¼ÌÐø·ÖÅäMapÓèÆäÖ´ÐÐÁË¡£ÄÚ´æ¿Õ¼ä¡¢´ÅÅ̿ռäµÈ×ÊԴûÓÐslot¸ÅÄʣÓà¿Õ¼ä´óСÂú×ãÐèÇó¼´ÈÏΪ¿ÉÒÔ·ÖÅä¡£ÔÚ²éÕÒÂú×ã×ÊÔ´ÇëÇóµÄ½Úµãʱ£¬»á±È½Ï½ÚµãµÄÕâЩʣÓà×ÊÔ´ÊÇ·ñÂú×ãÇëÇ󣬶øÇÒ»¹»áÓÅÏÈÑ¡Ôñ¸ºÔصÍÓÚ¼¯ÈºÆ½¾ùÖµµÄ½Úµã¡£

£¨3£©¶ÀÁ¢²¢·¢Ê½µÄÏÂÍÆµ÷¶È¡£Ö®Ç°¼Ü¹¹Ï£¬µ÷¶ÈÆ÷²ÉÓõÄÊÇ»ùÓÚÐÄÌøÄ£Ð͵ÄÀ­È¡µ÷¶È£ºÈÎÎñµ÷¶ÈÒÀÀµÓÚÐÄÌø£¬Map¡¢ReduceµÄµ÷¶ÈñîºÏÔÚÒ»Æð£¬¶øÇÒ¶ÔÇëÇóÓÅÏȼ¶²ÉȡȫÅÅÐò·½Ê½£¬Ê±¼ä¸´ÔÓ¶ÈΪnlog(n)£¬ÈÎÎñµ÷¶ÈЧÂʵÍÏ¡£

мܹ¹²ÉÓöÀÁ¢²¢·¢Ê½µÄÏÂÍÆµ÷¶È¡£Map¡¢Reduce¡¢JobTrackerÈþÖÖ×ÊÔ´ÇëÇóʹÓÃÈþ¸öÏ߳̽øÐжÀÁ¢µ÷¶È£¬¶ÔÇëÇóÓÅÏȼ¶²ÉÈ¡¶ÑÅÅÐòµÄ·½Ê½£¬Ê±¼ä¸´ÔÓ¶ÈΪlog(n)¡£µ±ÓÐ×ÊÔ´Âú×ãÇëÇóʱ£¬ClusterManagerÖ±½Ó½«×ÊÔ´ÏÂÍÆµ½ÇëÇóÕߣ¬¶ø²»ÔÙ±»¶¯µØµÈ´ýTaskTrackerͨ¹ýÐÄÌøµÄ·½Ê½»ñÈ¡·ÖÅäµÄ×ÊÔ´¡£

ÀýÈ磬һ¸öJobÓÐ10¸öMap£¬Ã¿¸öMapÐèÒª1¸öºË¡¢2GBÄÚ´æ¿Õ¼ä¡¢10GB´ÅÅ̿ռ䣬Èç¹ûÓÐ×ã¹»µÄ×ÊÔ´£¬Mapµ÷¶ÈÏ̲߳éÕÒµ½ÁËÂú×ãÕâ10 ¸öMapµÄ½ÚµãÁÐ±í£¬ClusterManager»á°Ñ½ÚµãÁбíÏÂÍÆµ½JobTracker£»Èç¹ûMapµ÷¶ÈÏ̵߳ÚÒ»´Îëb²éÕÒµ½ÁËÂú×ã5¸öMapµÄ½ÚµãÁÐ±í£¬ClusterManager»á°ÑÕâ¸öÁбíÏÂÍÆµ½JobTracker£¬ËæºóMapµ÷¶ÈÏ̲߳éÕÒµ½ÁËÊ£ÏÂ5¸öMapµÄ½ÚµãÁÐ±í£¬ClusterManagerÔÙ°ÑÕâ¸öÁбíÏÂÍÆµ½JobTracker¡£

ÒÔǰ»ùÓÚÐÄÌøÄ£Ð͵ÄÀ­È¡µ÷¶È±»ÓÅ»¯³É¶ÀÁ¢²¢·¢Ê½µÄÏÂÍÆµ÷¶ÈÖ®ºó£¬Æ½¾ùµ÷¶È´¦Àíʱ¼äÓÉ80msÓÅ»¯ÖÁ1ms£¬¼¯ÈºµÄµ÷¶ÈЧÂʵõ½ÁËÌáÉý¡£

3. JobÌá½»¹ý³Ì

мܹ¹Ï£¬Ò»´ÎJobÌá½»¹ý³Ì£¬ÐèÒªClientºÍClusterManager¡¢TaskTracker¾ù½øÐн»»¥£¨Èçͼ3Ëùʾ£©£ºJobClientÏÈÏòClusterManagerÉêÇëÆô¶¯JobTrackerËùÐèÒªµÄ×ÊÔ´£»ÉêÇëµ½Ö®ºó£¬JobClientÔÚÖ¸¶¨µÄ TaskTrackerÉÏÆô¶¯JobTracker½ø³Ì£¬½«JobÌá½»¸øJobTracker£»JobTrackerÔÙÏòClusterManagerÉêÇëMapºÍReduce×ÊÔ´£»ÉêÇëµ½Ö®ºó£¬JobTracker½«ÈÎÎñÆô¶¯ÃüÁîÌá½»¸øÖ¸¶¨µÄTaskTracker¡£

ͼ3 JobÌá½»¹ý³Ì

4. ´æÔÚµÄÎÊÌâ¼°Ó¦¶Ô´ëÊ©

JobTracker·ÖÉ¢»¯·½°¸¸ø¼ÆËãÒýÇæ´øÀ´¸ßЧÐԺ͸ßÀ©Õ¹ÐÔ£¬µ«Ã»ÓдøÀ´¸ß¿ÉÓÃÐÔ£¬µ¥Ò»¹ÊÕϵãµÄÎÊÌâÔÚ´Ë·½°¸ÖÐÈÔÈ»´æÔÚ£¬´ËʱµÄµ¥Ò»¹ÊÕϵãÎÊÌâÓбðÓÚÒÔǰ£¬ÈçÏÂËùÊö¡£

£¨1£©ClusterManagerÈç¹û·¢Éú¹ÊÕÏ£¬²»»áÔì³ÉJob״̬¶ªÊ§¶øÇÒÔÚ¶Ìʱ¼äÄÚ¼´¿É»Ö¸´¡£Ëüëb´æ´¢×ÊÔ´Çé¿ö£¬²»´æ´¢×´Ì¬£¬ClusterManagerÔں̵ܶÄʱ¼äÄÚ¿ÉÒÔÖØÆôÍê³É¡£ÖØÆôÖ®ºó£¬TaskTrackerÖØÐÂÏòClusterManager»ã±¨×ÊÔ´£¬ClusterManager´ÓÖØÆôÖÁÍêÈ«»ñµÃ¼¯ÈºµÄ×ÊÔ´Çé¿öÕû¸ö½×¶Î¿ÉÒÔÔÚ10ÃëÄÚÍê³É¡£

£¨2£©JobTrackerÈç¹û·¢Éú¹ÊÕÏ£¬ëb»áÓ°Ïìµ¥¸öJob£¬¶ÔÆäËûJob²»»áÔì³ÉÓ°Ïì¡£

»ùÓÚÒÔÉÏÁ½µã£¬ÈÏΪз½°¸µÄµ¥Ò»¹ÊÕϵãÎÊÌâÓ°Ïì²»´ó£¬¶øÇÒ¿¼ÂÇ·½°¸ÊµÊ©µÄ¸´ÔӶȺÍʱЧÐÔ£¬TDWÔÚJobTracker·ÖÉ¢»¯·½°¸ÖÐûÓÐÉè¼Æ¸ß¿ÉÓ÷½°¸£¬¶øÊÇͨ¹ýÍâΧ‚SͳÀ´½µµÍÓ°Ï죺¼à¿Ø‚Sͳ±£Ö¤ClusterManager¹ÊÕϼ°Ê±·¢Ïֺͻָ´£»Lhotseµ÷¶È‚Sͳ´ÓÓû§ÈÎÎñ¼¶±ð±£Ö¤JobÖØÊÔ¡£

NameNode¸ß¿ÉÓÃ

1. µ¥µãNameNodeµÄÎÊÌâ

TDWÒÔǰµÄ´æ´¢ÒýÇæÊǵ¥µãNameNode£¬ÔÚÒ»¸öÒµÎñ¶ÔÓ¦Ò»¸ö¼¯ÈºµÄÇé¿öÏ£¬NameNodeѹÁ¦½ÏС£¬³ö¹ÊÕϵļ¸ÂÊÒ²½ÏС£¬¶øÇÒ NameNodeµ¥µã¹ÊÕÏ´øÀ´µÄÓ°Ïì²»»á²¨¼°È«²¿ÒµÎñ¡£µ«µ±°Ñ¸÷¸öС¼¯ÈºÍ³Ò»µ½´ó¼¯Èº£¬¸÷¸öÒµÎñ¶¼´æ´¢Ö®ÉÏʱ£¬NameNodeѹÁ¦±ä´ó£¬³ö¹ÊÕϵļ¸ÂÊÒ²±ä´ó£¬NameNodeµ¥µã¹ÊÕÏÔì³ÉµÄÓ°Ï콫»á·Ç³£ÑÏÖØ¡£¼´Ê¹ÊǼƻ®ÄÚ±ä¸ü£¬Í£Ö¹NameNode·þÎñºÄʱ½«½ü2¸öСʱ£¬¼Æ»®ÄÚµÄÍ£Ö¹·þÎñ±ä¸üÒ²¸øÓû§´øÀ´Á˽ϴóµÄÓ°Ïì¡£

2. NameNode¸ß¿ÉÓ÷½°¸

TDWÉè¼ÆÁËÒ»ÖÖÒ»Ö÷Á½Èȱ¸µÄNameNode¸ß¿ÉÓ÷½°¸¡£Ð¼ܹ¹ÏÂNameNode½ÇÉ«ÓÐÈþ¸ö£ºÒ»Ö÷£¨ActiveNameNode£©Á½Èȱ¸£¨BackupNameNode£©¡£ActiveNameNode±£´ænamespaceºÍblockÐÅÏ¢£¬¶ÔDataNodeÏ·¢ÃüÁ²¢ÇÒ¶Ô¿Í»§¶ËÌṩ·þÎñ¡£BackupNameNode°üÀ¨standbyºÍnewbieÁ½ÖÖ״̬£ºstandbyÌṩ¶ÔActiveNameNodeÔªÊý¾ÝµÄÈȱ¸£¬ÔÚ ActiveNameNodeʧЧºó½ÓÌæÆä¶ÔÍâÌṩ·þÎñ£¬newbie״̬ÊÇÕý´¦ÓÚѧϰ½×¶Î£¬Ñ§Ï°Íê±ÏÖ®ºó³ÉΪstandby¡£

£¨1£©ReplicatonЭÒ顣ΪÁËʵÏÖBackupNameNode¶ÔActiveNameNodeµÄÔªÊý¾ÝÒ»Ö£¬ËæÊ±œÊ±¸½Ó¹Ü ActiveNameNode½ÇÉ«£¬ÔªÊý¾Ý²Ù×÷ÈÕÕIÐèÒªÔÚÖ÷±¸¼äͬ²½¡£¿Í»§¶Ë¶ÔÔªÊý¾ÝµÄÐ޸IJ»Ö¹ÔÚActiveNameNode¼Ç¼ÊÂÎñÈÕÕI£¬ÊÂÎñÈÕÕI»¹ÐèÒª´ÓActiveNameNodeͬ²½µ½BackupNameNode£¬¿Í»§¶ËµÄÿһ´Îд²Ù×÷£¬ëbÓгɹ¦Ð´ÈëActiveNameNodeÒÔ¼°ÖÁÉÙÒ»¸ö BackupNameNode£¨»òÕßZooKeeper£©Ê±£¬²Å·µ»Ø¿Í»§¶Ë²Ù×÷³É¹¦¡£µ±Ã»ÓÐBackupNameNode¿ÉдÈëʱ£¬°ÑÊÂÎñÈÕÕIͬ²½µ½ ZooKeeperÀ´±£Ö¤ÖÁÉÙÓÐÒ»·ÝÊÂÎñÈÕÕI±¸·Ý¡£

¿Í»§¶Ëд²Ù×÷¼Ç¼ÊÂÎñÈÕÕI×ñÑ­ÒÔϼ¸¸öÜ«Ôò£º

¢ÙдÈëActiveNameNode£¬Èç¹ûдÈëʧ°Ü£¬·µ»Ø²Ù×÷ʧ°Ü£¬ActiveNameNode×Ô¶¯ìÕ³ö£»

¢Úµ±Ð´ÈëÖÁÉÙÁ½¸ö½Úµã£¨Active-NameNodeºÍStandby/ZooKeeper/LOG_SYNC newbie£©Ê±·µ»Ø²Ù×÷³É¹¦£¬ÆäËû·µ»ØÊ§°Ü£»LOG_SYNC newbie±íʾnewbieÒѾ­´ÓActiveNameNode»ñÈ¡µ½È«Á¿ÈÕÕIºóµÄ״̬£»

¢Ûµ±ëb³É¹¦Ð´ÈëActiveNameNode£¬´ËºóµÄStandbyºÍZooKeeper¾ùдÈëʧ°Üʱ£¬·µ»ØÊ§°Ü£»

¢Üµ±ëb´æÔÚActiveNameNodeʱ£¬½øÈëëb¶Á״̬¡£

£¨2£©LearningЭÒé¡£newbieѧϰ»úÑuÈ·±£newbieÆô¶¯ºóͨ¹ýÏòActiveNameNodeѧϰ»ñÈ¡×îеÄÔªÊý¾ÝÐÅÏ¢£¬Ñ§Ï°µ½Óë ActiveNameNodeͬ²½Ê±±ä³Éstandby״̬¡£newbie´ÓActiveNameNode»ñÈ¡×îеÄfsimageºÍeditsÎļþÁÐ±í£¬ActiveNameNode»¹»áºÍnewbieÖ®¼ä½¨Á¢ÊÂÎñÈÕÕI´«ÊäͨµÀ£¬½«ºóÐø²Ù×÷ÈÕÕIͬ²½¸ønewbie£¬newbie½«ÕâЩÐÅÏ¢ÔØÈëÄڴ棬¹¹½¨×îеÄÔªÊý¾Ý״̬¡£

£¨3£©ÊÂÎñÈÕÕIÐòºÅ¡£ÎªÁËÑéÖ¤ÊÂÎñÈÕÕIÊÇ·ñ¶ªÊ§»òÕßÖØ¸´£¬ÎªÊÂÎñÈÕÕIÖ¸¶¨µÝÔöÁ¬ÐøµÄ¼Ç¼ºÅtxid¡£ÔÚÊÂÎñÈÕÕIÎļþeditsÖмÓÈëtxid£¬±£Ö¤ txidµÄÁ¬ÐøÐÔ£¬ÈÕÕI´«ÊäºÍ¼ÓÔØÊ±±£Ö¤txidÁ¬ÐøµÝÔö£¬±£´æÄÚ´æÖеÄÔªÊý¾ÝÐÅÏ¢µ½fsimageÎļþʱ£¬½«µ±Ç°txidдÈëfsimageÍ·²¿£¬ÔØÈë fsimageÎļþµ½ÄÚ´æÖÐʱ£¬ÉèÖÃÔªÊý¾Ýµ±Ç°txidΪfsimageÍ·²¿µÄtxid¡£°²È«ÈÕÕIÐòºÅ£¨safe txid£©±£´æÔÚZooKeeperÉÏ£¬ActiveNameNodeÖÜÆÚÐԵؽ«txidдÈëZooKeeper×÷Ϊsafe txid£¬ÔÚBackupNameNodeת»»ÎªActiveNameNodeʱ£¬ÐèÒª¼ì²éBackupNameNodeµ±Ç°µÄtxidÊÇ·ñСÓÚsafe txid£¬ÈôСÓÚÔò½ûÖ¹Õâ´Î½Çɫת»»¡£

£¨4£©checkpointЭÒ顣мܹ¹ÈÔÈ»¾ßÓÐcheckpoint¹¦ÄÜ£¬ÒÔ¼õÉÙÈÕÕIµÄ´óС£¬Ëõ¶ÌÖØÆôʱ¹¹½¨ÔªÊý¾Ý״̬µÄºÄʱ¡£ÓÉ ActiveNameNodeά»¤Ò»¸öcheckpointỊ̈߳¬ÖÜÆÚÐÔµØÍ¨ÖªËùÓÐstandby×öcheckpoint£¬Ö¸¶¨ÆäÖеÄÒ»¸ö½«²úÉúµÄ fsimageÎļþÉÏ´«¸øActiveNameNode¡£

£¨5£©DataNodeË«±¨¡£Block¸±±¾ËùÔڵĽڵãÁбíÊÇNameNodeÔªÊý¾ÝÐÅÏ¢µÄÒ»²¿·Ö£¬ÎªÁ˱£Ö¤Õⲿ·ÖÐÅÏ¢ÔÚÖ÷±¸¼äÒ»ÖÂÐÔ£¬DataNode²ÉÓÃË«±¨»úÑu¡£DataNode¶Ô¿éµÄ¸Ä¶¯»áͬʱ¹ã²¥µ½Ö÷±¸£¬¶ÔÖ÷±¸Ï·¢µÄÃüÁDataNodeÇø±ð¶Ô´ý£¬ëbÖ´ÐÐÖ÷»úÏ·¢µÄÃüÁî¶øºöÂÔµô±¸»úÏ·¢µÄÃüÁî¡£

£¨6£©ÒýÈëZooKeeper¡£Ö÷ÒªÓÃÀ´×öÖ÷½ÚµãÑ¡¾ÙºÍ¼Ç¼Ïà¹ØÈÕÕI£ºNameNode½Úµã״̬¡¢°²È«ÈÕÕIÐòºÅ¡¢±ØÒªÊ±¼Ç¼edit log¡£

3. Ö÷±¸Çл»¹ý³Ì

µ±Ö÷ìÕ³öʱÖ÷±¸×´Ì¬Çл»µÄ¹ý³Ì£¨Èçͼ4Ëùʾ£©£ºµ±ActiveNameNode½ÚµãIP1ÓÉÓÚijЩܫÒòìÕ³öʱ£¬Á½¸ö±¸½ÚµãIP2ºÍIP3ͨ¹ýÏò ZooKeeperÇÀËø¾ºÕùÖ÷½Úµã½ÇÉ«£»IP2ÇÀµ½Ëø³ÉΪActiveNameNode£¬¿Í»§¶Ë´ÓZooKeeperÉÏÖØÐ»ñÈ¡Ö÷½ÚµãÐÅÏ¢£¬ºÍIP2½øÐн»»¥£¬Õâʱ¼´Ê¹IP1·þÎñ»Ö¸´£¬Ò²ÊÇnewbie״̬£»ÊÂÎñÈÕÕIÔÚÖ÷±¸¼äͬ²½£¬newbie IP1ͨ¹ýÏòÖ÷½ÚµãIP2ѧϰ³ÉΪstandby״̬¡£

ͼ4 Ö÷ìÕ³öʱÖ÷±¸×´Ì¬Çл»

4. ´æÔÚµÄÎÊÌâ

NameNode¸ß¿ÉÓ÷½°¸¸ø´æ´¢ÒýÇæ´øÀ´Á˸߿ÉÓÃÐÔ£¬µ«ÔÚ¸ßЧÐÔ·½üI×ö³öÁËһЩÎþÉü£¬ÓÉÓÚÊÂÎñÈÕÕIÐèҪͬ²½£¬Ð´ÐÔÄÜÓÐ20%×óÓÒµÄϽµ¡£

ÆäËûÓÅ»¯

TDWÔÚʵʩ´ó¼¯Èº¹ý³ÌÖУ¬³ýÁËÖ÷ҪʵʩJobTracker·ÖÉ¢»¯ºÍNameNode¸ß¿ÉÓÃÁ½¸ö·½°¸£¬»¹½øÐÐÁËһЩÆäËûÓÅ»¯¡£

1. NameNode·ÖÉ¢»¯

Ëæ×Å´æ´¢Á¿ºÍÒµÎñµÄ²»¶ÏÔö³¤£¬Ò»¸öHDFSÔªÊý¾Ý¿Õ¼äµÄ·ÃÎÊѹÁ¦ÓëÈÕ¾ãÔö¡£Í¨¹ýNameNode·ÖÉ¢»¯À´¼õÉÙÒ»¸öÔªÊý¾Ý¿Õ¼äµÄ·ÃÎÊѹÁ¦¡£ NameNode·ÖÉ¢»¯Ö÷Òª¶ÔÔªÊý¾ÝÐÅÏ¢½øÐзֲ𣬶ÔÓû§Í¸Ã÷£¬Óû§·ÃÎÊÈÏΪ´¦ÓÚͬһ¸ö´æ´¢ÒýÇæ£¬µ×²ã¿ÉÒÔ²ð·Ö³É¶à¸ö¼¯Èº¡£TDWÔÚHive²ãÔö¼ÓÓû§µ½ HDFS¼¯ÈºµÄ·ÓÉ±í£¬Óû§±íµÄÊý¾Ý½«Ð´Èë¶ÔÓ¦µÄHDFS¼¯Èº£¬¶ÔÍâ͸Ã÷£¬Óû§ëbÐèʹÓñêœÊµÄ½¨±íÓï¾ä¼´¿É¡£TDW¸ù¾Ý¹«Ë¾ÒµÎñµÄʵ¼ÊÓ¦Óó¡¾°£¬¸ù¾ÝÒµÎñÏߺ͹²ÏíÊý¾ÝµÈ°ÑÊý¾Ý·ÖÉ¢µ½Á½¸öHDFS¼¯Èº£¬ÓÐÀûÓÚÊý¾Ý¹²ÏíͬʱҲ¾¡Á¿¹æ±Ü¼¯Èº¼äµÄÊý¾Ý¿½±´¡£²ÉÓüòµ¥¡¢¸Ä¶¯×îÉٵķ½°¸½â¾öÁËʵ¼ÊµÄÎÊÌâ¡£

2. HDFS¼æÈÝ

TDWÄÚ²¿ÓÐÈþ¸öHDFS°æ±¾£º0.20.1¡¢CDH3u3¡¢2.0£¬ÏßÉÏÖ÷Á÷°æ±¾ÊÇCDH3u3£¬Ö÷Á÷HDFS°æ±¾Ê¹ÓõÄRPC¿ò¼ÜÉÐδÓÅ»¯³ÉThrift»òÕßProtocol BuffersµÈ£¬Èþ¸ö°æ±¾»¥²»¼æÈÝ£¬Ôö¼ÓÁË»¥Ïà·ÃÎʵÄÀ§ÄÑ¡£Í¨¹ýRPC²ã¼æÈÝ·½Ê½ÊµÏÖÁËCDH3u3ºÍ0.20.1Ö®¼äµÄ»¥Í¨£¬Í¨¹ýÍêȫʵÏÖÁ½Ì×½Ó¿Ú·½Ê½ÊµÏÖÁËCDH3u3ºÍ2.0Ö®¼äµÄ»¥Í¨¡£

3. ·ÀÖ¹Êý¾ÝÎóɾ³ý

ÖØÒªÊý¾ÝµÄÎóɾ³ý»á¸øTDW´øÀ´²»¿É¹ÀÁ¿µÄÓ°Ï죬TDWΪÁ˽øÒ»²½Ôö¼ÓÊý¾Ý´æ´¢¿É¿¿ÐÔ£¬²»½ö¿ªÆôNameNode»ØÊÕÕ¾ÌØÐÔ£¬»¹Ôö¼ÓÁ½¸öÌØÐÔ£º ɾ³ýºÚ°×Ãûµ¥£¬É¾³ý½Ó¿ÚÐ޸ijÉÖØÃüÃû½Ó¿Ú£¬°×Ãûµ¥ÖеÄĿ¼¿ÉÒÔ±»É¾³ý£¬°×Ãûµ¥ÖеÄIP¿ÉÒÔ½øÐÐɾ³ý²Ù×÷£¬ÆäËûÔò²»¿É£»DataNode»ØÊÕÕ¾£¬¿éɾ³ý²Ù×÷²»»áÁ¢¼´½øÐдÅÅÌÎļþµÄɾ³ý£¬¶øÊÇά»¤ÔÚ´ýɾ³ý¶ÓÁÐÀ¹ýÆÚÖ®ºó²Å½øÐÐʵ¼ÊµÄɾ³ý²Ù×÷£¬ÕâÑù¿ÉÒÔ±£Ö¤ÔÚÒ»¶¨Ê±¼äÄÚÈç¹û·¢ÏÖÖØÒªµÄÊý¾Ý±»Îóɾ³ýʱ¿ÉÒÔ½øÐÐÊý¾Ý»Ö¸´£¬»¹¿ÉÒÔ·ÀÖ¹NameNodeÆô¶¯Ö®ºóÔªÊý¾ÝÒâÍâȱʧ¶øÔì³ÉÊý¾ÝÖ±½Ó±»É¾³ýµÄ·çÏÕ¡£

½áÓï

TDW´Óʵ¼ÊÇé¿ö³ö·¢£¬²ÉÈ¡ÁËÒ»‚SÁеÄÓÅ»¯´ëÊ©£¬³É¹¦ÊµÊ©Á˵¥¸ö´ó¹æÄ£¼¯ÈºµÄ½¨É衣ΪÁËÂú×ãÓû§ÈÕÒæÔö³¤µÄ¼ÆËãÐèÇó£¬TDWÕýÔÚ½øÐиü´ó¹æÄ£¼¯ÈºµÄ½¨É裬²¢Ïòʵʱ»¯¡¢¼¯Ô¼»¯·½Ïò·¢Õ¹¡£TDWœÊ±¸ÒýÈëYARN×÷ΪͳһµÄ×ÊÔ´¹ÜÀíÆ½Ì¨£¬ÔÚ´Ë»ù´¡ÉϹ¹½¨ÀëÏß¼ÆËãÄ£ÐͺÍStorm¡¢Spark¡¢Impala µÈ¸÷ÖÖʵʱ¼ÆËãÄ£ÐÍ£¬ÎªÓû§Ìṩ¸ü¼Ó·á¸»µÄ·þÎñ¡£

   
2886 ´Îä¯ÀÀ       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[±±¾©]

MySQLË÷Òý±³ºóµÄÊý¾Ý½á¹¹
MySQLÐÔÄܵ÷ÓÅÓë¼Ü¹¹Éè¼Æ
SQL ServerÊý¾Ý¿â±¸·ÝÓë»Ö¸´
ÈÃÊý¾Ý¿â·ÉÆðÀ´ 10´óDB2ÓÅ»¯
oracleµÄÁÙʱ±í¿Õ¼äдÂú´ÅÅÌ
Êý¾Ý¿âµÄ¿çƽ̨Éè¼Æ

²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿â
¸ß¼¶Êý¾Ý¿â¼Ü¹¹Éè¼ÆÊ¦
HadoopÔ­ÀíÓëʵ¼ù
Oracle Êý¾Ý²Ö¿â
Êý¾Ý²Ö¿âºÍÊý¾ÝÍÚ¾ò
OracleÊý¾Ý¿â¿ª·¢Óë¹ÜÀí

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