元数据的存储机制  

A、内存中有一份完整的元数据(内存meta data)
B、磁盘有一个“准完整”的元数据镜像(fsimage)文件(在namenode的工作目录中)
C、用于衔接内存metadata和持久化元数据镜像fsimage之间的操作日志(edits文件)

NameNode和Secondary NameNode元数据管理机制

客户端每次对文件的操作,如果涉及到元数据的更新(读除外),比如说更改文件的名称,路径,移动,复制,上传,删除等,除了查之外,其他增删改都会有可能涉及到与元数据的更改。dfs不支持客户端更改文件内容,只能在文件后面追加。

注:当客户端对hdfs中的文件进行新增或者修改操作,操作记录首先被记入edits日志文件中,当客户端操作成功后,相应的元数据会更新到内存meta.data中。当日志里面累积的操作记录越来越多,与老的fsimage相差越来越大,这时候需要由Secondary NameNode定期把edits文件和老的fsimage做一个合并上传上NameNode替换掉老的fsimage,这时候NameNode上的fsimage文件和内存上的元数据永远保持在一个小的差距里面。NameNode工作时,它的元数据查询都是找内存的,不会去找fsimage,也不会去找edits。
 
XML处理器输出 fsimage 的 xml 文档,包含了 fsimage 中的所有信息,比如 inodeid 等。该处理器的输出支持XML工具的自动化处理和分析,由于XML语法格式的冗余,该处理器的输出也最大。实例如下:
[root@srv02 hadoop]# hdfs oiv -i fsimage  -p XML -o fsimage.xml
[root@srv02 hadoop]# cat fsimage.xml

edits文件是操作记录文件,也可以查看个究竟:

hdfs oev -i edits edits_0000000000000013356-0000000000000013357  -o edits.xml

  

 

最新文章

  1. python httprequest, locust
  2. STM32下载调试驱动问题
  3. 系统自带的NSJSONSerialization解析json文件
  4. SQL injection
  5. arm-linux-gcc-4.3.2安装步骤
  6. [转载]获取当前日期和农历的js代码
  7. 转:Build Your First JavaScript Library
  8. javascript 闭包暴露句柄和命名冲突的解决方案
  9. poj棋盘分割(记忆化)
  10. Socket介绍
  11. 可扩展标记语言XML
  12. Spring Boot 定义系统启动任务,你会几种方式?
  13. 【VS】VS2013 未找到与约束contractname 匹配的导出
  14. 还有看不懂的java语句?
  15. 【JEECG技术文档】Online唯一校验使用说明
  16. Silverlight中使用MVVM(2)-(提高)
  17. C/C++中的位运算
  18. 安装mysql-5.6版本步骤与卸载
  19. Logger性能优化
  20. 搭建Jupyter Notebook服务器

热门文章

  1. java thin方式连接oracle数据库
  2. 读刘未鹏老大《你应当怎样学习C++(以及编程)》
  3. 网络电台(WIZ550io)
  4. 【Python】使用类和实例
  5. javascript if(条件)------------条件中可以使用的值
  6. Allegro中解决鼠标放在走线上网络名、走线长度显示不出来的问题
  7. Lua学习一----------开发环境搭建
  8. ui-router $transitions 用法
  9. CxImage新手教程,图文并茂
  10. zookeeper参数的详解