当运行时修改写入名称节点中的编辑日志文件时,编辑日志文件是在 RAM 还是本地磁盘上更新
Posted
技术标签:
【中文标题】当运行时修改写入名称节点中的编辑日志文件时,编辑日志文件是在 RAM 还是本地磁盘上更新【英文标题】:When runtime modifications are written to Edits log file in Name Node, is the Edits Log file getting updated on RAM or Local Disk 【发布时间】:2016-01-27 20:14:20 【问题描述】:【问题讨论】:
【参考方案1】:答案是两者兼而有之。首先在磁盘上,然后在 RAM 上。
首先,编辑日志是一个逻辑实体,而在实际情况下,它可以是分布在多个文件中的多个文件(称为段),其命名约定类似于“edits_xxxxxxxxxxx”,每个文件代表一个特定的操作(称为事务)在 HDFS 中完成,例如追加文件、删除文件等,
首先更新编辑文件/段(在磁盘上),然后更新 NN 的内存中(在 RAM 中)元数据。此后,这些内存中的数据将提供给有需要的客户。
礼貌:Hadoop - 权威指南。
【讨论】:
谢谢马可。那么这些 Edits 日志文件从磁盘更新到 RAM 的“时间间隔”是多少? 在这种情况下,术语“时间间隔”的使用似乎完全超出了范围,因为这必须是同步操作/活动。我们无法预测 hadoop 客户端的下一个请求何时是该特定文件(其事务刚刚记录并且元数据在内存中更新)。诸如一系列文件写入后立即读取文件(对于刚刚写入的相同文件)这样的场景非常常见。希望这能带来一些启发。 非常感谢马可。所以我相信 Edits 日志文件是从磁盘流式更新到 RAM 的。我说的对吗 是的,磁盘到 RAM 应该通过其中一种 (Java) 流机制。 感谢 Marco,非常感谢您的帮助。以上是关于当运行时修改写入名称节点中的编辑日志文件时,编辑日志文件是在 RAM 还是本地磁盘上更新的主要内容,如果未能解决你的问题,请参考以下文章