【发布时间】:2015-12-21 17:18:04
【问题描述】:
我如何理解什么是 WAL: 预写日志提供一致的放置/删除操作。在更改区域之前,所有操作都会写入其中。如果区域服务器出现问题,我们可以从 WAL 修复信息。
我不明白 WAL 是如何在 HDFS 之上实现的?
来自 HDFS 文档:
创建文件的客户端请求没有到达NameNode 立即地。实际上,最初 HDFS 客户端缓存文件数据 到一个临时的本地文件中。应用程序写入是透明的 重定向到这个临时本地文件。当本地文件 累积超过一个 HDFS 块大小的数据,客户端联系 名称节点。 NameNode 将文件名插入文件系统 层次结构并为其分配一个数据块。 NameNode 响应 带有 DataNode 标识的客户端请求和 目标数据块。然后客户端从 本地临时文件到指定的DataNode。当一个文件是 关闭,临时本地文件中剩余的未刷新数据为 转移到DataNode
所以如果我做了一个小改动并且它的内容还没有转发到 hdfs,那么它可能会丢失 WAL 内容吗?
编辑: 据我了解: http://hadoop-hbase.blogspot.com.by/2012/05/hbase-hdfs-and-durable-sync.html
我们可以强制 hdfs 客户端同步数据,而无需等待它变得等于块大小。
【问题讨论】: