文末会总结异步edit log实现里的细节:
1、Edit对象什么时候为RpcEdit?什么时候为SyncEdit?
2、enqueueEdit里,阻塞队列满导致插入失败进行限流时,针对线程是否持有当前对象锁做了不同处理,那么什么时候持有锁?什么时候没持有锁呢?
3、SyncEdit的生成
4、怎么启动FSEditLogAsync线程的?何时启动的?
5、怎么做到的延迟发送RPC响应?(重点内容)
HDFS-7964. Add support for async edit logging.
HDFS-12603. Enable async edit logging by default.
关于namenode edit logging异步化,有两个工作,主要工作是HDFS-7964,HDFS-12603只是把这个功能的开关修改成默认开启。
public static final String DFS_NAMENODE_EDITS_ASYNC_LOGGING =
"dfs.namenode.edits.asynclogging";