hdfs 查看元数据 hdfs元数据大小_数据块

HDFS

  • Hadoop建议存储大文件,如果是大量的小文件,会消耗大量内存。同时map任务的数量是由splits来决定的,所以用MapReduce处理大量的小文件时,就会产生过多的map任务线程管理开销将会增加作业时间。处理大量小文件的速度远远小于处理同等大小的大文件的速度。

NameNode

  • 整个文件系统的管理节点,维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。
  • 运行时所有数据都保存到内存,整个HDFS可存储的文件数受限于NameNode的内存大小
  • 一个Block在NameNode中对应一条记录(一般一个block占用150字节)
  • 接收用户的操作请求
  • 元数据文件包括:保存在linux的文件系统 tmp/dfs/...
              fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息。
              edits:操作日志文件。
              fstime:保存最近一次checkpoint的时间
  • 元数据存储细节

hdfs 查看元数据 hdfs元数据大小_HDFS_02

  • 工作流程:NameNode始终在内存中保存metedata,用于处理“读请求”,到有“写请求”到来时,NameNode会首先写editlog到磁盘,即向edits文件中写日志,成功返回后,才会修改内存,并且向客户端返回 

Secondary NameNode

  • 定时与NameNode进行同步(定期合并文件系统镜像和编辑日志,然后把合并后的传给NameNode,替换其镜像,并清空编辑日志,类似于CheckPoint机制),但NameNode失效后仍需要手工将其设置成主机
  • Hadoop会维护一个fsimage文件==metedata镜像,fsimage与NameNode内存中的metedata不同步,而是自动每隔一段时间通过合并edits文件来更新内容。

 

hdfs 查看元数据 hdfs元数据大小_文件系统_03

  • lfs.checkpoint.period 指定两次checkpoint的最大时间间隔,默认3600秒。 l
  • lfs.checkpoint.size    规定edits文件的最大值,一旦超过则强制checkpoint,不管时间间隔。默认大小是128M。

 DataNode

  • 保存具体的block数据,负责数据的读写操作和复制操作,DataNode启动时会向NameNode报告当前存储的数据块信息,后续也会定时报告修改信息,DataNode之间会进行通信,复制数据块,保证数据的冗余性.
  • 分块存储 block块:基本存储单位 128M,默认副本3份
  • 同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间

hdfs 查看元数据 hdfs元数据大小_hdfs 查看元数据_04