標簽:時間 過濾 步驟 釋放 loading 結束 格式 數據表 src
Hbase 写入流程大致分为三个步驟:
用戶提交put請求後,HBase客戶端會將寫入的數據添加到本地緩沖區中,符合一定條件就會通過AsyncProcess異步批量提交。HBase默認設置autoflush=true,表示put請求直接會提交給服務器進行處理;用戶可以設置autoflush=false,這樣,put請求會首先放到本地緩沖區,等到本地緩沖區大小超過一定阈值(默認爲2M,可以通過配置文件配置)之後才會提交。
1)Acquire locks :HBase中使用行锁保证对同一行数据的更新都是互斥操作,用以保证更新的原子性,要么更新成功,要么更新失败。
2)Update LATEST_TIMESTAMP timestamps :更新所有待写入(更新)KeyValue的時間戳为当前系统時間。
3)Build WAL edit: 在内存中构建WALEdit对象,为了保证Region级别事务的写入原子性,一次写入操作中所有KeyValue会构建成一条WALEdit记录。
4)將WALEdit順序寫入Hlog中。
5)Write back to MemStore:写入WAL之后再将数据写入MemStore。
6)釋放行锁。
7)Sync WAL: HLog真正sync到HDFS,在釋放行锁之后执行sync操作是为了尽量减少持锁時間,提升写性能。如果sync失败,执行回滚操作将MemStore中已经写入的数据移除。
8)結束写事务。
当MemStrore 的数据达到一定阈值,会flush
要掌握:
標簽:時間 過濾 步驟 釋放 loading 結束 格式 數據表 src
原文地址:https://www.cnblogs.com/shix0909/p/15070519.html