丹调生活 发表于 2018-10-29 10:45:07

hadoop之hdfs的理解

  HDFS的存储原理是什么?
  HDFS是一个分布式文件系统,它将一个文件分成一个或多个块,每个块默认大小是64M,(当然也可以自己调整大小)存储在DataNode节点上。
  一个标准的HDFS集群有3个守护进程组成。
  Namenode:集群中的数目有1个,主要用来存储文件系统的元数据信息。
  元数据中包含的信息有:文件的ownship和permissions;文件包含那些快,以及备份;块保存    在那些datanode上(启动时后,datanode自己会上报)。Namenode其本身是一个jetty服务器,用来进行名称查询的。在启动时候,会首先加载元数据信息至内存中,存储在磁盘文件名为fsimage。
  但是block的位置信息不会保存到fsimage内。这样设计的好处是即便datanode的IP地址或者主机名发生了改变,也不影响文件系统中元数据的存储。管理员只需拆下硬盘,将它们插入新的机箱,然后启动新机器,这依然不会影响元数据的存储。
  fsimage:元数据镜像文件
  Editslog记录HDFS元数据的变化。
  DataNode:Slave节点,奴隶,干活的。负责存储client发来的数据块block;执行数据块的读写操作。
  SecondNameNode:是NameNode的冷备份;合并fsimage和fsedits然后再发给namenode。
  冷备份:b是a的冷备份,如果a坏掉。那么b不能马上代替a工作。但是b上存储a的一些信息,减少a坏掉之后的损失。
  热备份:b是a的热备份,如果a坏掉。那么b马上运行代替a的工作。
  namenode内存中存储的是=fsimage+edits。
  4.NameNode和SecondNode之间的关系?
  客户端进行HDFS文件操作(创建,修改,复制,删除)时,首先会把这个操作记录在日志文件中(EditsLog)中。在日志记录这个操作后,NameNode修改内存中的文件系统的元数据信息。这个操作成功之后,日志都会被同步到文件系统中去。fsimage文件(命名空间印象文件)是内存中元数据在硬盘上CheckPoint的结果,不能从硬盘上直接打开修改fsimage文件。SecondDataNode的作用就是帮助DataNode将内存中的元数据CheckPoint到硬盘上。
  CHeckPoint的过程如下。
  (1)SecondNameNode通知NameNode生成新的日志文件,以后的日志都会记录在新的日志文件中。
  (2)SecondNameNode用HTTP Get从NameNode节点获得fsimage文件及旧的日志文件。
  (3)SecondNameNode将fsimage加载到内存中,并执行日志文件中的所有操作,然后生成新的fsimage文件。
  (4)SecondNameNode用HTTP Post将fsimage文件传送给NameNode。
  (5)NameNode这时候,就可以使用新的fsimage文件和新的日志文件,写入此次CheckPoint的时间。
  SecondNameNode周期性的合并,可以在配置文件中core-site.xml中进行设置。
  fs.checkpoint.period//时间周期    fs.checkpoint.size//日志文件的大小。
  如果NameNode损坏,这时候就需要人工从NameNode恢复数据,会或多或少丢失一部分数据。
  所以尽量将其SecondNameNode和NameNode分开,放在不同的机器上。

页: [1]
查看完整版本: hadoop之hdfs的理解