ǰÑÔ
¡¶HDFS NameNodeÄÚ´æÈ«¾°¡·ÖУ¬ÎÒÃÇ´ÓNameNodeÄÚ²¿Êý¾Ý½á¹¹µÄÊӽǣ¬¶ÔËüµÄÄÚ´æÈ«¾°¼°¼¸¸ö¹Ø¼üÊý¾Ý½á¹¹½øÐÐÁ˼òµ¥½â¶Á£¬²¢½áºÏʵ¼Ê³¡¾°½éÉÜÁËNameNode¿ÉÄÜÓöµ½µÄÎÊÌ⣬»¹ÓÐÒµ½ç½øÐкáÏòÀ©Õ¹·½ÃæµÄ¶àÖÖ¿É½è¼ø½â¾ö·½°¸¡£
ÊÂʵÉÏ£¬¶ÔNameNodeʵʩºáÏòÀ©Õ¹Ç°£¬»áÃæÁÙ³£×¤ÄÚ´æËæÊý¾Ý¹æÄ£³ÖÐøÔö³¤µÄÇé¿ö£¬Îª´ËÐèÒª¾Àú²»¶Ïµ÷ÕûNameNodeÄÚ´æµÄ¶Ñ¿Õ¼ä´óСµÄ¹ý³Ì£¬ÆÚ¼ä»áÓöµ½¼¸¸öÎÊÌ⣺
1.µ±Ç°ÄÚ´æ¿Õ¼äÔ¤ÆÚÄܹ»Ö§³Å¶à³¤Ê±¼ä¡£
2.ºÎʱµ÷Õû¶Ñ¿Õ¼äÒÔÓ¦¶ÔÊý¾Ý¹æÄ£Ôö³¤¡£
3.Ôö¼Ó¶à´ó¶Ñ¿Õ¼ä¡£
ÁíÒ»·½ÃæNameNode¶Ñ¿Õ¼äÓÖ²»ÄÜÎÞÖ¹¾³Ôö¼Ó£¬µ½´ïãÐÖµºó£¨Óë»úÐÍ¡¢JVM°æ±¾¡¢GC²ßÂÔµÈÏà¹Ø£©Í¬Ñù»á´æÔÚDZÔÚÎÊÌ⣺
1.ÖØÆôʱ¼ä±ä³¤¡£
2.DZÔÚµÄFGC·çÏÕ
Óɴ˿ɼû£¬¶ÔNameNodeÄÚ´æÊ¹ÓÃÇé¿öµÄϸÁ£¶ÈÕÆ¿Ø£¬¿ÉÒÔΪÓÅ»¯ÄÚ´æÊ¹Óûòµ÷ÕûÄÚ´æ´óСÌṩ¸üºÃµÄ¾ö²ßÖ§³Ö¡£
±¾ÎÄÔÚǰƪ¡¶HDFS NameNodeÄÚ´æÈ«¾°¡·ÎÄÕµĻù´¡ÉÏ£¬Õë¶ÔÇ°ÃæµÄ¼¸¸öÎÊÌ⣬½øÒ»²½¶ÔNameNodeºËÐÄÊý¾Ý½á¹¹µÄÄÚ´æÊ¹ÓÃÇé¿ö½øÐÐÏêϸ¶¨Á¿·ÖÎö£¬²¢¸ø³ö¿É¹©²Î¿¼µÄÄÚ´æÔ¤¹ÀÄ£ÐÍ¡£¸ù¾Ý·ÖÎö½á¹û¿ÉÓÐÕë¶ÔµÄÓÅ»¯¼¯Èº´æ´¢×ÊԴʹÓÃģʽ£¬Í¬Ê±ÀûÓÃÄÚ´æÔ¤¹ÀÄ£ÐÍ£¬¿ÉÒÔÌáǰ¶ÔÄÚ´æ×ÊÔ´½øÐкÏÀí¹æ»®£¬ÎªHDFSµÄ·¢Õ¹ÌṩÊý¾Ý²Î¿¼ÒÀ¾Ý¡£
ÄÚ´æ·ÖÎö
NetworkTopology
NameNodeͨ¹ýNetworkTopologyά»¤Õû¸ö¼¯ÈºµÄÊ÷×´ÍØÆË½á¹¹£¬µ±¼¯ÈºÆô¶¯¹ý³ÌÖУ¬Í¨¹ý»ú¼Ü¸ÐÖª£¨Í¨³£¶¼ÊÇÍⲿ½Å±¾¼ÆË㣩Öð½¥½¨Á¢ÆðÕû¸ö¼¯ÈºµÄ»ú¼ÜÍØÆË½á¹¹£¬Ò»°ãÔÚNameNodeµÄÉúÃüÖÜÆÚÄÚ²»»á·¢Éú´ó±ä»¯¡£ÍØÆË½á¹¹µÄÒ¶×Ó½ÚµãDatanodeDescriptorÊDZêʶDataNodeµÄ¹Ø¼ü½á¹¹£¬¸ÃÀà¼Ì³Ð¹ØÏµÈçͼ1Ëùʾ¡£

ͼ1 DatanodeDescriptor¼Ì³Ð¹ØÏµ
ÔÚ64λJVMÖУ¬DatanodeDescriptorÄÚ´æÊ¹ÓÃÇé¿öÈçͼ2Ëùʾ£¨³ýÌØÊâ˵Ã÷Í⣬ºóÐø¶ÔÆäËüÊý¾Ý½á¹¹µÄÄÚ´æÊ¹ÓÃÇé¿ö·ÖÎö¾ù»ùÓÚ64λJVM£©¡£

ͼ2 DatanodeDescriptorÄÚ´æÊ¹ÓÃÏê½â
ÓÉÓÚDataNode½ÚµãÒ»°ã»á¹ÒÔØ¶à¿é²»Í¬ÀàÐÍ´æ´¢µ¥Ôª£¬ÈçHDD¡¢SSDµÈ£¬Í¼2ÖÐstorageMapÃèÊöµÄÕýÊÇ´æ´¢½éÖÊDatanodeStorageInfo¼¯ºÏ£¬ÆäÏêϸÊý¾Ý½á¹¹Èçͼ3Ëùʾ¡£

ͼ3 DatanodeStorageInfoÄÚ´æÊ¹ÓÃÏê½â
³ý´ËÖ®Í⣬DatanodeDescriptor»¹°üÀ¨Ò»²¿·Ö¶¯Ì¬ÄÚ´æ¶ÔÏó£¬ÈçreplicateBlocks¡¢recoverBlocksºÍinvalidateBlocksµÈÓëÊý¾Ý¿é¶¯Ì¬µ÷ÕûÏà¹ØµÄÊý¾Ý½á¹¹£¬pendingCached¡¢cachedºÍpendingUncachedµÈÓ뼯ÖÐʽ»º´æÏà¹ØµÄÊý¾Ý½á¹¹¡£ÓÉÓÚÕâЩÊý¾Ý¾ùÊô¶¯Ì¬µÄÐÎʽÁÙʱ´æÔÚ£¬ËæÊ±»á·¢Éú±ä»¯£¬ËùÒÔÕâÀïûÓÐ×ö½øÒ»²½Ïêϸͳ¼Æ£¨½á¹û´æÔÚÉÙÐíÎó²î£©¡£
¸ù¾ÝÇ°ÃæµÄ·ÖÎö£¬¼ÙÉ輯ȺÖаüÀ¨2000¸öDataNode½Úµã£¬NameNodeά»¤Õⲿ·ÖÐÅÏ¢ÐèÒªÕ¼ÓõÄÄÚ´æ×ÜÁ¿£º
£¨64 + 114 + 56 + 109 ? 16£©? 2000 = ~4MB
ÔÚÊ÷×´»ú¼ÜÍØÆË½á¹¹ÖУ¬³ýÁËÒ¶×Ó½ÚµãDatanodeDescriptorÍ⣬»¹°üÀ¨ÄÚ²¿½ÚµãInnerNodeÃèÊö¼¯ÈºÍØÆË½á¹¹Öлú¼ÜÐÅÏ¢¡£

ͼ4 NetworkTopologyÍØÆË½á¹¹ÄÚ²¿½ÚµãÄÚ´æÊ¹ÓÃÏê½â
¶ÔÓÚÕⲿ·ÖÃèÊö»ú¼ÜÐÅÏ¢µÈ½ÚµãÐÅÏ¢£¬¼ÙÉ輯Ⱥ°üÀ¨80¸ö»ú¼ÜºÍ2000¸öDataNode½Úµã£¬NameNodeά»¤ÍØÆË½á¹¹ÖÐÄÚ²¿½ÚµãÐÅÏ¢ÐèÒªÕ¼ÓõÄÄÚ´æ×ÜÁ¿£º
£¨44 + 48) ? 80 + 8 ? 2000 = ~25KB
´ÓÉÏÃæµÄ·ÖÎö¿ÉÒÔ¿´µ½£¬ÎªÎ¬»¤¼¯ÈºµÄÍØÆË½á¹¹NetworkTopology£¬µ±¼¯Èº¹æÄ£Îª2000ʱ£¬ÐèÒªµÄÄÚ´æ¿Õ¼ä²»³¬¹ý5MB£¬°´ÕÕ½Ó½üÏßÐÔÔö³¤Ç÷ÊÆ£¬¼´Ê¹¼¯Èº¹æÄ£½Ó½ü10000£¬Õⲿ·ÖÄÚ´æ¿Õ¼ä~25MB£¬Ïà±ÈÕû¸öNameNode
JVMµÄÄڴ濪Ïú΢ºõÆä΢¡£
NameSpace
Ó봫ͳµ¥»úÎļþϵͳÏàËÆ£¬HDFS¶ÔÎļþϵͳµÄĿ¼½á¹¹Ò²Êǰ´ÕÕÊ÷×´½á¹¹Î¬»¤£¬NameSpace±£´æµÄÕýÊÇÕû¸öĿ¼Ê÷¼°Ä¿Â¼Ê÷ÉÏÿ¸öĿ¼/Îļþ½ÚµãµÄÊôÐÔ£¬°üÀ¨£ºÃû³Æ£¨name£©£¬±àºÅ£¨id£©£¬ËùÊôÓû§£¨user£©£¬ËùÊô×飨group£©£¬È¨ÏÞ£¨permission£©£¬ÐÞ¸Äʱ¼ä£¨mtime£©£¬·ÃÎÊʱ¼ä£¨atime£©£¬×ÓĿ¼/Îļþ£¨children£©µÈÐÅÏ¢¡£
ÏÂͼ5ΪNamespaceÖÐINodeµÄÀàͼ½á¹¹£¬´ÓÀàͼ¿ÉÒÔ¿´³ö£¬ÎļþINodeFileºÍĿ¼INodeDirectoryµÄ¼Ì³Ð¹ØÏµ¡£ÆäÖÐĿ¼ÔÚÄÚ´æÖÐÓÉINodeDirectory¶ÔÏóÀ´±íʾ£¬²¢ÓÃList
children³ÉÔ±ÁбíÀ´ÃèÊö¸ÃĿ¼ÏµÄ×ÓĿ¼»òÎļþ£»ÎļþÔÚÄÚ´æÖÐÔòÓÉINodeFileÀ´±íʾ£¬²¢ÓÃBlockInfo[]
blocksÊý×é±íʾ¸ÃÎļþÓÉÄÄЩBlocks×é³É¡£ÆäËüÊôÐÔÓɼ̳йØÏµµÄ¸÷¸öÏàÓ¦×ÓÀà³ÉÔ±±äÁ¿±êʶ¡£

ͼ5 ÎļþºÍĿ¼¼Ì³Ð¹ØÏµ
Ŀ¼ºÍÎļþ½á¹¹Ôڼ̳йØÏµÖи÷ÊôÐÔµÄÄÚ´æÕ¼ÓÃÇé¿öÈçͼ6Ëùʾ¡£

ͼ6 Ŀ¼ºÍÎļþÄÚ´æÊ¹ÓÃÏê½â
³ýͼÖÐÌáµ½µÄÊôÐÔÐÅÏ¢Í⣬һЩ¸½¼ÓÈçACLµÈ·ÇͨÓÃÊôÐÔ£¬Ã»ÓÐÔÚͳ¼Æ·¶Î§ÄÚ¡£ÔÚĬÈϳ¡¾°Ï£¬INodeFileºÍINodeDirectory.withQuotaFeatureÊÇÏà¶ÔͨÓú͹㷺ʹÓõ½µÄÁ½¸ö½á¹¹¡£
¸ù¾ÝÇ°ÃæµÄ·ÖÎö£¬¼ÙÉèHDFSĿ¼ºÍÎļþÊý·Ö±ðΪ1ÒÚ£¬Block×ÜÁ¿ÔÚ1ÒÚÇé¿öÏ£¬Õû¸öNamespaceÔÚJVMÖÐÄÚ´æÊ¹ÓÃÇé¿ö£º
Total(Directory) = (24 + 96 + 44 + 48)
? 100M + 8 ? num(total children)
Total(Files) = (24 + 96 + 48) ? 100M
+ 8 ? num(total blocks)
Total = (24 + 96 + 44 + 48) ? 100M
+ 8 ? num(total children) + (24 + 96 + 48) ? 100M +
8 ? num(total blocks) = ~38GB
¹ØÓÚÔ¤¹À·½·¨µÄ¼¸µã˵Ã÷£º
1.¶ÔĿ¼Ê÷½á¹¹ÖÐËùÓеÄDirectory¾ù°´ÕÕĬÈÏINodeDirectory.withQuotaFeature½á¹¹½øÐйÀË㣬Èç¹û¼¯Èº¿ªÆôACL/SnapshotdµÈÌØÐÔ£¬ÐèÔö¼ÓÕⲿ·ÖÄڴ濪Ïú¡£
2.¶ÔĿ¼Ê÷½á¹¹ÖÐËùÓеÄFile°´ÕÕINodeFile½øÐйÀËã¡£
3.´ÓÕû¸öĿ¼Ê÷µÄ¸¸×Ó¹ØÏµÉÏ¿´£¬num(total children)¾ÍÊÇĿ¼½ÚµãÊýºÍÎļþ½ÚµãÊýÖ®ºÍ¡£
4.²¿·ÖÊý¾Ý½á¹¹ÖаüÀ¨ÁË×Ö·û´®£¬°´ÕÕ¾ùÖµ³¤¶ÈΪ8½øÐÐÔ¤¹À£¬Êµ¼ÊÇé¿ö¿ÉÄÜ»áÉÔ´ó¡£
NamespaceÔÚJVM¶ÑÄÚ´æ¿Õ¼äÖг£×¤£¬ÔÚNameNodeµÄÕû¸öÉúÃüÖÜÆÚÒ»Ö±ÔÚÄÚ´æ´æÔÚ£¬Í¬Ê±Îª±£Ö¤Êý¾ÝµÄ¿É¿¿ÐÔ£¬NameNode»á¶¨ÆÚ¶ÔÆä½øÐÐCheckpoint£¬½«NamespaceÎﻯµ½Íⲿ´æ´¢É豸¡£Ëæ×ÅÊý¾Ý¹æÄ£µÄÔö¼Ó£¬ÎļþÊý/Ŀ¼Ê÷Ò²»áËæÖ®Ôö¼Ó£¬Õû¸öNamespaceËùÕ¼ÓõÄJVMÄÚ´æ¿Õ¼äÒ²»á»ù±¾±£³ÖÏßÐÔͬ²½Ôö¼Ó¡£
BlocksMap
HDFS½«Îļþ°´ÕÕÒ»¶¨µÄ´óСÇгɶà¸öBlock£¬ÎªÁ˱£Ö¤Êý¾Ý¿É¿¿ÐÔ£¬Ã¿¸öBlock¶ÔÓ¦¶à¸ö¸±±¾£¬´æ´¢ÔÚ²»Í¬DataNodeÉÏ¡£NameNode³ýÐèҪά»¤Block±¾ÉíµÄÐÅÏ¢Í⣬»¹ÐèҪά»¤´ÓBlockµ½DataNodeÁбíµÄ¶ÔÓ¦¹ØÏµ£¬ÓÃÓÚÃèÊöÿһ¸öBlock¸±±¾Êµ¼Ê´æ´¢µÄÎïÀíλÖã¬BlockManagerÖÐBlocksMap½á¹¹¼´ÓÃÓÚBlockµ½DataNodeÁбíµÄÓ³Éä¹ØÏµ¡£BlocksMapÄÚ²¿Êý¾Ý½á¹¹Èçͼ7Ëùʾ¡£

ͼ7 BlockInfo¼Ì³Ð¹ØÏµ
BlocksMap¾¹ý¶à´ÎÓÅ»¯Ðγɵ±Ç°½á¹¹£¬×î³õ°æ±¾Ö±½ÓʹÓÃHashMap½â¾ö´ÓBlockµ½BlockInfoµÄÓ³Éä¡£ÓÉÓÚÔÚÄÚ´æÊ¹Óá¢Åöײ³åÍ»½â¾öºÍÐÔÄܵȷ½Ãæ´æÔÚÎÊÌ⣬֮ºóʹÓÃÖØÐÂʵÏÖµÄLightWeightGSet´úÌæHashMap£¬¸ÃÊý¾Ý½á¹¹±¾ÖÊÉÏÒ²ÊÇÀûÓÃÁ´±í½â¾öÅöײ³åÍ»µÄHashTable£¬µ«ÊÇÔÚÒ×ÓÃÐÔ¡¢ÄÚ´æÕ¼ÓúÍÐÔÄܵȷ½Ãæ±íÏÖ¸üºÃ¡£¹ØÓÚÒýÈëLightWeightGSetϸ½Ú¿É²Î¿¼HDFS-1114¡£
ÓëHashMapÏà±È£¬ÎªÁ˾¡¿ÉÄܱÜÃâÅöײ³åÍ»£¬BlocksMapÔÚ³õʼ»¯Ê±Ö±½Ó·ÖÅäÕû¸öJVM¶Ñ¿Õ¼äµÄ2%×÷ΪLightWeightGSetµÄË÷Òý¿Õ¼ä£¬µ±È»2%²»ÊǾø¶ÔÖµ£¬Èç¹û2%ÄÚ´æ¿Õ¼ä¿É³ÐÔØµÄË÷ÒýÏ³öÁËInteger.MAX_VALUE/8£¨×¢£ºObject.hashCode()½á¹ûÊÇint£¬¶ÔÓÚ64λJVMµÄ¶ÔÏóÒýÓÃÕ¼ÓÃ8Bytes£©»á½«Æä×Ô¶¯µ÷Õûµ½ãÐÖµÉÏÏÞ¡£ÏÞ¶¨JVM¶Ñ¿Õ¼äµÄ2%»ù±¾ÉÏÀ´×Ô¾ÑéÖµ£¬¼Ù¶¨¶ÔÓÚ64λJVM»·¾³£¬Èç¹ûÌṩ64GBÄÚ´æ´óС£¬Ë÷ÒýÏî¿É³¬¹ý1ÒÚ£¬Èç¹ûHashº¯ÊýÊʵ±£¬»ù±¾¿ÉÒÔ±ÜÃâÅöײ³åÍ»¡£
BlocksMapµÄºËÐŦÄÜÊÇͨ¹ýBlockID¿ìËÙ¶¨Î»µ½¾ßÌåµÄBlockInfo£¬¹ØÓÚBlockInfoÏêϸµÄÊý¾Ý½á¹¹Èçͼ8Ëùʾ¡£BlockInfo¼Ì³Ð×ÔBlock£¬³ýÁËBlock¶ÔÏóÖÐBlockID£¬numbytesºÍtimestampÐÅÏ¢Í⣬×îÖØÒªµÄÊǸÃBlockÎïÀí´æ´¢ËùÔڵĶÔÓ¦DataNodeÁбíÐÅÏ¢triplets¡£

ͼ8 BlocksMapÄÚ´æÊ¹ÓÃÏê½â
ÆäÖÐLightWeightGSet¶ÔÓ¦µÄÄÚ´æ¿Õ¼äÈ«¾ÖΨһ¡£¾¡¹Ü¾¹ýLightWeightGSetÓÅ»¯ÄÚ´æÕ¼Ó㬵«ÊÇBlocksMapÈÔȻռÓÃÁË´óÁ¿JVMÄÚ´æ¿Õ¼ä£¬¼ÙÉ輯ȺÖй²1ÒÚBlock£¬NameNode¿ÉÓÃÄÚ´æ¿Õ¼ä¹Ì¶¨´óС128GB£¬ÔòBlocksMapÕ¼ÓÃÄÚ´æÇé¿ö£º
16 + 24 + 2% ? 128GB +£¨ 40 + 128 £©?
100M = ~20GB
BlocksMapÊý¾ÝÔÚNameNodeÕû¸öÉúÃüÖÜÆÚÄÚ³£×¤ÄÚ´æ£¬Ëæ×ÅÊý¾Ý¹æÄ£µÄÔö¼Ó£¬¶ÔÓ¦BlockÊý»áËæÖ®Ôö¶à£¬BlocksMapËùÕ¼ÓõÄJVM¶ÑÄÚ´æ¿Õ¼äÒ²»á»ù±¾±£³ÖÏßÐÔͬ²½Ôö¼Ó¡£
С½á
NameNodeÄÚ´æÊý¾Ý½á¹¹·Ç³£·á¸»£¬³ýÁËÇ°ÃæÏêϸ·ÖÎöµÄºËÐÄÊý¾Ý½á¹¹Í⣬Æäʵ»¹°üÀ¨ÈçLeaseManager/SnapShotManager/CacheManagerµÈ¹ÜÀíµÄÊý¾Ý£¬ÓÉÓÚÄÚ´æÊ¹Ó÷dz£ÓÐÏÞ£¬»òÌØÐÔδÎȶ¨Ã»ÓпªÆô£¬»òûÓÐͨÓÃÐÔ£¬ÕâÀï¶¼²»ÔÙÕ¹¿ª¡£
¸ù¾ÝǰÊö¶ÔNameNodeÄÚ´æµÄÔ¤¹À£¬¶Ô±ÈHadoop¼¯ÈºÀúʷʵ¼ÊÊý¾Ý£ºÎļþĿ¼×ÜÁ¿~140M£¬Êý¾Ý¿é×ÜÁ¿~160M£¬NameNode
JVMÅäÖÃ72GB£¬Ô¤¹ÀÄÚ´æÊ¹ÓÃÇé¿ö£º
Namespace£º(24 + 96 + 44 + 48) ? 70M
+ 8 ? 140M + (24 + 96 + 48) ? 70M + 8 ? 160M = ~27GB
BlocksMap£º16 + 24 + 2% ? 72GB +£¨ 40
+ 128 £©? 160M = ~26GB
˵Ã÷£ºÕâÀï°´ÕÕĿ¼ÎļþÊýÕ¼±È1:1½øÐÐÁ˼ò»¯£¬»ù±¾Óëʵ¼ÊÇé¿öÎǺϣ¬ÇÒ¼ò»¯¶ÔÄÚ´æÔ¤¹À½á¹ûÓ°Ïì·Ç³£Ð¡¡£
¶þÕß×éºÏ½á¹û~53GB£¬½á¹ûÓë¼à¿ØÊý¾ÝÏÔʾ³£×¤ÄÚ´æ~52GB»ù±¾Ïàͬ£¬·ûºÏʵ¼ÊÇé¿ö¡£
´ÓÇ°ÃæÌÖÂÛ¿ÉÒÔ¿´³ö£¬Õû¸öNameNode¶ÑÄÚ´æÖУ¬Õ¼¿Õ¼ä×î´óµÄÁ½¸ö½á¹¹ÎªNamespaceºÍBlocksMap£¬µ±Êý¾Ý¹æÄ£Ôö¼Óºó£¬¾Þ´óµÄÄÚ´æÕ¼ÓÃÊÆ±Ø»á¸øJVMÄÚ´æ¹ÜÀí´øÀ´ÌôÕ½£¬ÉõÖÁ¿ÉÄÜÖÆÔ¼NameNode·þÎñÄÜÁ¦±ß½ç¡£
Õë¶ÔNamespaceºÍBlocksMapµÄ¿Õ¼äÕ¼ÓùæÄ££¬ÓÐÁ½¸öÓÅ»¯·½Ïò£º
1.ºÏ²¢Ð¡Îļþ¡£Ê¹ÓÃHive×öÊý¾ÝÉú²úʱ£¬Îª±ÜÃâÑÏÖØµÄÊý¾ÝÇãб¡¢ÈËΪµ÷С·ÖÇøÁ£¶ÈµÈÒ»Ð©ÌØÊâÔÒò£¬¿ÉÄÜ»áÔÚHDFSÉÏдÈë´óÁ¿Ð¡Îļþ£¬»á¸øNameNode´øÀ´Ç±ÔÚµÄÓ°Ïì¡£¼°Ê±ºÏ²¢Ð¡Îļþ£¬±£³ÖÎȶ¨µÄĿ¼ÎļþÔö³¤Ç÷ÊÆ£¬¿ÉÓÐЧ±ÜÃâNameNodeÄÚ´æ¶¶¶¯¡£
2. Êʵ±µ÷ÕûBlockSize¡£ÈçǰÊö£¬¸üÉÙµÄBlockÊýÒ²¿É½µµÍÄÚ´æÊ¹Ó㬲»¹ýBlockSizeµ÷Õû»á¼ä½ÓÓ°Ïìµ½¼ÆËãÈÎÎñ£¬ÐèÒª½øÐÐÊʵ±µÄȨºâ¡£
¶Ô±ÈÆäËûJava·þÎñ£¬NameNode³¡¾°Ïà¶ÔÌØÊ⣬ÐèÒª¶ÔJVM²¿·ÖĬÈϲÎÊý½øÐÐÊʵ±µ÷Õû¡£±ÈÈçYoung/Old¿Õ¼ä±ÈÀý£¬Îª±ÜÃâCMS
GC½µ¼¶µ½FGCÓ°Ïì·þÎñ¿ÉÓÃÐÔ£¬Êʵ±µ÷Õû´¥·¢CMS GC¿ªÊ¼µÄãÐÖµµÈµÈ¡£¹ØÓÚJVMÏà¹Ø²ÎÊýµ÷Õû²ßÂÔµÄϸ½Ú½¨Òé²Î¿¼¹Ù·½Ê¹ÓÃÎĵµ¡£
ÕâÀ±ÊÕ߸ù¾Ýʵ¼ùÌṩ¼¸µãNameNodeÄÚ´æÏà¹ØµÄ¾Ñ鹩²Î¿¼£º
1.¸ù¾ÝÔªÊý¾ÝÔö³¤Ç÷ÊÆ£¬²Î¿¼±¾ÎÄǰÊöµÄÄÚ´æ¿Õ¼äÕ¼ÓÃÔ¤¹À·½·¨£¬Äܹ»´óÌåµÃµ½NameNode³£×¤ÄÚ´æ´óС£¬Ò»°ã°´ÕÕ³£×¤ÄÚ´æÕ¼ÄÚ´æ×ÜÁ¿~60%µ÷ÕûJVMÄÚ´æ´óС¿É»ù±¾Âú×ãÐèÇó¡£
2.Ϊ±ÜÃâGC³öÏÖ½µ¼¶µÄÎÊÌ⣬¿É½«CMSInitiatingOccupancyFractionµ÷Õûµ½~70¡£
3.NameNodeÖØÆô¹ý³ÌÖУ¬ÓÈÆäÊÇDataNode½øÐÐBlockReport¹ý³ÌÖУ¬»á´´½¨´óÁ¿ÁÙʱ¶ÔÏó£¬Îª±ÜÃâÆä½úÉýµ½OldÇøµ¼ÖÂÆµ·±GCÉõÖÁÓÕ·¢FGC£¬¿ÉÊʵ±µ÷´óYoungÇø£¨-XX:NewRatio£©µ½10~15?
¾ÝÁ˽⣬Õë¶ÔNameNodeµÄʹÓó¡¾°£¬Ê¹ÓÃCMSÄÚ´æ»ØÊÕ²ßÂÔ£¬½«HotSpot
JVMÄÚ´æ¿Õ¼äµ÷Õûµ½180GB£¬¿ÉÌṩÎȶ¨·þÎñ¡£¼ÌÐøÉϵ÷ÓпÉÄܶÔJVMÄÚ´æ¹ÜÀíÄÜÁ¦´øÀ´ÌôÕ½£¬ÓÈÆäÊÇÄÚ´æ»ØÊÕ·½Ã棬һµ©·¢ÉúFGC¶ÔÓ¦ÓÃÊÇÖÂÃüµÄ¡£ÕâÀïÌáµ½180GB´óС²¢²»ÊǾø¶ÔÖµ£¬ÄÜ·ñÔÚ´Ë»ù´¡ÉϼÌÐøµ÷´óÇÒÄܹ»Îȶ¨·þÎñ²»ÔÚ±¾ÎĵÄÌÖÂÛ·¶Î§¡£½áºÏǰÊöµÄÔ¤¹À·½·¨£¬µ±¿ÉÓÃJVMÄÚ´æ´ï180GBʱ£¬¿É¹ÜÀíÔªÊý¾Ý×ÜÁ¿´ï~700M£¬»ù±¾Äܹ»Âú×ãÖÐС¹æÄ£ÒÔϼ¯ÈºÐèÇó¡£
×ܽá
±¾ÎÄÔÚ¡¶HDFS NameNodeÄÚ´æÈ«¾°¡·»ù´¡ÉÏ£¬¶ÔNameNodeÄÚ´æÊ¹ÓÃÕ¼±È½Ï¸ßµÄ¼¸¸öºËÐÄÊý¾Ý½á¹¹½øÐÐÁËÏêϸµÄ½éÉÜ¡£ÔÚ´Ë»ù´¡ÉÏ£¬ÌṩÁ˿ɹ©²Î¿¼µÄNameNodeÄÚ´æÊý¾Ý¿Õ¼äÕ¼ÓÃÔ¤¹ÀÄ£ÐÍ£º
Total = 198 ? num(Directory + Files)
+ 176 ? num(blocks) + 2% ? size(JVM Memory Size)
ͨ¹ý¶ÔNameNodeÄÚ´æÊ¹ÓÃÇé¿öµÄ¶¨Á¿·ÖÎö£¬¿ÉΪHDFSÓÅ»¯ºÍ·¢Õ¹¹æ»®Ìṩ¿É½è¼øµÄÊý¾Ý²Î¿¼ÒÀ¾Ý¡£ |