±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁË·Ö²¼Ê½Îļþϵͳ¡¢HDFS¼ò½é¡¢HDFSÏà¹Ø¸ÅÄî¡¢HDFSÌåϵ½á¹¹¡¢HDFS´æ´¢ÔÀíµÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×Ô²©¿ÍÔ°£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
1¡¢·Ö²¼Ê½Îļþϵͳ
¼ÆËã»ú¼¯Èº½á¹¹
·Ö²¼Ê½Îļþϵͳ°ÑÎļþ·Ö²¼´æ´¢µ½¶à¸ö½Úµã£¨¼ÆËã»ú£©ÉÏ£¬³ÉǧÉÏÍòµÄ¼ÆËã»ú½Úµã¹¹³É¼ÆËã»ú¼¯Èº¡£
·Ö²¼Ê½ÎļþϵͳʹÓõļÆËã»ú¼¯Èº£¬ÆäÅäÖö¼ÊÇÓÉÆÕͨӲ¼þ¹¹³ÉµÄ£¬ÓëÓöà¸ö´¦ÀíÆ÷ºÍרÓø߼¶Ó²¼þµÄ²¢Ðл¯´¦Àí×°ÖÃÏà±È£¬Ç°Õß´ó´ó½µµÍÁËÓ²¼þÉϵĿªÏú¡£

·Ö²¼Ê½ÎļþϵͳµÄ½á¹¹
·Ö²¼Ê½ÎļþϵͳÔÚÎïÀí½á¹¹ÉÏÊÇÓÉÖÚ¶à½×¶Î¼°½Úµã¹¹³ÉµÄ£¬¶øÕâЩ½ÚµãÖзÖΪÁ½Àà¡£Ò»ÀàÊÇÖ÷½Úµã£¨Master
Node£©£¬ÓÖ±»³ÆÎªÃû³Æ½Úµã£¨NameNode£©£¬ÁíÒ»ÀàÊǴӽڵ㣨Slave Node£©£¬ÓÖ±»³ÆÎªÊý¾Ý½Úµã£¨DataNode£©¡£

2¡¢HDFS¼ò½é
¹Ù·½Óû§Ö¸ÄÏ
HadoopÊÇÓÉHDFSºÍMapReduceÁ½´ó×é¼þ×é³ÉµÄ£¬HDFSÈ«³ÆÎªHadoop Distributed
File System£¨Hadoop ·Ö²¼Ê½Îļþϵͳ£©¡£
ËüºÍÏÖÓеķֲ¼Ê½ÎļþϵͳÓкܶ๲ͬµã¡£µ«Í¬Ê±£¬ËüºÍÆäËûµÄ·Ö²¼Ê½ÎļþϵͳµÄÇø±ðÒ²ÊǺÜÃ÷ÏԵġ£HDFSÊÇÒ»¸ö¸ß¶ÈÈÝ´íÐÔµÄϵͳ£¬Êʺϲ¿ÊðÔÚÁ®¼ÛµÄ»úÆ÷ÉÏ¡£HDFSÄÜÌṩ¸ßÍÌÍÂÁ¿µÄÊý¾Ý·ÃÎÊ£¬·Ç³£Êʺϴó¹æÄ£Êý¾Ý¼¯ÉϵÄÓ¦Óá£
HDFSҪʵÏÖµÄÄ¿±ê£º
¼æÈÝÁ®¼ÛµÄÓ²¼þÉ豸
Á÷Êý¾Ý¶Áд
´óÊý¾Ý¼¯
¼òµ¥µÄÎļþÀàÐÍ
Ç¿´óµÄ¿çƽ̨¼æÈÝÐÔ
HDFS¾ÖÏÞÐÔ£º
²»ÊʺϵÍÑÓ³ÙÊý¾Ý·ÃÎÊ
ÎÞ·¨¸ßЧ´æ´¢´óÁ¿Ð¡Îļþ£¨Óë×ÔÉíʵÏÖÓйأ©
²»Ö§³Ö¶àÓû§Ð´Èë¼°ÈÎÒâÐÞ¸ÄÎļþ
3¡¢HDFSÏà¹Ø¸ÅÄî
¿é
¡°¿é¡±ÔÚHDFSÖÐ×÷Ϊ×îС´æ´¢µ¥Î»£¬Ä¬ÈÏÒ»¸ö¿éΪ64MB¡£ÔÚHDFSÖУ¬Ò»¸öÎļþ½«»á±»·Ö¸î³É¶à¸ö¿é£¬±£´æµ½¸÷¸öÊý¾Ý½Úµã¡£¿éµÄ´óСԶԶ¸ßÓÚÆÕͨÎļþϵͳ£¬¿ÉÒÔ×îС»¯Ñ°Ö·¿ªÏú¡£
HDFSÖгéÏóµÄ¿éÄ£ÐÍ¿ÉÒÔ´øÀ´ÈçϺô¦£º
Ö§³Ö´ó¹æÄ£Îļþ´æ´¢
µ¥¸öÎļþ±»·Ö³ÉÈô¸É¸ö¿é£¬·Ö±ð´æ´¢µ½Èô¸É¸öÊý¾Ý½ÚµãÖУ¬ÆäÎļþ´óС²»»áÊܵ½µ¥¸ö½ÚµãÈÝÁ¿µÄÏÞÖÆ¡£
¼ò»¯ÏµÍ³Éè¼Æ
Îļþ¿é´óСÊǹ̶¨µÄ£¬¿ÉÒÔºÜÈÝÒ×¼ÆËã³öÒ»¸ö½ÚµãÖпÉÒÔ´æ´¢¶àÉÙ¸öÎļþ¿é¡£·½±ãÁËÔªÊý¾ÝµÄ¹ÜÀí£¬ÔªÊý¾Ý²»ÐèÒªºÍÎļþ¿éÒ»Æð±£´æ£¬¿ÉÒÔÓÉÆäËüϵͳ¸ºÔð¹ÜÀíÔªÊý¾Ý¡£
ÊʺÏÊý¾Ý±¸·Ý
ÿ¸öÎļþ¿é¶¼¿ÉÒÔÈßÓàµÄ´æ´¢µ½¶à¸öÊý¾Ý½ÚµãÉÏ£¬µ±Ò»¸ö½ÚµãÊý¾Ý³ö´íʱ£¬¾Í¿ÉÒÔ¸ù¾ÝÆäËû¸±±¾½Úµã»Ö¸´Êý¾Ý¡£´ó´óÌá¸ßÁËϵͳµÄÈÝ´íÐÔÓë¸ß¿ÉÓÃÐÔ¡£
Ãû³Æ½Úµã£¨NameNode£©ºÍÊý¾Ý½Úµã(DataNode)

NameNodeÓëSecondaryNameNodeͬΪ¡°Ãû³Æ½Úµã¡±¡£SecondaryNameNode×÷Ϊ¶þ¼¶Ãû³Æ½Úµã£¬ËüÓëNameNodeµÄ¹ØÏµÊÇ£ºSecondaryNameNodeÊÇNameNodeµÄÀ䱸·Ý¡£

Ãû³Æ½ÚµãµÄÊý¾Ý½á¹¹
ÔÚHDFSÖУ¬Ãû³Æ½Úµã£¨NameNode£©¸ºÔð¹ÜÀí·Ö²¼Ê½ÎļþϵͳµÄÃüÃû¿Õ¼ä £¨Namespace£©£¬±£´æÁËÁ½¸öºËÐĵÄÊý¾Ý½á¹¹£¬¼´FsImageºÍEditLog
¡£Ãû³Æ½Úµã¼Ç¼ÁËÿ¸öÎļþÖи÷¸ö¿éËùÔÚµÄÊý¾Ý½ÚµãµÄλÖÃÐÅÏ¢¡£
FsImage
ÓÃÓÚά»¤ÎļþϵͳÊ÷ÒÔ¼°ÎļþÊ÷ÖÐËùÓеÄÎļþºÍÎļþ¼ÐµÄÔªÊý¾Ý ¡£
EditLog
²Ù×÷ÈÕÖ¾Îļþ£¬ÆäÖмǼÁËËùÓÐÕë¶ÔÎļþµÄ´´½¨¡¢É¾³ý¡¢ÖØÃüÃûµÈ²Ù×÷ ¡£

FsImage
FsImageÎļþ°üº¬ÎļþϵͳÖÐËùÓÐĿ¼ºÍÎļþinodeµÄÐòÁл¯ÐÎʽ¡£Ã¿¸öinodeÊÇÒ» ¸öÎļþ»òĿ¼µÄÔªÊý¾ÝµÄÄÚ²¿±íʾ£¬²¢°üº¬´ËÀàÐÅÏ¢£ºÎļþµÄ¸´ÖƵȼ¶¡¢Ð޸ĺͷÃÎÊ
ʱ¼ä¡¢·ÃÎÊȨÏÞ¡¢¿é´óСÒÔ¼°×é³ÉÎļþµÄ¿é¡£¶ÔÓÚĿ¼£¬Ôò´æ´¢ÐÞ¸Äʱ¼ä¡¢È¨ÏÞºÍÅä ¶îÔªÊý¾Ý ¡£
FsImageÎļþûÓмǼ¿é´æ´¢ÔÚÄĸöÊý¾Ý½Úµã¡£¶øÊÇÓÉÃû³Æ½Úµã°ÑÕâЩӳÉä±£ÁôÔÚ ÄÚ´æÖУ¬µ±Êý¾Ý½Úµã¼ÓÈëHDFS¼¯ÈºÊ±£¬Êý¾Ý½Úµã»á°Ñ×Ô¼ºËù°üº¬µÄ¿éÁÐ±í¸æÖª¸øÃû
³Æ½Úµã£¬´Ëºó»á¶¨ÆÚÖ´ÐÐÕâÖÖ¸æÖª²Ù×÷£¬ÒÔÈ·±£Ãû³Æ½ÚµãµÄ¿éÓ³ÉäÊÇ×îеġ£
Ãû³Æ½ÚµãµÄÆô¶¯
ÔÚÃû³Æ½ÚµãÆô¶¯µÄʱºò£¬Ëü»á½«FsImageÎļþÖеÄÄÚÈݼÓÔØµ½ÄÚ´æÖУ¬Ö®ºóÔÙÖ´ÐÐ EditLogÎļþÖеĸ÷Ïî²Ù×÷£¬Ê¹µÃÄÚ´æÖеÄÔªÊý¾ÝºÍʵ¼ÊµÄͬ²½£¬´æÔÚÄÚ´æÖеÄÔªÊý
¾ÝÖ§³Ö¿Í»§¶ËµÄ¶Á²Ù×÷¡£
Ò»µ©ÔÚÄÚ´æÖгɹ¦½¨Á¢ÎļþϵͳԪÊý¾ÝµÄÓ³É䣬Ôò´´½¨Ò»¸öеÄFsImageÎļþºÍÒ»¸ö¿ÕµÄEditLogÎļþ¡£
Ãû³Æ½ÚµãÆðÀ´Ö®ºó£¬HDFSÖеĸüвÙ×÷»áÖØÐÂдµ½EditLogÎļþÖУ¬ÒòΪFsImage ÎļþÒ»°ã¶¼ºÜ´ó£¨GB¼¶±ðµÄºÜ³£¼û£©£¬Èç¹ûËùÓеĸüвÙ×÷¶¼ÍùFsImageÎļþÖÐÌí
¼Ó£¬ÕâÑù»áµ¼ÖÂϵͳÔËÐеÄÊ®·Ö»ºÂý£¬µ«ÊÇ£¬Èç¹ûÍùEditLogÎļþÀïÃæÐ´¾Í²»»áÕâÑù £¬ÒòΪEditLog
ҪСºÜ¶à¡£Ã¿´ÎÖ´ÐÐд²Ù×÷Ö®ºó£¬ÇÒÔÚÏò¿Í»§¶Ë·¢Ëͳɹ¦´úÂë֮ǰ£¬ editsÎļþ¶¼ÐèҪͬ²½¸üС£
Ãû³Æ½ÚµãÔËÐÐÆÚ¼äEditLog²»¶Ï±ä´óµÄÎÊÌâ
ÔÚÃû³Æ½ÚµãÔËÐÐÆÚ¼ä£¬HDFSµÄËùÓиüвÙ×÷¶¼ÊÇÖ±½Óдµ½EditLogÖУ¬¾Ã¶ø¾ÃÖ®£¬ EditLogÎÄ
¼þ½«»á±äµÃºÜ´ó ¡£
ËäÈ»Õâ¶ÔÃû³Æ½ÚµãÔËÐÐʱºòÊÇûÓÐʲôÃ÷ÏÔÓ°ÏìµÄ£¬µ«ÊÇ£¬µ±Ãû³Æ½ÚµãÖØÆôµÄʱºò£¬Ãû³Æ½Úµã ÐèÒªÏȽ«FsImageÀïÃæµÄËùÓÐÄÚÈÝÓ³Ïñµ½ÄÚ´æÖУ¬È»ºóÔÙÒ»ÌõÒ»ÌõµØÖ´ÐÐEditLogÖеļǼ£¬µ±EditLogÎļþ·Ç³£´óµÄʱºò£¬»áµ¼ÖÂÃû³Æ½ÚµãÆô¶¯²Ù×÷·Ç³£Âý£¬¶øÔÚÕâ¶Îʱ¼äÄÚHDFSϵͳ´¦ÓÚ°²È«Ä£Ê½£¬Ò»Ö±ÎÞ·¨¶ÔÍâÌṩд²Ù×÷£¬Ó°ÏìÁËÓû§µÄʹÓá£
Ãû³Æ½ÚµãÔËÐÐÆÚ¼äEditLog²»¶Ï±ä´óµÄÎÊÌ⣬ÈçºÎ½â¾ö£¿´ð°¸ÊÇ£ºSecondaryNameNodeµÚ¶þÃû³Æ½Úµã¡£
µÚ¶þÃû³Æ½ÚµãÊÇHDFS¼Ü¹¹ÖеÄÒ»¸ö×é³É²¿·Ö£¬ËüÊÇÓÃÀ´±£´æÃû³Æ½ÚµãÖжÔHDFSÔªÊý¾ÝÐÅÏ¢µÄ±¸·Ý£¬²¢¼õÉÙÃû³Æ½ÚµãÖØÆôµÄʱ¼ä¡£SecondaryNameNodeÒ»°ãÊǵ¥¶ÀÔËÐÐÔÚһ̨»úÆ÷ÉÏ¡£
SecondaryNameNodeµÄ¹¤×÷Çé¿ö£º
£¨1£©SecondaryNameNode»á¶¨ÆÚºÍNameNode ͨÐÅ£¬ÇëÇóÆäֹͣʹÓÃEditLogÎļþ£¬ÔÝʱ½«ÐµÄд²Ù×÷дµ½Ò»¸öеÄÎļþedit.newÉÏÀ´£¬Õâ¸ö²Ù×÷ÊÇ˲¼äÍê³É£¬ÉϲãдÈÕÖ¾µÄº¯ÊýÍêÈ«¸Ð¾õ²»µ½²î±ð¡£
£¨2£©SecondaryNameNodeͨ¹ýHTTP GET·½Ê½´ÓNameNodeÉÏ»ñÈ¡µ½FsImageºÍEditLogÎļþ£¬²¢ÏÂÔØµ½±¾µØµÄÏàӦĿ¼Ï¡£
£¨3£©SecondaryNameNode½«ÏÂÔØÏÂÀ´µÄFsImageÔØÈëµ½Äڴ棬ȻºóÒ»ÌõÒ»ÌõµØÖ´ÐÐEditLogÎļþÖеĸ÷Ïî¸üвÙ×÷£¬Ê¹µÃÄÚ´æÖеÄ
FsImage±£³Ö×îУ»Õâ¸ö¹ý³Ì¾ÍÊÇEditLogºÍ FsImageÎļþºÏ²¢¡£
£¨4£©SecondaryNameNodeÖ´ÐÐÍ꣨3£©²Ù×÷Ö®ºó£¬»áͨ¹ýpost·½Ê½½«ÐµÄFsImageÎļþ·¢Ë͵½NameNode½ÚµãÉÏ
¡£
£¨5£©NameNode½«´ÓSecondaryNameNode½ÓÊÕµ½µÄеÄFsImageÌæ»»¾ÉµÄFsImageÎļþ£¬
ͬʱ½«edit.newÌæ»»EditLogÎļþ£¬Í¨¹ýÕâ¸ö¹ý³ÌEditLog¾Í±äСÁË¡£

Êý¾Ý½Úµã£¨DataNode£©
Êý¾Ý½ÚµãÊÇ·Ö²¼Ê½ÎļþϵͳHDFSµÄ¹¤×÷½Úµã£¬¸ºÔðÊý¾ÝµÄ´æ´¢ºÍ¶ÁÈ¡£¬»á¸ù¾Ý¿Í »§¶Ë»òÕßÊÇÃû³Æ½ÚµãµÄµ÷¶ÈÀ´½øÐÐÊý¾ÝµÄ´æ´¢ºÍ¼ìË÷£¬²¢ÇÒÏòÃû³Æ½Úµã¶¨ÆÚ·¢ËÍ×Ô¼º
Ëù´æ´¢µÄ¿éµÄÁÐ±í ¡£
ÿ¸öÊý¾Ý½ÚµãÖеÄÊý¾Ý»á±»±£´æÔÚ¸÷×Ô½ÚµãµÄ±¾µØLinuxÎļþϵͳÖС£
4¡¢HDFSÌåϵ½á¹¹
¸ÅÊö
HDFS²ÉÓÃÁËÖ÷´Ó£¨Master/Slave£©½á¹¹Ä£ÐÍ£¬Ò»¸öHDFS¼¯Èº°üÀ¨Ò»¸öÃû³Æ½Úµã£¨ NameNode£©ºÍÈô¸É¸öÊý¾Ý½Úµã£¨DataNode£©¡£Ãû³Æ½Úµã×÷ΪÖÐÐÄ·þÎñÆ÷£¬
¸ºÔð¹ÜÀíÎļþϵͳµÄÃüÃû¿Õ¼ä¼°¿Í»§¶Ë¶ÔÎļþµÄ·ÃÎÊ¡£¼¯ÈºÖеÄÊý¾Ý½ÚµãÒ»°ãÊÇÒ»¸ö½ÚµãÔËÐÐ Ò»¸öÊý¾Ý½Úµã½ø³Ì£¬¸ºÔð´¦ÀíÎļþϵͳ¿Í»§¶ËµÄ¶Á/дÇëÇó£¬ÔÚÃû³Æ½ÚµãµÄͳһµ÷¶ÈϽøÐÐÊý¾Ý
¿éµÄ´´½¨¡¢É¾³ýºÍ¸´ÖƵȲÙ×÷¡£Ã¿¸öÊý¾Ý½ÚµãµÄÊý¾Ýʵ¼ÊÉÏÊDZ£´æÔÚ±¾µØLinuxÎļþϵͳÖеġ£

HDFSÃüÃû¿Õ¼ä¹ÜÀí
HDFSµÄÃüÃû¿Õ¼ä°üº¬Ä¿Â¼¡¢ÎļþºÍ¿é¡£
ÔÚHDFS1.0Ìåϵ½á¹¹ÖУ¬ÔÚÕû¸öHDFS¼¯ÈºÖÐÖ»ÓÐÒ»¸öÃüÃû¿Õ¼ä£¬²¢ÇÒÖ»ÓÐΨһһ¸öÃû³Æ½Úµã£¬¸Ã½Úµã¸ºÔð¶ÔÕâ¸öÃüÃû¿Õ¼ä½øÐйÜÀí
¡£
HDFSʹÓõÄÊÇ´«Í³µÄ·Ö¼¶ÎļþÌåϵ£¬Òò´Ë£¬Óû§¿ÉÒÔÏñʹÓÃÆÕͨÎļþϵͳһÑù£¬´´½¨¡¢É¾³ýĿ¼ºÍÎļþ£¬ÔÚĿ¼¼ä×ªÒÆÎļþ£¬ÖØÃüÃûÎļþµÈ¡£
ͨÐÅÐÒé
HDFSÊÇÒ»¸ö²¿ÊðÔÚ¼¯ÈºÉϵķֲ¼Ê½Îļþϵͳ£¬Òò´Ë£¬ºÜ¶àÊý¾ÝÐèҪͨ¹ýÍøÂç½øÐд«Êä¡£
ËùÓеÄHDFSͨÐÅÐÒé¶¼Êǹ¹½¨ÔÚTCP/IPÐÒé»ù´¡Ö®Éϵġ£
¿Í»§¶Ëͨ¹ýÒ»¸ö¿ÉÅäÖõĶ˿ÚÏòÃû³Æ½ÚµãÖ÷¶¯·¢ÆðTCPÁ¬½Ó£¬²¢Ê¹Óÿͻ§¶ËÐÒéÓë Ãû³Æ½Úµã½øÐн»»¥¡£
Ãû³Æ½ÚµãºÍÊý¾Ý½ÚµãÖ®¼äÔòʹÓÃÊý¾Ý½ÚµãÐÒé½øÐн»»¥¡£
¿Í»§¶ËÓëÊý¾Ý½ÚµãµÄ½»»¥ÊÇͨ¹ýRPC£¨Remote Procedure Call£©À´ÊµÏֵġ£ÔÚÉè ¼ÆÉÏ£¬Ãû³Æ½Úµã²»»áÖ÷¶¯·¢ÆðRPC£¬¶øÊÇÏìÓ¦À´×Ô¿Í»§¶ËºÍÊý¾Ý½ÚµãµÄRPCÇëÇó¡£
¿Í»§¶Ë
¿Í»§¶ËÊÇÓû§²Ù×÷HDFS×î³£Óõķ½Ê½£¬HDFSÔÚ²¿Êðʱ¶¼ÌṩÁ˿ͻ§¶Ë¡£
HDFS¿Í»§¶ËÊÇÒ»¸ö¿â£¬±©Â¶ÁËHDFSÎļþϵͳ½Ó¿Ú£¬ÕâЩ½Ó¿ÚÒþ²ØÁËHDFSʵÏÖÖеĴ󲿷ָ´ÔÓÐÔ¡£
ÑϸñÀ´Ëµ£¬¿Í»§¶Ë²¢²»ËãÊÇHDFSµÄÒ»²¿·Ö¡£
¿Í»§¶Ë¿ÉÒÔÖ§³Ö´ò¿ª¡¢¶ÁÈ¡¡¢Ð´ÈëµÈ³£¼ûµÄ²Ù×÷£¬²¢ÇÒÌṩÁËÀàËÆShellµÄÃüÁîÐз½Ê½À´·ÃÎÊHDFSÖеÄÊý¾Ý
´ËÍ⣬HDFSÒ²ÌṩÁËJava API£¬×÷ΪӦÓóÌÐò·ÃÎÊÎļþϵͳµÄ¿Í»§¶Ë±à³Ì½Ó¿Ú¡£
HDFSÌåϵ½á¹¹µÄ¾ÖÏÞÐÔ
HDFSÖ»ÉèÖÃΨһһ¸öÃû³Æ½Úµã£¬ÕâÑù×öËäÈ»´ó´ó¼ò»¯ÁËϵͳÉè¼Æ£¬µ«Ò²´øÀ´ÁËһЩ Ã÷ÏԵľÖÏÞÐÔ£¬¾ßÌåÈçÏ£º
£¨1£©ÃüÃû¿Õ¼äµÄÏÞÖÆ£ºÃû³Æ½ÚµãÊDZ£´æÔÚÄÚ´æÖеģ¬Òò´Ë£¬Ãû³Æ½ÚµãÄܹ»ÈÝÄÉµÄ ¶ÔÏó£¨Îļþ¡¢¿é£©µÄ¸öÊý»áÊܵ½ÄÚ´æ¿Õ¼ä´óСµÄÏÞÖÆ¡£
£¨2£©ÐÔÄܵį¿¾±£ºÕû¸ö·Ö²¼Ê½ÎļþϵͳµÄÍÌÍÂÁ¿£¬ÊÜÏÞÓÚµ¥¸öÃû³Æ½ÚµãµÄÍÌÍÂÁ¿¡£
£¨3£©¸ôÀëÎÊÌ⣺ÓÉÓÚ¼¯ÈºÖÐÖ»ÓÐÒ»¸öÃû³Æ½Úµã£¬Ö»ÓÐÒ»¸öÃüÃû¿Õ¼ä£¬Òò´Ë£¬ÎÞ·¨ ¶Ô²»Í¬Ó¦ÓóÌÐò½øÐиôÀë¡£
£¨4£©¼¯ÈºµÄ¿ÉÓÃÐÔ£ºÒ»µ©Õâ¸öΨһµÄÃû³Æ½Úµã·¢Éú¹ÊÕÏ£¬»áµ¼ÖÂÕû¸ö¼¯Èº±äµÃ²» ¿ÉÓá£
5¡¢HDFS´æ´¢ÔÀí
ÈßÓàÊý¾Ý±£´æ
×÷Ϊһ¸ö·Ö²¼Ê½Îļþϵͳ£¬ÎªÁ˱£Ö¤ÏµÍ³µÄÈÝ´íÐԺͿÉÓÃÐÔ£¬HDFS²ÉÓÃÁ˶ั ±¾·½Ê½¶ÔÊý¾Ý½øÐÐÈßÓà´æ´¢£¬Í¨³£Ò»¸öÊý¾Ý¿éµÄ¶à¸ö¸±±¾»á±»·Ö²¼µ½²»Í¬µÄÊý¾Ý½Úµã
ÉÏ£¬ÈçͼËùʾ£¬Êý¾Ý¿é1±»·Ö±ð´æ·Åµ½Êý¾Ý½ÚµãAºÍCÉÏ£¬Êý¾Ý¿é2±»´æ·ÅÔÚÊý¾Ý½Ú µãAºÍBÉÏ¡£
ÕâÖֶั±¾·½Ê½¾ßÓÐÒÔϼ¸¸öÓŵ㣺
£¨1£©¼Ó¿ìÊý¾Ý´«ÊäËÙ¶È¡£
£¨2£©ÈÝÒ×¼ì²éÊý¾Ý´íÎó¡£
£¨3£©±£Ö¤Êý¾Ý¿É¿¿ÐÔ¡£

Êý¾Ý´æÈ¡²ßÂÔ
Êý¾Ý´æ·Å
BlockµÄ¸±±¾·ÅÖòßÂÔ£º
µÚÒ»¸ö¸±±¾£º·ÅÖÃÔÚÉÏ´«ÎļþµÄÊý¾Ý½Úµã£»Èç¹ûÊǼ¯ÈºÍâÌá½»£¬ÔòËæ»úÌôѡһ̨´ÅÅÌ ²»Ì«Âú¡¢CPU²»Ì«Ã¦µÄ½Úµã¡£
µÚ¶þ¸ö¸±±¾£º·ÅÖÃÔÚÓëµÚÒ»¸ö¸±±¾²»Í¬µÄ»ú¼ÜµÄ½ÚµãÉÏ¡£
µÚÈý¸ö¸±±¾£ºÓëµÚÒ»¸ö¸±±¾Ïàͬ»ú¼ÜµÄÆäËû½ÚµãÉÏ¡£
¸ü¶à¸±±¾£ºËæ»ú½Úµã¡£

Êý¾Ý¶ÁÈ¡
HDFSÌṩÁËÒ»¸öAPI¿ÉÒÔÈ·¶¨Ò»¸öÊý¾Ý½ÚµãËùÊôµÄ»ú¼ÜID£¬¿Í»§¶ËÒ²¿ÉÒÔµ÷ÓÃAPI »ñÈ¡×Ô¼ºËùÊôµÄ»ú¼ÜID¡£
µ±¿Í»§¶Ë¶ÁÈ¡Êý¾Ýʱ£¬´ÓÃû³Æ½Úµã»ñµÃÊý¾Ý¿é²»Í¬¸±±¾µÄ´æ·ÅλÖÃÁÐ±í£¬ÁбíÖаü º¬Á˸±±¾ËùÔÚµÄÊý¾Ý½Úµã£¬¿ÉÒÔµ÷ÓÃAPIÀ´È·¶¨¿Í»§¶ËºÍÕâЩÊý¾Ý½ÚµãËùÊôµÄ»ú¼ÜID£¬
µ±·¢ÏÖij¸öÊý¾Ý¿é¸±±¾¶ÔÓ¦µÄ»ú¼ÜIDºÍ¿Í»§¶Ë¶ÔÓ¦µÄ»ú¼ÜIDÏàͬʱ£¬¾ÍÓÅÏÈÑ¡Ôñ¸Ã¸±±¾¶ÁÈ¡Êý¾Ý£¬Èç¹ûûÓз¢ÏÖ£¬¾ÍËæ»úÑ¡ÔñÒ»¸ö¸±±¾¶ÁÈ¡Êý¾Ý¡£
Êý¾Ý´íÎóÓë»Ö¸´
HDFS¾ßÓнϸߵÄÈÝ´íÐÔ£¬¿ÉÒÔ¼æÈÝÁ®¼ÛµÄÓ²¼þ£¬Ëü°ÑÓ²¼þ³ö´í¿´×÷Ò»ÖÖ³£Ì¬£¬ ¶ø²»ÊÇÒì³££¬²¢Éè¼ÆÁËÏàÓ¦µÄ»úÖÆ¼ì²âÊý¾Ý´íÎóºÍ½øÐÐ×Ô¶¯»Ö¸´£¬Ö÷Òª°üÀ¨ÒÔϼ¸ÖÖ
ÇéÐΣºÃû³Æ½Úµã³ö´í¡¢Êý¾Ý½Úµã³ö´íºÍÊý¾Ý³ö´í¡£
Ãû³Æ½Úµã³ö´í
Ãû³Æ½Úµã±£´æÁËËùÓеÄÔªÊý¾ÝÐÅÏ¢£¬ÆäÖУ¬×îºËÐĵÄÁ½´óÊý¾Ý½á¹¹ÊÇFsImageºÍEditlog£¬Èç¹ûÕâÁ½¸öÎļþ·¢ÉúË𻵣¬ÄÇôÕû¸öHDFSʵÀý½«Ê§Ð§¡£Òò´Ë£¬HDFSÉèÖÃÁ˱¸·Ý»úÖÆ£¬°ÑÕâЩºËÐÄÎļþͬ²½¸´ÖƵ½±¸·Ý·þÎñÆ÷SecondaryNameNodeÉÏ¡£µ±Ãû³Æ½Úµã³ö´íʱ£¬¾Í¿ÉÒÔ¸ù¾Ý±¸·Ý·þÎñÆ÷SecondaryNameNodeÖеÄFsImageºÍEditlogÊý¾Ý½øÐлָ´¡£
Êý¾Ý½Úµã³ö´í
ÿ¸öÊý¾Ý½Úµã»á¶¨ÆÚÏòÃû³Æ½Úµã·¢ËÍ¡°ÐÄÌø¡±ÐÅÏ¢£¬ÏòÃû³Æ½Úµã±¨¸æ×Ô¼ºµÄ״̬¡£
µ±Êý¾Ý½Úµã·¢Éú¹ÊÕÏ£¬»òÕßÍøÂç·¢Éú¶ÏÍøÊ±£¬Ãû³Æ½Úµã¾ÍÎÞ·¨ÊÕµ½À´×ÔһЩÊý¾Ý½ÚµãµÄÐÄÌøÐÅÏ¢£¬Õâʱ£¬ÕâЩÊý¾Ý½Úµã¾Í»á±»±ê¼ÇΪ¡°å´»ú¡±£¬½ÚµãÉÏÃæµÄËùÓÐÊý¾Ý¶¼»á±»±ê¼ÇΪ¡°²»¿É¶Á¡±£¬Ãû³Æ½Úµã²»»áÔÙ¸øËüÃÇ·¢ËÍÈκÎI/OÇëÇó¡£
Õâʱ£¬ÓпÉÄܳöÏÖÒ»ÖÖÇéÐΣ¬¼´ÓÉÓÚһЩÊý¾Ý½ÚµãµÄ²»¿ÉÓ㬻ᵼÖÂһЩÊý¾Ý¿éµÄ¸±±¾ÊýÁ¿Ð¡ÓÚÈßÓàÒò×Ó¡£
Ãû³Æ½Úµã»á¶¨ÆÚ¼ì²éÕâÖÖÇé¿ö£¬Ò»µ©·¢ÏÖij¸öÊý¾Ý¿éµÄ¸±±¾ÊýÁ¿Ð¡ÓÚÈßÓàÒò×Ó£¬¾Í»áÆô¶¯Êý¾ÝÈßÓà¸´ÖÆ£¬ÎªËüÉú³Éеĸ±±¾¡£
HDFSºÍÆäËü·Ö²¼Ê½ÎļþϵͳµÄ×î´óÇø±ð¾ÍÊÇ¿ÉÒÔµ÷ÕûÈßÓàÊý¾ÝµÄλÖá£
Êý¾Ý³ö´í
ÍøÂç´«ÊäºÍ´ÅÅÌ´íÎóµÈÒòËØ£¬¶¼»áÔì³ÉÊý¾Ý´íÎó¡£
¿Í»§¶ËÔÚ¶ÁÈ¡µ½Êý¾Ýºó£¬»á²ÉÓÃmd5ºÍsha1¶ÔÊý¾Ý¿é½øÐÐУÑ飬ÒÔÈ·¶¨¶ÁÈ¡µ½ÕýÈ·µÄÊý¾Ý¡£
ÔÚÎļþ±»´´½¨Ê±£¬¿Í»§¶Ë¾Í»á¶Ôÿһ¸öÎļþ¿é½øÐÐÐÅϢժ¼£¬²¢°ÑÕâЩÐÅϢдÈ뵽ͬһ¸ö·¾¶µÄÒþ²ØÎļþÀïÃæ¡£
µ±¿Í»§¶Ë¶ÁÈ¡ÎļþµÄʱºò£¬»áÏȶÁÈ¡¸ÃÐÅÏ¢Îļþ£¬È»ºó£¬ÀûÓøÃÐÅÏ¢Îļþ¶Ôÿ¸ö¶Á È¡µÄÊý¾Ý¿é½øÐÐУÑ飬Èç¹ûУÑé³ö´í£¬¿Í»§¶Ë¾Í»áÇëÇóµ½ÁíÍâÒ»¸öÊý¾Ý½Úµã¶ÁÈ¡¸ÃÎļþ¿é£¬²¢ÇÒÏòÃû³Æ½Úµã±¨¸æÕâ¸öÎļþ¿éÓдíÎó£¬Ãû³Æ½Úµã»á¶¨ÆÚ¼ì²é²¢ÇÒÖØÐ¸´ÖÆÕâ¸ö¿é¡£
6¡¢HDFS¶Áд¹ý³Ì
FileSystemÊÇÒ»¸öͨÓÃÎļþϵͳµÄ³éÏó»ùÀ࣬¿ÉÒÔ±»·Ö²¼Ê½Îļþϵͳ¼Ì³Ð£¬ËùÓпÉÄÜʹÓà HadoopÎļþϵͳµÄ´úÂ룬¶¼ÒªÊ¹ÓÃÕâ¸öÀà¡£
HadoopΪFileSystemÕâ¸ö³éÏóÀàÌṩÁ˶àÖÖ¾ßÌåʵÏÖ¡£
DistributedFileSystem¾ÍÊÇFileSystemÔÚHDFSÎļþϵͳÖеľßÌåʵÏÖ¡£
FileSystemµÄopen()·½·¨·µ»ØµÄÊÇÒ»¸öÊäÈëÁ÷FSDataInputStream¶ÔÏó£¬ÔÚHDFSÎļþϵͳÖÐ
£¬¾ßÌåµÄÊäÈëÁ÷¾ÍÊÇDFSInputStream£»FileSystemÖеÄcreate()·½·¨·µ»ØµÄÊÇÒ»¸öÊä³öÁ÷
FSDataOutputStream¶ÔÏó£¬ÔÚHDFSÎļþϵͳÖУ¬¾ßÌåµÄÊä³öÁ÷¾ÍÊÇDFSOutputStream¡£
Configuration
conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
FSDataInputStream in = fs.open(new Path(uri));
FSDataOutputStream out = fs.create(new Path(uri)); |
±¸×¢£º´´½¨Ò»¸öConfiguration¶ÔÏóʱ£¬Æä¹¹Ôì·½·¨»áĬÈϼÓÔØ¹¤³ÌÏîÄ¿ÏÂÁ½¸öÅäÖÃÎļþ£¬·Ö±ðÊÇ
hdfs-site.xmlÒÔ¼°core-site.xml£¬ÕâÁ½¸öÎļþÖлáÓзÃÎÊHDFSËùÐèµÄ²ÎÊýÖµ£¬Ö÷ÒªÊÇ
fs.defaultFS£¬Ö¸¶¨ÁËHDFSµÄµØÖ·£¨±ÈÈçhdfs://localhost:9000£©£¬ÓÐÁËÕâ¸öµØÖ·¿Í»§¶Ë¾Í¿ÉÒÔ
ͨ¹ýÕâ¸öµØÖ··ÃÎÊHDFSÁË¡£
¶ÁÈ¡Îļþ
import java.io.BufferedReader;
import java.io.InputStreamReader ;
import org.apache.hadoop.conf.Configuration ;
import org.apache.hadoop.fs.FileSystem ;
import org.apache.hadoop.fs.Path ;
import org.apache.hadoop.fs.FSDataInputStream
;
public class Chapter3 {
public static void main(String[] args) {
try {
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
Path filename = new Path (¡°hdfs://localhost: 9000/user/hadoop/test.txt");
FSDataInputStream is = fs.open(filename);
BufferedReader d = new BufferedReader (new InputStreamReader(is));
String content = d.readLine(); //¶ÁÈ¡ÎļþÒ»ÐÐ
System.out.println(content);
d.close(); //¹Ø±ÕÎļþ
fs.close(); //¹Ø±Õhdfs
} catch (Exception e) {
e.printStackTrace();
}
}
} |

дÈëÎļþ
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.Path;
public class Chapter3 {
public static void main(String[] args) {
try {
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
byte[] buff = "Hello world".getBytes();
// ҪдÈëµÄÄÚÈÝ
String filename = " hdfs://localhost: 9000/user/hadoop/test.txt
"; //ҪдÈëµÄÎļþÃû
FSDataOutputStream os = fs.create(new Path(filename));
os.write(buff,0,buff.length);
System.out.println("Create:"+ filename);
} catch (Exception e) {
e.printStackTrace();
}
}
} |

7¡¢HDFS±à³Ìʵ¼ù
Ê×ÏÈÆô¶¯hadoop
$ cd /usr/local/hadoop
$ ./bin/hdfs namenode -format # ¸ñʽ»¯hdfsÎļþϵͳ£¬³õʼ»¯Ê±Ê¹Óã¬Ö®Ç°Ö´Ðкó¾Í²»ÐèÔÙÖ´ÐÐ
$ ./bin/start-dfs.sh
³£ÓÃÃüÁî
HDFSÓкܶàshellÃüÁÆäÖУ¬fsÃüÁî¿ÉÒÔ˵ÊÇHDFS×î³£ÓõÄÃüÁî¡£ÀûÓøÃÃüÁî¿ÉÒÔ ²é¿´HDFSÎļþϵͳµÄĿ¼½á¹¹¡¢ÉÏ´«ºÍÏÂÔØÊý¾Ý¡¢´´½¨ÎļþµÈ¡£
¸ÃÃüÁîµÄÓ÷¨Îª£º hadoop fs [genericOptions] [commandOptions]
±¸×¢£ºHadoopÖÐÓÐÈýÖÖShellÃüÁʽ£º
hadoop fsÊÊÓÃÓÚÈκβ»Í¬µÄÎļþϵͳ£¬±ÈÈç±¾µØÎļþϵͳºÍHDFSÎļþϵͳ¡£
hadoop dfsÖ»ÄÜÊÊÓÃÓÚHDFSÎļþϵͳ¡£
hdfs dfs¸úhadoop dfsµÄÃüÁî×÷ÓÃÒ»Ñù£¬Ò²Ö»ÄÜÊÊÓÃÓÚHDFSÎļþϵͳ¡£
ʵÀý
hadoop fs -ls :ÏÔʾָ¶¨µÄÎļþµÄÏêϸÐÅÏ¢
hadoop fs -mkdir :´´½¨Ö¸¶¨µÄÎļþ¼Ð
ÀýÖС°./¡±±íʾ¡°/usr/local/hadoop/bin¡±Â·¾¶¡£

hadoop fs -cat :½«Ö¸¶¨µÄÎļþµÄÄÚÈÝÊä³öµ½±ê×¼Êä³ö£¨stdout£©
hadoop fs -copyFromLocal :½«±¾µØÔ´Îļþ¸´ÖƵ½Â·¾¶Ö¸¶¨µÄÎļþ»òÎļþ¼ÐÖÐ

WEB¹ÜÀí½çÃæ
http://ip:50070,ĬÈ϶˿Ú50070

ÀûÓÃJava APIÓëHDFS½øÐн»»¥
mavenÏîÄ¿ÖÐÒýÈë

дһ¸öFileSystem»ñÈ¡¹¤¾ßÀࣺ

ʵÀý£ºÀûÓÃhadoop µÄjava api¼ì²âα·Ö²¼Ê½ÎļþϵͳHDFSÉÏÊÇ·ñ´æÔÚij¸öÎļþ£¿
ÆäÖÐ172.20.10.6ÊÇÎÒhadoop»úÆ÷ÉϵÄipµØÖ·¡£


ÑéÖ¤Ò»ÏÂÊÇ·ñ´æÔÚ£º

ʵÀý£ºÐ´HDFSÉϵÄÎļþ£¿


ʵÀý£º¶ÁHDFSÉϵÄÎļþ£¿


³£¼û´íÎó£º
java.net.ConnectException
Connection refused: no further information
´ËÀý»·¾³£ºwindowsÖа²×°ÐéÄâ»úÔËÐÐHadoop¡£ÓÉÓÚhadoopÖÐcore-site.xmlÖÐÉèÖõÄfs.defaultFSÊÇhdfs://localhost:9000£¬ËùÒÔ±¨´í£¬Ó¦¸Ã½«lcoalhostÌæ»»³É×Ô¼ºÐéÄâ»ú·ÖÅäµÄipµØÖ·£¬Ö®ºóÖØÆôhadoop¡£
¼ÇµÃ¿ªÆô¶ÔÓ¦µÄÐéÄâ»ú¶Ë¿Ú£¬¶Ë¿Ú먦Æô»á±¨´í¡£¡¶CentOS7 Öпª·Å¶Ë¿Ú¡·
org.apache.hadoop .security.AccessControlException
Permission denied: user=22113, access=WRITE, inode="/user/hadoop" :hadoop:supergroup:drwxr-xr-x
ûÓÐдÈëȨÏÞ£¬Ó¦¸ÃÉèÖøÃÎļþ¼ÐȨÏÞ¡£

ÎļþȨÏÞÓɶÁ¡¢¿ÉÖ´Ðбä³É¶Á¡¢Ð´¡¢¿ÉÖ´ÐС£ÏÖÔÚ/user/22113Îļþ¼Ð½Ô¿ÉÒÔдÈëÄÚÈÝÁË¡£
org.apache.hadoop.ipc .RemoteException(java.io.IOException)
File /user/22113/test.txt could only be replicated
to 0 nodes instead of minReplication (=1). There are
1 datanode(s) running and 1 node(s) are excluded in
this operation.
Õâ¸ö´íÎó´ÓÍøÉÏÕÒÁ˺ܾ㬶¼Ã»½â¾ö¡£ÓÐÈË˵ÊÇDataNodeûÆô¶¯£¬µ«ÊÇÎÒÓÃjpsÃüÁî²é¿´£¬·¢ÏÖDataNodeÊÇÔÚÔËÐС£»¹ÓÐÈË˵ÊÇformat¶à´ÎNameNodeÓëDataNodeµ¼Öµģ¬¿ÉÊÇÕâ¶¼²»ÊÇÔÒò¡£ºóÀ´Í»È»ÏëÆð¹Ø±ÕÐéÄâ»ú·À»ðǽ£¬·¢Ï־ͿÉÒÔÁË£¬¹¦ÄÜÕý³£ÔË×÷£¬¾ßÌåÔÒò´ý·ÖÎö¡£
±¾ÎľͽéÉܵ½ÕâÀïÁË¡£
|