±à¼ÍƼö: |
±¾ÎÄÊ×ÏȽéÉÜһϷֲ¼Ê½µÄÏà¹Ø¸ÅÄîºÍ֪ʶ£¬È»ºó½éÉÜHDFSµÄ¼Ü¹¹Óë×é³É£¬½Ó×Å»áÏêϸ·ÖÎöHDFS¶ÁдÊý¾ÝµÄ¹ý³ÌÓëÔªÊý¾ÝµÄ¹ÜÀí£¬×îºó»á×ܽá²Ù×÷HDFSÎļþµÄ·½Ê½¡£
±¾ÎÄÀ´×Ôcsdn£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
hdfsÈ«³ÌÊÇHadoop Distributed File System£¬ÊÇÒ»¸ö·Ö²¼Ê½Îļþϵͳ¡£
·Ö²¼Ê½ ·Ö²¼Ê½Êǽü¼¸Äê·Ç³£»ðµÄ¼¼Êõ¸ÅÄÎÞÂÛÊÇÔÆ¼ÆËã¡¢´óÊý¾Ý»¹ÊǸ߲¢·¢µÄ»¥ÁªÍø¼Ü¹¹»°Ìâ¶¼»áƵƵ³öÏÖÕâ¸ö´ÊÓï£¬ÌØ±ðÊÇÕâ¸ö´ó̸¡°´ó¹æÄ£¡±µÄʱ´ú£¬·Ö²¼Ê½Ã²ËƳÉÁ˸ߴóÉϼ¼ÊõµÄ´úÃû´Ê¡£ÒýµÄÐí¶à¸ÕÈëÐеļ¼ÊõÈËÔ±Ç÷Ö®ÈôðÍ£¬ÆäʵÊÀ½çÉϲ»»áÓÐÆ¾¿Õ³öÏÖµÄÊÂÎ¶¼ÊÇÂýÂýÑÝ»¯µÄ£¬ÐÂÊÂÎïÒ»¶¨¿ÉÒÔÕÒµ½¾ÉÊÂÎïµÄÓ°×Ó¡£Ö»Òª´òºÃ»ù´¡£¬×¥×¡¼¼ÊõÑݽøµÄÖ÷Ïߣ¬½áºÏʵ¼ùÂýÂý»ýÀ۾ͿÉÒÔÁË¡£µ«ÊÇ»°ÓÖ˵»ØÀ´£¬·Ö²¼Ê½ÏµÍ³È·ÊµÔÚʵÏÖÉÏÄѶÈÉÏȷʵҪ¸ßÓÚÒ»°ãµÄÒµÎñϵͳ£¬Ãż÷Ò²Òª¸ßһЩ¡£
ÄÇôÎÒÃǾÍÏÈ¿´¿´¡°Ò»°ãµÄ¡±·Ö²¼Ê½ÏµÍ³ÐèÒª½â¾öÄÇЩÎÊÌâ¡¢ÕâЩÎÊÌâµÄͨÓýâ¾ö·½°¸ºÍÌØÐÔ¡£ÏÞÓÚÆª·ù£¬ÈçÒªÉîÈëÁ˽âij¸öÐÒéºÍËã·¨Çë²Î¿¼Ïà¹ØÎÄÏס£
1.¶¨Òå
·Ö²¼Ê½ÏµÍ³»á»®·Ö³É¶à¸ö×Óϵͳ»òÄ£¿é£¬¸÷×ÔÔËÐÐÔÚ²»Í¬µÄ»úÆ÷ÉÏ£¬×Óϵͳ»òÄ£¿éÖ®¼äͨ¹ýÍøÂçͨÐŽøÐÐÐ×÷£¬ÊµÏÖ×îÖÕµÄÕûÌ幦ÄÜ¡£±ÈÈç·Ö²¼Ê½²Ù×÷ϵͳ¡¢·Ö²¼Ê½³ÌÐòÉè¼ÆÓïÑÔ¼°Æä±àÒë(½âÊÍ)ϵͳ¡¢·Ö²¼Ê½ÎļþϵͳºÍ·Ö²¼Ê½Êý¾Ý¿âϵͳµÈ¡£ÀûÓöà¸ö½Úµã¹²Í¬Ð×÷Íê³ÉÒ»Ïî»ò¶àÏî¾ßÌåÒµÎñ¹¦ÄܵÄϵͳ¾ÍÊÇ·Ö²¼Ê½ÏµÍ³¡£
¾ÙÀý£ºSolrCloud
A. Ò»¸ösolrcloud¼¯ÈºÍ¨³£Óжą̀solr·þÎñÆ÷
B. ÿһ¸ösolr·þÎñÆ÷½Úµã¸ºÔð´æ´¢Õû¸öË÷Òý¿âµÄÈô¸É¸öshard£¨Êý¾Ý·ÖƬ£©
C. ÿһ¸öshardÓÖÓжą̀·þÎñÆ÷´æ·ÅÈô¸É¸ö¸±±¾»¥ÎªÖ÷±¸ÓÃ
D. Ë÷ÒýµÄ½¨Á¢ºÍ²éѯ»áÔÚÕû¸ö¼¯ÈºµÄ¸÷¸ö½ÚµãÉϲ¢·¢Ö´ÐÐ
E. SolrCloud¼¯Èº×÷ΪÕûÌå¶ÔÍâ·þÎñ£¬¶øÆäÄÚ²¿Ï¸½Ú¿É¶Ô¿Í»§¶Ë͸Ã÷
2.ÎÊÌâ¼°·½°¸
1£©CAPµÄȨºâ
·Ö²¼Ê½ÁìÓòÓÐÒ»¸ö·Ç³£ÖøÃûµÄCAPÀíÂÛ£¬ÊÇÓÉ Eric Brewer Ìá³öµÄ·Ö²¼Ê½ÏµÍ³ÖÐ×îÎªÖØÒªµÄÀíÂÛÖ®Ò»¡£Æä¶¨ÒåºÜºÃÀí½â£¬CAP
Èý¸ö×Öĸ·Ö±ð´ú±íÁË·Ö²¼Ê½ÏµÍ³ÖÐÈý¸öÏ໥ì¶ÜµÄÊôÐÔ¡£CAP·Ö±ð´ú±íConsistency¡¢Availiablity¡¢Tolerance
to the partition of network¼´Ò»ÖÂÐÔ¡¢¿ÉÓÃÐÔ¡¢ÍøÂç·ÖÇøÈÝÈÌÐÔ¡£
Ò»ÖÂÐÔ£¨Consistency£©£ºÔÚCAPÀíÂÛÖеÄÒ»ÖÂÐÔÊÇǿһÖÂÐÔ£¬¼´Ã¿¸ö½ÚµãÉϵÄÊý¾Ýʱ¿Ì±£³ÖÒ»Ö¡£
¿ÉÓÃÐÔ£¨Availiablity£©£ºÊÇÖ¸·Ö²¼Ê½ÏµÍ³ÔÚ³öÏÖÒì³£Çé¿öµÄʱºòµÄ¿ÉÓöȡ£
·ÖÇøÈÝÈÌÐÔ£¨Tolerance¡£©£ºÊÇÖ¸·Ö²¼Ê½ÏµÍ³¶ÔÍøÂç·ÖÇøµÄÈÝ´í¶È¡£
CAP ÀíÂÛÖ¸³ö£ºÎÞ·¨Éè¼ÆÒ»ÖÖ·Ö²¼Ê½ÐÒ飬ʹµÃͬʱÍêÈ«¾ß±¸ CAP Èý¸öÊôÐÔ£¬¼´¸ÃÖÖÐÒéϵĸ±±¾Ê¼ÖÕÊÇǿһÖÂÐÔ&·þÎñʼÖÕÊÇ¿ÉÓõÄ&ÐÒé¿ÉÒÔÈÝÈÌÈκÎÍøÂç·ÖÇøÒì³££»·Ö²¼Ê½ÏµÍ³ÐÒéÖ»ÄÜÔÚ
CAP ÕâÈýÕß¼äËùÓÐÕÛÖС£
CAPÕÛÖеÄʵÏÖ¿ÉÒÔÌåÏÖÔÚ·Ö²¼Ê½ÐÒéÖУº
a. Lease »úÖÆÎþÉüÁ˲¿·ÖÒì³£Çé¿öÏ嵀 A£¬´Ó¶ø»ñµÃÁËÍêÈ«µÄ C ÓëºÜºÃµÄ P¡£
b. Quorum »úÖÆ£¬¼´×ܹ²ÓÐ N ¸ö¸±±¾£¬³É¹¦¸üРW ¸ö¸±±¾ÔòËã³É¹¦Ìá½»£¬¶Áȡʱ¶Á R ¸ö¸±±¾¡£ÕâÖÖÒ»°ãµÄ
Quorum »úÖÆ£¬ÔÚ CAP Èý´óÒòËØÖж¼¸÷×öÁËÕÛÖУ¬ÓÐÒ»¶¨µÄ C£¬ÓÐ½ÏºÃµÄ A£¬Ò²ÓÐ½ÏºÃµÄ P£¬ÊÇÒ»ÖÖ½ÏΪƽºâµÄ·Ö²¼Ê½ÐÒé¡£
c. Á½½×¶ÎÌύϵͳ¾ßÓÐÍêÈ«µÄ C£¬ºÜ²»ºÃ A£¬ºÜ²»ºÃ P¡£
d. Paxos ÐÒé¾ßÓÐÍêÈ«µÄ C£¬½ÏºÃµÄ A£¬½ÏºÃµÄ P¡£
2£©¸ºÔؾùºâ
ÔÚijЩÓжà¸ö½ÚµãµÄ·Ö²¼Ê½ÏµÍ³ÖÐÐèÒª¶Ô·þÎñÇëÇó½øÐиºÔؾùºâ£¬¸ù¾ÝÒµÎñÐèÇóµÄ²»Í¬Ò²¿ÉÒÔʹÓò»Í¬µÄ¸ºÔؾùºâËã·¨£¬ÀýÈçÒ»ÖÂÐÔHash¡£
3£©¸ß²¢·¢
ÓÐЩ·Ö²¼Ê½ÏµÍ³¶Ô²¢·¢ÐÔÓкܸߵÄÒªÇó£¬Í¨³£ÊÇʹÓÃMVCC:Multiversion concurrency
control£¬¶à°æ±¾²¢·¢¿ØÖƼ¼Êõ¡£±¾ÖÊÊÇʹÓÃCOW+Version+CASÕâ¸ö¼¼Êõ×éºÏÀ´ÌáÉýϵͳ²¢·¢ÐÔ¡£
HDFSµÄ¼Ü¹¹ÓëÉè¼Æ ·Ö²¼Ê½·þÎñÖ÷ÒªÓзֲ¼Ê½´æ´¢¡¢¼ÆË㡢е÷·þÎñ£¬HDFSÊÇ×÷Ϊ×îµ×²ãµÄ·Ö²¼Ê½´æ´¢·þÎñ¶ø´æÔڵģ¬ÊÇHadoopµÄ·Ö²¼Ê½Îļþϵͳ×é¼þ£¬ËüÓëÏÖÓеķֲ¼Ê½ÎļþϵͳÓкܶàÏàËÆÖ®´¦¡£È»¶øÓëÆäËûµÄ·Ö²¼Ê½ÎļþϵͳµÄ²îÒìÒ²ÊÇÏÔ×ŵġ£HDFSÊǸßÈÝ´íµÄ£¬±»Éè¼Æ³ÉÔڵͳɱ¾Ó²¼þÉϲ¿Êð¡£HDFSΪӦÓÃÊý¾ÝÌṩ¸ßÍÌÍÂÁ¿µÄ·ÃÎÊ£¬ÊÊÓÃÓÚ¾ßÓдó¹æÄ£Êý¾Ý¼¯µÄÓ¦ÓóÌÐò¡£HDFS·ÅËÉÁËһЩPOSIXµÄÒªÇó£¬ÒÔ±ãÌṩÁ÷ʽ·½Ê½À´·ÃÎÊÎļþϵͳÊý¾Ý¡£HDFSµÄ×î³õÊÇ×÷ΪApache
NutchÍøÂçËÑË÷ÒýÇæÏîÄ¿µÄ»ù´¡¡£Ä¿Ç°HDFSÊÇÒ»¸öApache HadoopµÄ×ÓÏîÄ¿¡£
1.HDFSÉè¼ÆÄ¿±ê
1£©Ó²¼þ´íÎóÊdz£Ì¬£¬¶ø·ÇÒì³£Çé¿ö£¬HDFS¿ÉÄÜÊÇÓгɰÙÉÏǧµÄserver×é³É£¬ÈκÎÒ»¸ö×é¼þ¶¼ÓпÉÄÜһֱʧЧ£¬Òò´Ë´íÎó¼ì²âºÍ¿ìËÙ¡¢×Ô¶¯µÄ»Ö¸´ÊÇHDFSµÄºËÐļܹ¹Ä¿±ê¡£
2£©ÅÜÔÚHDFSÉϵÄÓ¦ÓÃÓëÒ»°ãµÄÓ¦Óò»Í¬£¬ËüÃÇÖ÷ÒªÊÇÒÔÁ÷ʽ¶ÁΪÖ÷£¬×öÅúÁ¿´¦Àí£»±ÈÖ®¹Ø×¢Êý¾Ý·ÃÎʵĵÍÑÓ³ÙÎÊÌ⣬¸ü¹Ø¼üµÄÔÚÓÚÊý¾Ý·ÃÎʵĸßÍÌÍÂÁ¿¡£
3£©HDFSÒÔÖ§³Ö´óÊý¾Ý¼¯ºÏΪĿ±ê£¬Ò»¸ö´æ´¢ÔÚÉÏÃæµÄµäÐÍÎļþ´óСһ°ã¶¼ÔÚǧÕ×ÖÁT×Ö½Ú£¬Ò»¸öµ¥Ò»HDFSʵÀýÓ¦¸ÃÄÜÖ§³ÅÊýÒÔǧÍò¼ÆµÄÎļþ¡£
4£©HDFSÓ¦ÓöÔÎļþÒªÇóµÄÊÇwrite-one-read-many·ÃÎÊÄ£ÐÍ¡£Ò»¸öÎļþ¾¹ý´´½¨¡¢Ð´£¬¹Ø±ÕÖ®ºó¾Í²»ÐèÒª¸Ä±ä¡£ÕâÒ»¼ÙÉè¼ò»¯ÁËÊý¾ÝÒ»ÖÂÐÔÎÊ
Ì⣬ʹ¸ßÍÌÍÂÁ¿µÄÊý¾Ý·ÃÎʳÉΪ¿ÉÄÜ¡£µäÐ͵ÄÈçMapReduce¿ò¼Ü£¬»òÕßÒ»¸öweb crawlerÓ¦Óö¼ºÜÊʺÏÕâ¸öÄ£ÐÍ¡£
5£©Òƶ¯¼ÆËãµÄ´ú¼Û±ÈÖ®ÒÆ¶¯Êý¾ÝµÄ´ú¼ÛµÍ¡£Ò»¸öÓ¦ÓÃÇëÇóµÄ¼ÆË㣬ÀëËü²Ù×÷µÄÊý¾ÝÔ½½ü¾ÍÔ½¸ßЧ£¬ÕâÔÚÊý¾Ý´ïµ½º£Á¿¼¶±ðµÄʱºò¸üÊÇÈç´Ë¡£½«¼ÆËãÒÆ¶¯µ½Êý¾Ý¸½½ü£¬±ÈÖ®½«Êý¾ÝÒÆ¶¯µ½Ó¦ÓÃËùÔÚÏÔÈ»¸üºÃ£¬HDFSÌṩ¸øÓ¦ÓÃÕâÑùµÄ½Ó¿Ú¡£
6£©ÔÚÒì¹¹µÄÓ²¼þºÍÈí¼þƽ̨ÉϵĿÉÒÆÖ²ÐÔ¡£
2.HDFSºËÐÄ×é¼þ-NameNodeºÍDataNode
HDFS²ÉÓÃmaster/slave¼Ü¹¹¡£Ò»¸öHDFS¼¯ÈºÊÇÓÐÒ»¸öNamenodeºÍÒ»¶¨ÊýÄ¿µÄDatanode×é³É¡£NamenodeÊÇÒ»¸öÖÐÐÄ·þÎñÆ÷£¬¸ºÔð¹ÜÀíÎļþϵͳµÄnamespaceºÍ¿Í»§¶Ë¶ÔÎļþµÄ·ÃÎÊ¡£DatanodeÔÚ¼¯ÈºÖÐÒ»°ãÊÇÒ»¸ö½ÚµãÒ»¸ö£¬¸ºÔð¹ÜÀí½ÚµãÉÏËüÃǸ½´øµÄ´æ´¢¡£ÔÚÄÚ²¿£¬Ò»¸öÎļþÆäʵ·Ö³ÉÒ»¸ö»ò¶à¸öblock£¬ÕâЩblock´æ´¢ÔÚDatanode¼¯ºÏÀï¡£NamenodeÖ´ÐÐÎļþϵͳµÄnamespace²Ù×÷£¬ÀýÈç´ò¿ª¡¢¹Ø±Õ¡¢ÖØÃüÃûÎļþºÍĿ¼£¬Í¬Ê±¾ö¶¨blockµ½¾ßÌåDatanode½ÚµãµÄÓ³Éä¡£DatanodeÔÚNamenodeµÄÖ¸»ÓϽøÐÐblockµÄ´´½¨¡¢É¾³ýºÍ¸´ÖÆ¡£NamenodeºÍDatanode¶¼ÊÇÉè¼Æ³É¿ÉÒÔÅÜÔÚÆÕͨµÄÁ®¼ÛµÄÔËÐÐLinuxµÄ»úÆ÷ÉÏ¡£HDFS²ÉÓÃjavaÓïÑÔ¿ª·¢£¬Òò´Ë¿ÉÒÔ²¿ÊðÔںܴó·¶Î§µÄ»úÆ÷ÉÏ¡£Ò»¸öµäÐ͵IJ¿Ê𳡾°ÊÇһ̨»úÆ÷ÅÜÒ»¸öµ¥¶ÀµÄNamenode½Úµã£¬¼¯ÈºÖÐµÄÆäËû»úÆ÷¸÷ÅÜÒ»¸öDatanodeʵÀý¡£Õâ¸ö¼Ü¹¹²¢²»Åųýһ̨»úÆ÷ÉÏÅܶà¸öDatanode£¬²»¹ýÕâ±È½ÏÉÙ¼û¡£¼¯ÈºÖе¥Ò»NamenodeµÄ½á¹¹´ó´ó¼ò»¯ÁËϵͳµÄ¼Ü¹¹¡£NamenodeÊÇËùÓÐHDFSÔªÊý¾ÝµÄÖÙ²ÃÕߺ͹ÜÀíÕߣ¬ÕâÑù£¬Óû§Êý¾ÝÓÀÔ¶²»»áÁ÷¹ýNamenode¡£
HDFS¼Ü¹¹Í¼£º

3.Ãû×ֿռ䣨NameSpace£©
HDFSÖ§³Ö´«Í³µÄ²ã´ÎÐÍÎļþ×éÖ¯½á¹¹¡£Óû§»òÕßÓ¦ÓóÌÐò¿ÉÒÔ´´½¨Ä¿Â¼£¬È»ºó½«Îļþ±£´æÔÚÕâЩĿ¼Àï¡£ÎļþϵͳÃû×Ö¿Õ¼äµÄ²ã´Î½á¹¹ºÍ´ó¶àÊýÏÖÓеÄÎļþϵͳÀàËÆ£ºÓû§¿ÉÒÔ´´½¨¡¢É¾³ý¡¢Òƶ¯»òÖØÃüÃûÎļþ¡£µ±Ç°£¬HDFS²»Ö§³ÖÓû§´ÅÅÌÅä¶îºÍ·ÃÎÊȨÏÞ¿ØÖÆ£¬Ò²²»Ö§³ÖÓ²Á´½ÓºÍÈíÁ´½Ó¡£µ«ÊÇHDFS¼Ü¹¹²¢²»·Á°ÊµÏÖÕâÐ©ÌØÐÔ¡£Namenode¸ºÔðά»¤ÎļþϵͳµÄÃû×ֿռ䣬ÈκζÔÎļþϵͳÃû×Ö¿Õ¼ä»òÊôÐÔµÄÐ޸ͼ½«±»Namenode¼Ç¼ÏÂÀ´¡£Ó¦ÓóÌÐò¿ÉÒÔÉèÖÃHDFS±£´æµÄÎļþµÄ¸±±¾ÊýÄ¿¡£Îļþ¸±±¾µÄÊýÄ¿³ÆÎªÎļþµÄ¸±±¾ÏµÊý£¬Õâ¸öÐÅÏ¢Ò²ÊÇÓÉNamenode±£´æµÄ¡£
4.ͨÐÅÐÒé
ËùÓеÄHDFSͨѶÐÒé¶¼Êǽ¨Á¢ÔÚTCP/IPÐÒéÖ®ÉÏ¡£¿Í»§¶Ëͨ¹ýÒ»¸ö¿ÉÅäÖõÄTCP¶Ë¿ÚÁ¬½Óµ½Namenode£¬Í¨¹ýClientProtocolÐÒéÓëNamenode½»»¥¡£¶øDatanodeʹÓÃDatanodeProtocolÐÒéÓëNamenode½»»¥¡£Ò»¸öÔ¶³Ì¹ý³Ìµ÷ÓÃ(RPC)Ä£Ðͱ»³éÏó³öÀ´·â×°ClientProtocolºÍDatanodeprotocolÐÒé¡£ÔÚÉè¼ÆÉÏ£¬Namenode²»»áÖ÷¶¯·¢ÆðRPC£¬¶øÊÇÏìÓ¦À´×Ô¿Í»§¶Ë»ò
Datanode µÄRPCÇëÇó¡£
5.Êý¾ÝÍêÕûÐÔºÍÊý¾Ý´íÎó£¨ÐÄÌø¼ì²âºÍÖØÐ¸´ÖÆ£©
ÿ¸öDatanode½ÚµãÖÜÆÚÐÔµØÏòNamenode·¢ËÍÐÄÌøÐźš£ÍøÂç·ÖÇø¿ÉÄܵ¼ÖÂÒ»²¿·ÖDatanode¸úNamenodeʧȥÁªÏµ¡£Namenodeͨ¹ýÐÄÌøÐźŵÄȱʧÀ´¼ì²âÕâÒ»Çé¿ö£¬²¢½«ÕâЩ½üÆÚ²»ÔÙ·¢ËÍÐÄÌøÐźÅDatanode±ê¼ÇΪ崻ú£¬²»»áÔÙ½«ÐµÄIOÇëÇ󷢸øËüÃÇ¡£Èκδ洢ÔÚå´»úDatanodeÉϵÄÊý¾Ý½«²»ÔÙÓÐЧ¡£DatanodeµÄå´»ú¿ÉÄÜ»áÒýÆðһЩÊý¾Ý¿éµÄ¸±±¾ÏµÊýµÍÓÚÖ¸¶¨Öµ£¬Namenode²»¶ÏµØ¼ì²âÕâЩÐèÒª¸´ÖƵÄÊý¾Ý¿é£¬Ò»µ©·¢ÏÖ¾ÍÆô¶¯¸´ÖƲÙ×÷¡£ÔÚÏÂÁÐÇé¿öÏ£¬¿ÉÄÜÐèÒªÖØÐ¸´ÖÆ£ºÄ³¸öDatanode½ÚµãʧЧ£¬Ä³¸ö¸±±¾Ôâµ½Ë𻵣¬DatanodeÉϵÄÓ²ÅÌ´íÎ󣬻òÕßÎļþµÄ¸±±¾ÏµÊýÔö´ó¡£
´Óij¸öDatanode»ñÈ¡µÄÊý¾Ý¿éÓпÉÄÜÊÇË𻵵ģ¬Ë𻵿ÉÄÜÊÇÓÉDatanodeµÄ´æ´¢É豸´íÎó¡¢ÍøÂç´íÎó»òÕßÈí¼þbugÔì³ÉµÄ¡£HDFS¿Í»§¶ËÈí¼þʵÏÖÁ˶ÔHDFSÎļþÄÚÈݵÄУÑéºÍ(checksum)¼ì²é¡£µ±¿Í»§¶Ë´´½¨Ò»¸öеÄHDFSÎļþ£¬»á¼ÆËãÕâ¸öÎļþÿ¸öÊý¾Ý¿éµÄУÑéºÍ£¬²¢½«Ð£ÑéºÍ×÷Ϊһ¸öµ¥¶ÀµÄÒþ²ØÎļþ±£´æÔÚͬһ¸öHDFSÃû×Ö¿Õ¼äÏ¡£µ±¿Í»§¶Ë»ñÈ¡ÎļþÄÚÈݺó£¬Ëü»á¼ìÑé´ÓDatanode»ñÈ¡µÄÊý¾Ý¸úÏàÓ¦µÄУÑéºÍÎļþÖеÄУÑéºÍÊÇ·ñÆ¥Å䣬Èç¹û²»Æ¥Å䣬¿Í»§¶Ë¿ÉÒÔÑ¡Ôñ´ÓÆäËûDatanode»ñÈ¡¸ÃÊý¾Ý¿éµÄ¸±±¾¡£
6.Êý¾Ý¿é&¿Í»§¶Ë»º´æ&Á÷Ë®Ï߸´ÖÆ
HDFS±»Éè¼Æ³ÉÖ§³Ö´óÎļþ£¬ÊÊÓÃHDFSµÄÊÇÄÇЩÐèÒª´¦Àí´ó¹æÄ£µÄÊý¾Ý¼¯µÄÓ¦Óá£ÕâЩӦÓö¼ÊÇֻдÈëÊý¾ÝÒ»´Î£¬µ«È´¶Áȡһ´Î»ò¶à´Î£¬²¢ÇÒ¶ÁÈ¡ËÙ¶ÈÓ¦ÄÜÂú×ãÁ÷ʽ¶ÁÈ¡µÄÐèÒª¡£HDFSÖ§³ÖÎļþµÄ¡°Ò»´ÎдÈë¶à´Î¶ÁÈ¡¡±ÓïÒå¡£Ò»¸öµäÐ͵ÄÊý¾Ý¿é´óСÊÇ64MB¡£Òò¶ø£¬HDFSÖеÄÎļþ×ÜÊǰ´ÕÕ64M±»Çзֳɲ»Í¬µÄ¿é£¬Ã¿¸ö¿é¾¡¿ÉÄܵش洢ÓÚ²»Í¬µÄDatanodeÖС£
¿Í»§¶Ë´´½¨ÎļþµÄÇëÇóÆäʵ²¢Ã»ÓÐÁ¢¼´·¢Ë͸øNamenode£¬ÊÂʵÉÏ£¬ÔÚ¸Õ¿ªÊ¼½×¶ÎHDFS¿Í»§¶Ë»áÏȽ«ÎļþÊý¾Ý»º´æµ½±¾µØµÄÒ»¸öÁÙʱÎļþ¡£Ó¦ÓóÌÐòµÄд²Ù×÷±»Í¸Ã÷µØÖض¨Ïòµ½Õâ¸öÁÙʱÎļþ¡£µ±Õâ¸öÁÙʱÎļþÀÛ»ýµÄÊý¾ÝÁ¿³¬¹ýÒ»¸öÊý¾Ý¿éµÄ´óС£¬¿Í»§¶Ë²Å»áÁªÏµNamenode¡£Namenode½«ÎļþÃû²åÈëÎļþϵͳµÄ²ã´Î½á¹¹ÖУ¬²¢ÇÒ·ÖÅäÒ»¸öÊý¾Ý¿é¸øËü¡£È»ºó·µ»ØDatanodeµÄ±êʶ·ûºÍÄ¿±êÊý¾Ý¿é¸ø¿Í»§¶Ë¡£½Ó×ſͻ§¶Ë½«Õâ¿éÊý¾Ý´Ó±¾µØÁÙʱÎļþÉÏ´«µ½Ö¸¶¨µÄDatanodeÉÏ¡£µ±Îļþ¹Ø±Õʱ£¬ÔÚÁÙʱÎļþÖÐÊ£ÓàµÄûÓÐÉÏ´«µÄÊý¾ÝÒ²»á´«Êäµ½Ö¸¶¨µÄDatanodeÉÏ¡£È»ºó¿Í»§¶Ë¸æËßNamenodeÎļþÒѾ¹Ø±Õ¡£´ËʱNamenode²Å½«Îļþ´´½¨²Ù×÷Ìá½»µ½ÈÕÖ¾Àï½øÐд洢¡£Èç¹ûNamenodeÔÚÎļþ¹Ø±Õǰ崻úÁË£¬Ôò¸ÃÎļþ½«¶ªÊ§¡£ÉÏÊö·½·¨ÊǶÔÔÚHDFSÉÏÔËÐеÄÄ¿±êÓ¦ÓýøÐÐÈÏÕæ¿¼ÂǺóµÃµ½µÄ½á¹û¡£ÕâЩӦÓÃÐèÒª½øÐÐÎļþµÄÁ÷ʽдÈë¡£Èç¹û²»²ÉÓÿͻ§¶Ë»º´æ£¬ÓÉÓÚÍøÂçËٶȺÍÍøÂç¶ÂÈû»á¶ÔÍ̹ÀÁ¿Ôì³É±È½Ï´óµÄÓ°Ïì¡£
µ±¿Í»§¶ËÏòHDFSÎļþдÈëÊý¾ÝµÄʱºò£¬Ò»¿ªÊ¼ÊÇдµ½±¾µØÁÙʱÎļþÖС£¼ÙÉè¸ÃÎļþµÄ¸±±¾ÏµÊýÉèÖÃΪ3£¬µ±±¾µØÁÙʱÎļþÀÛ»ýµ½Ò»¸öÊý¾Ý¿éµÄ´óСʱ£¬¿Í»§¶Ë»á´ÓNamenode»ñȡһ¸öDatanodeÁбíÓÃÓÚ´æ·Å¸±±¾¡£È»ºó¿Í»§¶Ë¿ªÊ¼ÏòµÚÒ»¸öDatanode´«ÊäÊý¾Ý£¬µÚÒ»¸öDatanodeһС²¿·ÖһС²¿·Ö(4
KB)µØ½ÓÊÕÊý¾Ý£¬½«Ã¿Ò»²¿·ÖдÈë±¾µØ²Ö¿â£¬²¢Í¬Ê±´«Êä¸Ã²¿·Öµ½ÁбíÖеڶþ¸öDatanode½Úµã¡£µÚ¶þ¸öDatanodeÒ²ÊÇÕâÑù£¬Ò»Ð¡²¿·ÖһС²¿·ÖµØ½ÓÊÕÊý¾Ý£¬Ð´Èë±¾µØ²Ö¿â£¬²¢Í¬Ê±´«¸øµÚÈý¸öDatanode¡£×îºó£¬µÚÈý¸öDatanode½ÓÊÕÊý¾Ý²¢´æ´¢ÔÚ±¾µØ¡£Òò´Ë£¬DatanodeÄÜÁ÷Ë®ÏßʽµØ´Óǰһ¸ö½Úµã½ÓÊÕÊý¾Ý£¬²¢ÔÚͬʱת·¢¸øÏÂÒ»¸ö½Úµã£¬Êý¾ÝÒÔÁ÷Ë®Ïߵķ½Ê½´Óǰһ¸öDatanode¸´ÖƵ½ÏÂÒ»¸ö¡£
HDFSµÄ»ù´¡ÌØÐÔ HDFSÊÇÒ»¸öÎļþϵͳ£¬ÓÃÓÚ´æ´¢ºÍ¹ÜÀíÎļþ£¬Í¨¹ýͳһµÄÃüÃû¿Õ¼ä£¨ÀàËÆÓÚ±¾µØÎļþϵͳµÄĿ¼Ê÷£©¡£ÊÇ·Ö²¼Ê½µÄ£¬·þÎñÆ÷¼¯ÈºÖи÷¸ö½Úµã¶¼ÓÐ×Ô¼ºµÄ½ÇÉ«ºÍÖ°Ôð¡£
1.HDFSÖеÄÎļþÔÚÎïÀíÉÏÊÇ·Ö¿é´æ´¢£¨block£©£¬¿éµÄ´óС¿ÉÒÔͨ¹ýÅäÖòÎÊý( dfs.blocksize)À´¹æ¶¨£¬Ä¬ÈÏ´óСÔÚhadoop2.x°æ±¾ÖÐÊÇ128M£¬Ö®Ç°µÄ°æ±¾ÖÐÊÇ64M¡£
2.HDFSÎļþϵͳ»á¸ø¿Í»§¶ËÌṩһ¸öͳһµÄ³éÏóĿ¼Ê÷£¬¿Í»§¶Ëͨ¹ý·¾¶À´·ÃÎÊÎļþ£¬ÐÎÈ磺
hdfs://namenode:port /dir-a/dir-b/dir-c/file.data
3.**Ŀ¼½á¹¹¼°Îļþ·Ö¿éλÖÃÐÅÏ¢(ÔªÊý¾Ý)**µÄ¹ÜÀíÓÉnamenode½Úµã³Ðµ££¬namenodeÊÇHDFS¼¯ÈºÖ÷½Úµã£¬¸ºÔðά»¤Õû¸öhdfsÎļþϵͳµÄĿ¼Ê÷£¬ÒÔ¼°Ã¿Ò»¸ö·¾¶£¨Îļþ£©Ëù¶ÔÓ¦µÄÊý¾Ý¿éÐÅÏ¢£¨blockid¼°ËùÔÚµÄdatanode·þÎñÆ÷£©
4.ÎļþµÄ¸÷¸öblockµÄ´æ´¢¹ÜÀíÓÉdatanode½Úµã³Ðµ££¬datanodeÊÇHDFS¼¯Èº´Ó½Úµã£¬Ã¿Ò»¸öblock¶¼¿ÉÒÔÔÚ¶à¸ödatanodeÉÏ´æ´¢¶à¸ö¸±±¾£¨¸±±¾ÊýÁ¿Ò²¿ÉÒÔͨ¹ý²ÎÊýÉèÖÃdfs.replication£¬Ä¬ÈÏÊÇ3£©
5.Datanode»á¶¨ÆÚÏòNamenode»ã±¨×ÔÉíËù±£´æµÄÎļþblockÐÅÏ¢£¬¶ønamenodeÔò»á¸ºÔð±£³ÖÎļþµÄ¸±±¾ÊýÁ¿£¬HDFSµÄÄÚ²¿¹¤×÷»úÖÆ¶Ô¿Í»§¶Ë±£³Ö͸Ã÷£¬¿Í»§¶ËÇëÇó·ÃÎÊHDFS¶¼ÊÇͨ¹ýÏònamenodeÉêÇëÀ´½øÐС£
6.HDFSÊÇÉè¼Æ³ÉÊÊÓ¦Ò»´ÎдÈ룬¶à´Î¶Á³öµÄ³¡¾°£¬ÇÒ²»Ö§³ÖÎļþµÄÐ޸ġ£ÐèҪƵ·±µÄRPC½»»¥£¬Ð´ÈëÐÔÄܲ»ºÃ¡£
HDFS×é³É²¿·Ö namenode ºÍ datanode ¹¹³ÉÖ÷´Ó½á¹¹¡£
namenode¸ºÔð´æ´¢ÎļþµÄÔªÊý¾ÝÐÅÏ¢£¬°üÀ¨Ò»¸öÎļþµÄblock¿éµÄλÖÃÐÅÏ¢¡£
datanode¸ºÔð´æ´¢ÎļþµÄ¾ßÌåblockÊý¾Ý¡£
datanode»áÏònamenode»ã±¨Îļþ¿éÐÅÏ¢£¬²¢ÇÒ×ñ´ÓÐÄÌø¼ì²âÐÒé¡£
ΪÁË·ÀÖ¹namenode¹Òµô£¬»á´æÔÚÒ»¸ösecondarynamenode½ø³Ì£¬¸ºÔ𱸷ÝnamenodeÉϵÄÔªÊý¾ÝÐÅÏ¢¡£
hdfs½á¹¹Í¼£º

HDFSÊý¾Ý¶ÁдÓëÔªÊý¾Ý¹ÜÀí
HDFSдÊý¾Ý·ÖÎö
1. ¸ÅÊö ¿Í»§¶ËÒªÏòHDFSдÊý¾Ý£¬Ê×ÏÈÒª¸únamenodeͨÐÅÒÔÈ·ÈÏ¿ÉÒÔдÎļþ²¢»ñµÃ½ÓÊÕÎļþblockµÄdatanode£¬È»ºó¿Í»§¶Ë°´Ë³Ðò½«ÎļþÖð¸öblock´«µÝ¸øÏàÓ¦datanode£¬²¢ÓɽÓÊÕµ½blockµÄdatanode¸ºÔðÏòÆäËûdatanode¸´ÖÆblockµÄ¸±±¾¡£
2. дÊý¾Ý²½ÖèÏê½â

1£©¿Í»§¶ËÏònamenode·¢ËÍÉÏ´«ÎļþÇëÇó£¬namenode¶ÔÒªÉÏ´«Ä¿Â¼ºÍÎļþ½øÐмì²é£¬ÅжÏÊÇ·ñ¿ÉÒÔÉÏ´«£¬²¢Ïò¿Í»§¶Ë·µ»Ø¼ì²é½á¹û¡£
2£©¿Í»§¶ËµÃµ½ÉÏ´«ÎļþµÄÔÊÐíºó¶ÁÈ¡¿Í»§¶ËÅäÖã¬Èç¹ûûÓÐÖ¸¶¨ÅäÖÃÔò»á¶ÁȡĬÈÏÅäÖã¨ÀýÈ縱±¾ÊýºÍ¿é´óСĬÈÏΪ3ºÍ128M£¬¸±±¾ÊÇÓɿͻ§¶Ë¾ö¶¨µÄ£©¡£ÏònamenodeÇëÇóÉÏ´«Ò»¸öÊý¾Ý¿é¡£
3£©namenode»á¸ù¾Ý¿Í»§¶ËµÄÅäÖÃÀ´²éѯdatanodeÐÅÏ¢£¬Èç¹ûʹÓÃĬÈÏÅäÖã¬ÄÇô×îÖÕ½á¹û»á·µ»ØÍ¬Ò»¸ö»ú¼ÜµÄÁ½¸ödatanodeºÍÁíÒ»¸ö»ú¼ÜµÄdatanode¡£Õâ³ÆÎª¡°»ú¼Ü¸ÐÖª¡±²ßÂÔ¡£
»ú¼Ü¸ÐÖª£ºHDFS²ÉÓÃÒ»ÖÖ³ÆÎª»ú¼Ü¸ÐÖª(rack-aware)µÄ²ßÂÔÀ´¸Ä½øÊý¾ÝµÄ¿É¿¿ÐÔ¡¢¿ÉÓÃÐÔºÍÍøÂç´ø¿íµÄÀûÓÃÂÊ¡£´óÐÍHDFSʵÀýÒ»°ãÔËÐÐÔÚ¿çÔ½¶à¸ö»ú¼ÜµÄ¼ÆËã»ú×é³ÉµÄ¼¯ÈºÉÏ£¬²»Í¬»ú¼ÜÉϵÄÁ½Ì¨»úÆ÷Ö®¼äµÄͨѶÐèÒª¾¹ý½»»»»ú¡£ÔÚ´ó¶àÊýÇé¿öÏ£¬Í¬Ò»¸ö»ú¼ÜÄÚµÄÁ½Ì¨»úÆ÷¼äµÄ´ø¿í»á±È²»Í¬»ú¼ÜµÄÁ½Ì¨»úÆ÷¼äµÄ´ø¿í´ó¡£Í¨¹ýÒ»¸ö»ú¼Ü¸ÐÖªµÄ¹ý³Ì£¬Namenode¿ÉÒÔÈ·¶¨Ã¿¸öDatanodeËùÊôµÄ»ú¼Üid¡£Ò»¸ö¼òµ¥µ«Ã»ÓÐÓÅ»¯µÄ²ßÂÔ¾ÍÊǽ«¸±±¾´æ·ÅÔÚ²»Í¬µÄ»ú¼ÜÉÏ¡£ÕâÑù¿ÉÒÔÓÐЧ·ÀÖ¹µ±Õû¸ö»ú¼ÜʧЧʱÊý¾ÝµÄ¶ªÊ§£¬²¢ÇÒÔÊÐí¶ÁÊý¾ÝµÄʱºò³ä·ÖÀûÓöà¸ö»ú¼ÜµÄ´ø¿í¡£ÕâÖÖ²ßÂÔÉèÖÿÉÒÔ½«¸±±¾¾ùÔÈ·Ö²¼ÔÚ¼¯ÈºÖУ¬ÓÐÀûÓÚµ±×é¼þʧЧÇé¿öϵĸºÔؾùºâ¡£µ«ÊÇ£¬ÒòΪÕâÖÖ²ßÂÔµÄÒ»¸öд²Ù×÷ÐèÒª´«ÊäÊý¾Ý¿éµ½¶à¸ö»ú¼Ü£¬ÕâÔö¼ÓÁËдµÄ´ú¼Û¡£ÔÚ´ó¶àÊýÇé¿öÏ£¬¸±±¾ÏµÊýÊÇ3£¬HDFSµÄ´æ·Å²ßÂÔÊǽ«Ò»¸ö¸±±¾´æ·ÅÔÚ±¾µØ»ú¼ÜµÄ½ÚµãÉÏ£¬Ò»¸ö¸±±¾·ÅÔÚͬһ»ú¼ÜµÄÁíÒ»¸ö½ÚµãÉÏ£¬×îºóÒ»¸ö¸±±¾·ÅÔÚ²»Í¬»ú¼ÜµÄ½ÚµãÉÏ¡£ÕâÖÖ²ßÂÔ¼õÉÙÁË»ú¼Ü¼äµÄÊý¾Ý´«Ê䣬Õâ¾ÍÌá¸ßÁËд²Ù×÷µÄЧÂÊ¡£»ú¼ÜµÄ´íÎóÔ¶Ô¶±È½ÚµãµÄ´íÎóÉÙ£¬ËùÒÔÕâ¸ö²ßÂÔ²»»áÓ°Ïìµ½Êý¾ÝµÄ¿É¿¿ÐԺͿÉÓÃÐÔ¡£ÓÚ´Ëͬʱ£¬ÒòΪÊý¾Ý¿éÖ»·ÅÔÚÁ½¸ö£¨²»ÊÇÈý¸ö£©²»Í¬µÄ»ú¼ÜÉÏ£¬ËùÒԴ˲ßÂÔ¼õÉÙÁ˶ÁÈ¡Êý¾ÝʱÐèÒªµÄÍøÂç´«Êä×Ü´ø¿í¡£ÔÚÕâÖÖ²ßÂÔÏ£¬¸±±¾²¢²»ÊǾùÔÈ·Ö²¼ÔÚ²»Í¬µÄ»ú¼ÜÉÏ¡£Èý·ÖÖ®Ò»µÄ¸±±¾ÔÚÒ»¸ö½ÚµãÉÏ£¬Èý·ÖÖ®¶þµÄ¸±±¾ÔÚÒ»¸ö»ú¼ÜÉÏ£¬ÆäËû¸±±¾¾ùÔÈ·Ö²¼ÔÚʣϵĻú¼ÜÖУ¬ÕâÒ»²ßÂÔÔÚ²»Ëðº¦Êý¾Ý¿É¿¿ÐԺͶÁÈ¡ÐÔÄܵÄÇé¿öϸĽøÁËдµÄÐÔÄÜ¡£

4£©¿Í»§¶ËÔÚ¿ªÊ¼´«ÊäÊý¾Ý¿é֮ǰ»á°ÑÊý¾Ý»º´æÔÚ±¾µØ£¬µ±»º´æ´óС³¬¹ýÁËÒ»¸öÊý¾Ý¿éµÄ´óС£¬¿Í»§¶Ë¾Í»á´Ónamenode»ñȡҪÉÏ´«µÄdatanodeÁÐ±í¡£Ö®ºó»áÔÚ¿Í»§¶ËºÍµÚÒ»¸ödatanode½¨Á¢Á¬½Ó¿ªÊ¼Á÷ʽµÄ´«ÊäÊý¾Ý£¬Õâ¸ödatanode»áһС²¿·ÖһС²¿·Ö£¨4K£©µÄ½ÓÊÕÊý¾ÝÈ»ºóдÈë±¾µØ²Ö¿â£¬Í¬Ê±»á°ÑÕâЩÊý¾Ý´«Êäµ½µÚ¶þ¸ödatanode£¬µÚ¶þ¸ödatanodeҲͬÑùһС²¿·ÖһС²¿·ÖµÄ½ÓÊÕÊý¾Ý²¢Ð´Èë±¾µØ²Ö¿â£¬Í¬Ê±´«Ê䏸µÚÈý¸ödatanode£¬ÒÀ´ÎÀàÍÆ¡£ÕâÑùÖð¼¶µ÷Óúͷµ»ØÖ®ºó£¬´ýÕâ¸öÊý¾Ý¿é´«ÊäÍê³É¿Í»§¶Ëºó¸æËßnamenodeÊý¾Ý¿é´«ÊäÍê³É£¬Õâʱºònamenode²Å»á¸üÐÂÔªÊý¾ÝÐÅÏ¢¼Ç¼²Ù×÷ÈÕÖ¾¡£
5£©µÚÒ»¸öÊý¾Ý¿é´«ÊäÍê³Éºó»áʹÓÃͬÑùµÄ·½Ê½´«ÊäÏÂÃæµÄÊý¾Ý¿éÖ±µ½Õû¸öÎļþÉÏ´«Íê³É¡£
ϸ½Ú a.ÇëÇóºÍÓ¦´ðÊÇʹÓÃRPCµÄ·½Ê½£¬¿Í»§¶Ëͨ¹ýClientProtocolÓënamenodeͨÐÅ£¬namenodeºÍdatanodeÖ®¼äʹÓÃDatanodeProtocol½»»¥¡£ÔÚÉè¼ÆÉÏ£¬namenode²»»áÖ÷¶¯·¢ÆðRPC£¬¶øÊÇÏìÓ¦À´×Ô¿Í»§¶Ë»ò
datanode µÄRPCÇëÇ󡣿ͻ§¶ËºÍdatanodeÖ®¼äÊÇʹÓÃsocket½øÐÐÊý¾Ý´«Ê䣬ºÍnamenodeÖ®¼äµÄ½»»¥²ÉÓÃnio·â×°µÄRPC¡£
b.HDFSÓÐ×Ô¼ºµÄÐòÁл¯ÐÒé¡£
c.ÔÚÊý¾Ý¿é´«Êä³É¹¦ºóµ«¿Í»§¶ËûÓиæËßnamenode֮ǰÈç¹ûnamenodeå´»úÄÇôÕâ¸öÊý¾Ý¿é¾Í»á¶ªÊ§¡£
d.ÔÚÁ÷ʽ¸´ÖÆÊ±£¬Öð¼¶´«ÊäºÍÏìÓ¦²ÉÓÃÏìÓ¦¶ÓÁÐÀ´µÈ´ý´«Êä½á¹û¡£¶ÓÁÐÏìÓ¦Íê³Éºó·µ»Ø¸ø¿Í»§¶Ë¡£
c.ÔÚÁ÷ʽ¸´ÖÆÊ±Èç¹ûÓÐһ̨»òÁ½Ì¨£¨²»ÊÇÈ«²¿£©Ã»Óи´ÖƳɹ¦£¬²»Ó°Ïì×îºó½á¹û£¬Ö»²»¹ýdatanode»á¶¨ÆÚÏònamenode»ã±¨×ÔÉíÐÅÏ¢¡£Èç¹û·¢ÏÖÒì³£namenode»áÖ¸»Ódatanodeɾ³ý²ÐÓàÊý¾ÝºÍÍêÉÆ¸±±¾¡£Èç¹û¸±±¾ÊýÁ¿ÉÙÓÚij¸ö×îСֵ¾Í»á½øÈ밲ȫģʽ¡£
°²È«Ä£Ê½£ºNamenodeÆô¶¯ºó»á½øÈëÒ»¸ö³ÆÎª°²È«Ä£Ê½µÄÌØÊâ״̬¡£´¦ÓÚ°²È«Ä£Ê½µÄNamenodeÊDz»»á½øÐÐÊý¾Ý¿éµÄ¸´ÖƵġ£Namenode´ÓËùÓеÄ
Datanode½ÓÊÕÐÄÌøÐźźͿé״̬±¨¸æ¡£¿é״̬±¨¸æ°üÀ¨ÁËij¸öDatanodeËùÓеÄÊý¾Ý¿éÁÐ±í¡£Ã¿¸öÊý¾Ý¿é¶¼ÓÐÒ»¸öÖ¸¶¨µÄ×îС¸±±¾Êý¡£µ±Namenode¼ì²âÈ·ÈÏij¸öÊý¾Ý¿éµÄ¸±±¾ÊýÄ¿´ïµ½Õâ¸ö×îСֵ£¬ÄÇô¸ÃÊý¾Ý¿é¾Í»á±»ÈÏΪÊǸ±±¾°²È«(safely
replicated)µÄ£»ÔÚÒ»¶¨°Ù·Ö±È£¨Õâ¸ö²ÎÊý¿ÉÅäÖ㩵ÄÊý¾Ý¿é±»Namenode¼ì²âÈ·ÈÏÊǰ²È«Ö®ºó£¨¼ÓÉÏÒ»¸ö¶îÍâµÄ30ÃëµÈ´ýʱ¼ä£©£¬Namenode½«Í˳ö°²È«Ä£Ê½×´Ì¬¡£½ÓÏÂÀ´Ëü»áÈ·¶¨»¹ÓÐÄÄЩÊý¾Ý¿éµÄ¸±±¾Ã»Óдﵽָ¶¨ÊýÄ¿£¬²¢½«ÕâЩÊý¾Ý¿é¸´ÖƵ½ÆäËûDatanodeÉÏ¡£
HDFS¶ÁÊý¾Ý·ÖÎö
1.¸ÅÊö ¿Í»§¶Ë½«Òª¶ÁÈ¡µÄÎļþ·¾¶·¢Ë͸ønamenode£¬namenode»ñÈ¡ÎļþµÄÔªÐÅÏ¢£¨Ö÷ÒªÊÇblockµÄ´æ·ÅλÖÃÐÅÏ¢£©·µ»Ø¸ø¿Í»§¶Ë£¬¿Í»§¶Ë¸ù¾Ý·µ»ØµÄÐÅÏ¢ÕÒµ½ÏàÓ¦datanodeÖð¸ö»ñÈ¡ÎļþµÄblock²¢ÔÚ¿Í»§¶Ë±¾µØ½øÐÐÊý¾Ý×·¼ÓºÏ²¢´Ó¶ø»ñµÃÕû¸öÎļþ¡£
2.¶ÁÊý¾Ý²½ÖèÏê½â

1£©¿Í»§¶ËÏònamenode·¢ÆðRPCµ÷Óã¬ÇëÇó¶ÁÈ¡ÎļþÊý¾Ý¡£
2£©namenode¼ì²éÎļþÊÇ·ñ´æÔÚ£¬Èç¹û´æÔÚÔò»ñÈ¡ÎļþµÄÔªÐÅÏ¢£¨blockidÒÔ¼°¶ÔÓ¦µÄdatanodeÁÐ±í£©¡£
3£©¿Í»§¶ËÊÕµ½ÔªÐÅÏ¢ºóѡȡһ¸öÍøÂç¾àÀë×î½üµÄdatanode£¬ÒÀ´ÎÇëÇó¶Áȡÿ¸öÊý¾Ý¿é¡£¿Í»§¶ËÊ×ÏÈҪУ¼ìÎļþÊÇ·ñË𻵣¬Èç¹ûË𻵣¬¿Í»§¶Ë»áѡȡÁíÍâµÄdatanodeÇëÇó¡£
4£©datanodeÓë¿Í»§¶Ë¼òÀúsocketÁ¬½Ó£¬´«Êä¶ÔÓ¦µÄÊý¾Ý¿é£¬¿Í»§¶ËÊÕµ½Êý¾Ý»º´æµ½±¾µØ£¬Ö®ºóдÈëÎļþ¡£
5£©ÒÀ´Î´«ÊäʣϵÄÊý¾Ý¿é£¬Ö±µ½Õû¸öÎļþºÏ²¢Íê³É¡£
´Óij¸öDatanode»ñÈ¡µÄÊý¾Ý¿éÓпÉÄÜÊÇË𻵵ģ¬Ë𻵿ÉÄÜÊÇÓÉDatanodeµÄ´æ´¢É豸´íÎó¡¢ÍøÂç´íÎó»òÕßÈí¼þbugÔì³ÉµÄ¡£HDFS¿Í»§¶ËÈí¼þʵÏÖÁ˶ÔHDFSÎļþÄÚÈݵÄУÑéºÍ(checksum)¼ì²é¡£µ±¿Í»§¶Ë´´½¨Ò»¸öеÄHDFSÎļþ£¬»á¼ÆËãÕâ¸öÎļþÿ¸öÊý¾Ý¿éµÄУÑéºÍ£¬²¢½«Ð£ÑéºÍ×÷Ϊһ¸öµ¥¶ÀµÄÒþ²ØÎļþ±£´æÔÚͬһ¸öHDFSÃû×Ö¿Õ¼äÏ¡£µ±¿Í»§¶Ë»ñÈ¡ÎļþÄÚÈݺó£¬Ëü»á¼ìÑé´ÓDatanode»ñÈ¡µÄÊý¾Ý¸úÏàÓ¦µÄУÑéºÍÎļþÖеÄУÑéºÍÊÇ·ñÆ¥Å䣬Èç¹û²»Æ¥Å䣬¿Í»§¶Ë¿ÉÒÔÑ¡Ôñ´ÓÆäËûDatanode»ñÈ¡¸ÃÊý¾Ý¿éµÄ¸±±¾¡£
HDFSɾ³ýÊý¾Ý·ÖÎö
HDFSɾ³ýÊý¾Ý±È½ÏÁ÷³ÌÏà¶Ô¼òµ¥£¬Ö»ÁгöÏêϸ²½Öè:
1£©¿Í»§¶ËÏònamenode·¢ÆðRPCµ÷Óã¬ÇëÇóɾ³ýÎļþ¡£namenode¼ì²éºÏ·¨ÐÔ¡£
2£©namenode²éѯÎļþÏà¹ØÔªÐÅÏ¢£¬Ïò´æ´¢ÎļþÊý¾Ý¿éµÄdatanode·¢³öɾ³ýÇëÇó¡£
3£©datanodeɾ³ýÏà¹ØÊý¾Ý¿é¡£·µ»Ø½á¹û¡£
4£©namenode·µ»Ø½á¹û¸ø¿Í»§¶Ë¡£
µ±Óû§»òÓ¦ÓóÌÐòɾ³ýij¸öÎļþʱ£¬Õâ¸öÎļþ²¢Ã»ÓÐÁ¢¿Ì´ÓHDFSÖÐɾ³ý¡£Êµ¼ÊÉÏ£¬HDFS»á½«Õâ¸öÎļþÖØÃüÃû×ªÒÆµ½/trashĿ¼¡£Ö»ÒªÎļþ»¹ÔÚ/trashĿ¼ÖУ¬¸ÃÎļþ¾Í¿ÉÒÔ±»Ñ¸Ëٵػָ´¡£ÎļþÔÚ/trashÖб£´æµÄʱ¼äÊÇ¿ÉÅäÖõ쬵±³¬¹ýÕâ¸öʱ¼äʱ£¬Namenode¾Í»á½«¸ÃÎļþ´ÓÃû×Ö¿Õ¼äÖÐɾ³ý¡£É¾³ýÎļþ»áʹµÃ¸ÃÎļþÏà¹ØµÄÊý¾Ý¿é±»ÊÍ·Å¡£×¢Ò⣬´ÓÓû§É¾³ýÎļþµ½HDFS¿ÕÏпռäµÄÔö¼ÓÖ®¼ä»áÓÐÒ»¶¨Ê±¼äµÄÑÓ³Ù¡£Ö»Òª±»É¾³ýµÄÎļþ»¹ÔÚ/trashĿ¼ÖУ¬Óû§¾Í¿ÉÒÔ»Ö¸´Õâ¸öÎļþ¡£Èç¹ûÓû§Ïë»Ö¸´±»É¾³ýµÄÎļþ£¬Ëû/Ëý¿ÉÒÔä¯ÀÀ/trashĿ¼ÕһظÃÎļþ¡£/trashĿ¼½ö½ö±£´æ±»É¾³ýÎļþµÄ×îºó¸±±¾¡£/trashĿ¼ÓëÆäËûµÄĿ¼ûÓÐÊ²Ã´Çø±ð£¬³ýÁËÒ»µã£ºÔÚ¸ÃĿ¼ÉÏHDFS»áÓ¦ÓÃÒ»¸öÌØÊâ²ßÂÔÀ´×Ô¶¯É¾³ýÎļþ¡£Ä¿Ç°µÄĬÈϲßÂÔÊÇɾ³ý/trashÖб£Áôʱ¼ä³¬¹ý6СʱµÄÎļþ¡£½«À´£¬Õâ¸ö²ßÂÔ¿ÉÒÔͨ¹ýÒ»¸ö±»Á¼ºÃ¶¨ÒåµÄ½Ó¿ÚÅäÖá£
µ±Ò»¸öÎļþµÄ¸±±¾ÏµÊý±»¼õСºó£¬Namenode»áÑ¡Ôñ¹ýÊ£µÄ¸±±¾É¾³ý¡£Ï´ÎÐÄÌø¼ì²âʱ»á½«¸ÃÐÅÏ¢´«µÝ¸øDatanode¡£DatanodeËì¼´ÒÆ³ýÏàÓ¦µÄÊý¾Ý¿é£¬¼¯ÈºÖеĿÕÏпռä¼Ó´ó¡£Í¬Ñù£¬ÔÚµ÷ÓÃsetReplication
API½áÊøºÍ¼¯ÈºÖпÕÏпռäÔö¼Ó¼ä»áÓÐÒ»¶¨µÄÑÓ³Ù¡£
NameNodeÔªÊý¾Ý¹ÜÀíÔÀí·ÖÎö
1.¸ÅÊö Ê×ÏÈÃ÷È·namenodeµÄÖ°Ôð£ºÏìÓ¦¿Í»§¶ËÇëÇó¡¢¹ÜÀíÔªÊý¾Ý¡£
namenode¶ÔÔªÊý¾ÝÓÐÈýÖÖ´æ´¢·½Ê½£º
ÄÚ´æÔªÊý¾Ý(NameSystem)
´ÅÅÌÔªÊý¾Ý¾µÏñÎļþ
Êý¾Ý²Ù×÷ÈÕÖ¾Îļþ£¨¿Éͨ¹ýÈÕÖ¾ÔËËã³öÔªÊý¾Ý£©
ϸ½Ú£ºHDFS²»Êʺϴ洢СÎļþµÄÔÒò£¬Ã¿¸öÎļþ¶¼»á²úÉúÔªÐÅÏ¢£¬µ±Ð¡Îļþ¶àÁËÖ®ºóÔªÐÅÏ¢Ò²¾Í¶àÁË£¬¶Ônamenode»áÔì³ÉѹÁ¦¡£
2.¶ÔÈýÖÖ´æ´¢»úÖÆµÄ½øÒ»²½½âÊÍ ÄÚ´æÔªÊý¾Ý¾ÍÊǵ±Ç°namenodeÕýÔÚʹÓõÄÔªÊý¾Ý£¬ÊÇ´æ´¢ÔÚÄÚ´æÖеġ£
´ÅÅÌÔªÊý¾Ý¾µÏñÎļþÊÇÄÚ´æÔªÊý¾ÝµÄ¾µÏñ£¬±£´æÔÚnamenode¹¤×÷Ŀ¼ÖУ¬ËüÊÇÒ»¸ö×¼ÔªÊý¾Ý£¬×÷ÓÃÊÇÔÚnamenodeå´»úʱÄܹ»¿ìËÙ½Ï׼ȷµÄ»Ö¸´ÔªÊý¾Ý¡£³ÆÎªfsimage¡£
Êý¾Ý²Ù×÷ÈÕÖ¾ÎļþÊÇÓÃÀ´¼Ç¼ԪÊý¾Ý²Ù×÷µÄ£¬ÔÚÿ´Î¸Ä¶¯ÔªÊý¾Ýʱ¶¼»á×·¼ÓÈÕÖ¾¼Ç¼£¬Èç¹ûÓÐÍêÕûµÄÈÕÖ¾¾Í¿ÉÒÔ»¹ÔÍêÕûµÄÔªÊý¾Ý¡£Ö÷Òª×÷ÓÃÊÇÓÃÀ´ÍêÉÆfsimage£¬¼õÉÙfsimageºÍÄÚ´æÔªÊý¾ÝµÄ²î¾à¡£³ÆÎªeditslog¡£
3.checkpoint»úÖÆ·ÖÎö ÒòΪnamenode±¾ÉíµÄÈÎÎñ¾Í·Ç³£ÖØÒª£¬ÎªÁ˲»ÔÙ¸ønamenodeѹÁ¦£¬ÈÕÖ¾ºÏ²¢µ½fsimage¾ÍÒýÈëÁËÁíÒ»¸ö½ÇÉ«secondarynamenode¡£secondarynamenode¸ºÔð¶¨ÆÚ°ÑeditslogºÏ²¢µ½fsimage£¬¡°¶¨ÆÚ¡±ÊÇnamenodeÏòsecondarynamenode·¢ËÍRPCÇëÇóµÄ£¬Êǰ´Ê±¼ä»òÕßÈÕÖ¾¼Ç¼ÌõÊýΪ¡°¼ä¸ô¡±µÄ£¬ÕâÑù¼´²»»áÀ˷Ѻϲ¢²Ù×÷ÓÖ²»»áÔì³ÉfsimageºÍÄÚ´æÔªÊý¾ÝÓкܴóµÄ²î¾à¡£ÒòΪԪÊý¾ÝµÄ¸Ä±äƵÂÊÊDz»¹Ì¶¨µÄ¡£
ÿ¸ôÒ»¶Îʱ¼ä£¬»áÓÉsecondary namenode½«namenodeÉÏ»ýÀÛµÄËùÓÐeditsºÍÒ»¸ö×îеÄfsimageÏÂÔØµ½±¾µØ£¬²¢¼ÓÔØµ½ÄÚ´æ½øÐÐmerge£¨Õâ¸ö¹ý³Ì³ÆÎªcheckpoint£©¡£

1£©namenodeÏòsecondarynamenode·¢ËÍRPCÇëÇó£¬ÇëÇóºÏ²¢editslogµ½fsimage¡£
2£©secondarynamenodeÊÕµ½ÇëÇóºó´ÓnamenodeÉ϶ÁÈ¡£¨Í¨¹ýhttp·þÎñ£©editslog£¨¶à¸ö£¬¹ö¶¯ÈÕÖ¾Îļþ£©ºÍfsimageÎļþ¡£
3£©secondarynamenode»á¸ù¾ÝÄõ½µÄeditslogºÏ²¢µ½fsimage¡£ÐγÉ×îеÄfsimageÎļþ¡££¨ÖмäÓкܶಽÖ裬°ÑÎļþ¼ÓÔØµ½Äڴ棬»¹Ô³ÉÔªÊý¾Ý½á¹¹£¬ºÏ²¢£¬ÔÙÉú³ÉÎļþ£¬ÐÂÉú³ÉµÄÎļþÃûΪfsimage.checkpoint£©¡£
4£©secondarynamenodeͨ¹ýhttp·þÎñ°Ñfsimage.checkpointÎļþÉÏ´«µ½namenode£¬²¢ÇÒͨ¹ýRPCµ÷ÓðÑÎļþ¸ÄÃûΪfsimage¡£
namenodeºÍsecondary namenodeµÄ¹¤×÷Ŀ¼´æ´¢½á¹¹ÍêÈ«Ïàͬ£¬ËùÒÔ£¬µ±namenode¹ÊÕÏÍ˳öÐèÒªÖØÐ»ָ´Ê±£¬¿ÉÒÔ´Ósecondary
namenodeµÄ¹¤×÷Ŀ¼Öн«fsimage¿½±´µ½namenodeµÄ¹¤×÷Ŀ¼£¬ÒÔ»Ö¸´namenodeµÄÔªÊý¾Ý¡£
¹ØÓÚcheckpoint²Ù×÷µÄÅäÖãº
dfs.namenode.checkpoint.check.period=60 #¼ì²é´¥·¢Ìõ¼þÊÇ·ñÂú×ãµÄƵÂÊ£¬60Ãë
dfs.namenode.checkpoint.dir =file://${hadoop.tmp.dir} /dfs/namesecondary
#ÒÔÉÏÁ½¸ö²ÎÊý×öcheckpoint²Ù×÷ʱ£¬secondary namenodeµÄ±¾µØ¹¤×÷Ŀ¼
dfs.namenode.checkpoint.edits.dir =$ {dfs.namenode.checkpoint.dir}
dfs.namenode.checkpoint.max-retries =3 #×î´óÖØÊÔ´ÎÊý
dfs.namenode.checkpoint.period =3600 #Á½´ÎcheckpointÖ®¼äµÄʱ¼ä¼ä¸ô3600Ãë
dfs.namenode.checkpoint.txns =1000000 #Á½´ÎcheckpointÖ®¼ä×î´óµÄ²Ù×÷¼Ç¼
editslogºÍfsimageÎļþ´æ´¢ÔÚ$dfs.namenode.name.dir /currentĿ¼Ï£¬Õâ¸öĿ¼¿ÉÒÔÔÚhdfs-site.xmlÖÐÅäÖõġ£Õâ¸öĿ¼ÏµÄÎļþ½á¹¹ÈçÏ£º

°üÀ¨editsÈÕÖ¾Îļþ£¨¹ö¶¯µÄ¶à¸öÎļþ£©£¬ÓÐÒ»¸öÊÇedits_inprogress_*Êǵ±Ç°ÕýÔÚдµÄÈÕÖ¾¡£fsimageÎļþÒÔ¼°md5У¼ìÎļþ¡£seen_txidÊǼǼµ±Ç°¹ö¶¯ÐòºÅ£¬´ú±íseen_txid֮ǰµÄÈÕÖ¾¶¼ÒѾºÏ²¢Íê³É¡£
$dfs.namenode.name.dir/current/seen_txid·Ç³£ÖØÒª£¬ÊÇ´æ·ÅtransactionIdµÄÎļþ£¬formatÖ®ºóÊÇ0£¬Ëü´ú±íµÄÊÇnamenodeÀïÃæµÄedits_*ÎļþµÄβÊý£¬namenodeÖØÆôµÄʱºò£¬»á°´ÕÕseen_txidµÄÊý×Ö»Ö¸´¡£ËùÒÔµ±ÄãµÄhdfs·¢ÉúÒì³£ÖØÆôµÄʱºò£¬Ò»¶¨Òª±È¶Ôseen_txidÄÚµÄÊý×ÖÊDz»ÊÇÄãedits×îºóµÄβÊý£¬²»È»»á·¢ÉúÖØÆônamenodeʱmetaDataµÄ×ÊÁÏÓÐȱÉÙ£¬µ¼ÖÂÎóɾDatanodeÉ϶àÓàBlockµÄÐÅÏ¢¡£
²Ù×÷HDFSÎļþµÄ·½Ê½
ÃüÁîÐРʹÓÃhadoop fs <command>ÃüÁî¾Í¿ÉÒÔ²Ù×÷hdfsÎļþϵͳÉϵÄÎļþ£¬commandºÍlinux±¾ÎÄÎļþϵͳµÄÉÏÃæµÄÃüÁîÀàËÆ¡£
ÀýÈ磬²é¿´ÎļþÐÅÏ¢£º
Æäʵ»¹¿ÉÒÔʹÓÃÁíÍâÒ»ÖÖ¸ñʽ£º
Ч¹û¶¼ÊÇÒ»ÑùµÄ
webUI »¹¿ÉÒÔ·ÃÎÊnamenodeËùÔÚ½ÚµãµÄÍøÒ³½øÐзÃÎÊ¡£Ä¬ÈÏÍøÖ·ÊÇhttp://master:50070/¡£Ñ¡Ôñä¯ÀÀÎļþϵͳ¾Í¿ÉÒÔÁË¡£
±à³ÌAPI·½Ê½ »¹¿ÉÒÔͨ¹ý±à³ÌAPIµÄ·½Ê½·ÃÎÊhdfsÉϵÄÎļþ£¬ÖصãÕÆÎÕͨ¹ýjava·ÃÎÊ¡£
×ܽá ËäÈ»´ó²¿·ÖÄÚÈݶ¼ÊÇ´ÓÍøÉϲο´µÄ£¬µ«ÊÇÒ²ÊÇ×Ô¼ºµÄÒ»¸öѧϰ¹ý³Ì£¬×Ô¼ºËãÊÇÇå³þÁ˽âHDFSµÄ»ù´¡×é³ÉÓëÌØÐÔ£¬¿´µ½namenode/current/ϵÄĿ¼½á¹¹Ê±Ò²²»»áÄÇôµÄãȻÁË¡£
|