我如何理解什么是WAL: Write Ahead Log提供一致的放置/删除操作。在进行区域更改之前,会写入所有操作。如果区域服务器出现问题,我们可以从WAL修复信息。
我不明白是如何在HDFS之上实现WAL的?
来自HDFS文档:
创建文件的客户端请求未到达NameNode 立即。实际上,最初HDFS客户端缓存文件数据 进入临时本地文件。应用程序写入是透明的 重定向到此临时本地文件。当本地文件 累积超过一个HDFS块大小的数据,客户端联系人 NameNode。 NameNode将文件名插入文件系统 层次结构并为其分配数据块。 NameNode响应 客户端请求具有DataNode的标识和 目的地数据块。然后客户端刷新数据块 指向DataNode的本地临时文件。当文件是 关闭,临时本地文件中剩余的未刷新数据是 转移到DataNode
如果我做了一个小改动并且其内容没有转发给hdfs,那么可以放弃WAL内容吗?
修改: 据我所知: http://hadoop-hbase.blogspot.com.by/2012/05/hbase-hdfs-and-durable-sync.html
我们可以强制hdfs客户端同步数据,而不必等待它等于块大小。
答案 0 :(得分:0)
您在Hbase中编写的数据将经历以下阶段 放 - > WAL - > memstore - > HFILE。 HFile是存储在HDFS中的实际文件。这就是上面的名称节点和数据节点的用武之地。并且HFile已经过排序。
排序操作在Memstore中完成,在此期间达到某个缓冲区大小后,它会刷新到HFile。
现在为了避免memstore中存在数据丢失,使用了WAL。
您可以获得详细信息here
答案 1 :(得分:0)
您可以查看刷新间隔。这个链接有助于: http://hbase.apache.org/0.94/book/perf.writing.html