考慮到HBase將每個列族存儲在單獨的HFile中,以及行可以跨越多個Column族的事實。 HBase如何確保跨越多個列族的行上的put/delete操作確實是原子操作?HBase如何保證行級原子性?
回答
無論該行可能有多少個列族,都會寫入該行,轉到一個區域服務器,然後該區域服務器將編輯寫入區域WAL(Hlog),然後寫入同步,那麼數據將被添加到memstore中,以便它被提供。然後 - 一旦memstore達到極限,memstore將被刷新到磁盤。如果區域服務器發生任何問題,並且它崩潰/死亡/拔出插頭,WAL可以通過以保持一切順利。欲瞭解更多血淋淋的細節,請參閱HBASE-2283和Hbase Architecture 101。
謝謝你的鏈接。我實際上對HBase如何確保寫入所有HFile(如果在Put/Delete調用中觸及多個列系列時會涉及多個HFile)感興趣,它原子地發生。但就像你提到的那樣,由於該更新仍然可以從WAL中獲取,HBase可以保證其客戶的原子性。 –
準確地說 - WAL用於解決多重hfile問題等等。 – cftarnas
儘管通過同時刷新所有列族,HBase仍然可以實現行級別的原子性。當最大的色譜柱系列達到配置的沖洗尺寸時,會觸發沖洗。還有一個額外的MemStore級別的時間戳,它允許爲MemStore讀取執行多版本併發控制,但對於寫入HFile的鍵/值不存在。切換到每列家庭刷新(提高效率的理想功能)需要將類似的時間戳添加到文件格式中。
- 1. Winsocks上的原子性保證?
- 2. Spring AOP是否保證了原子性?
- 3. 三階段提交協議(3PC)如何保證原子性?
- 4. 如何確保系統級操作是原子性的?任何模式?
- 5. Redis Multi確保原子性
- 6. 如何保證原子SQL插入子查詢?
- 7. 如何保證跨兩個數據庫(文件系統和RDBMS)的原子性?
- 8. 觸發器語句級原子性
- 9. 嵌套的原子操作保證是原子嗎?
- 10. 具有保證原子性的單位操作
- 11. BigQuery爲查詢作業提供了什麼原子性保證?
- 12. Erlang有向圖原子性和隔離保證
- 13. 原子變量是否保證內存可見性?
- 14. 我該如何保護hbase?
- 15. HBase性能調整因子
- 16. Oracle 11g重命名。保證是原子?
- 17. 更新這裏選擇,保證原子
- 18. Pig + Hbase原子增量列值
- 19. HBase中的原子比較和增量
- 20. 塊級原子寫
- 21. 確保django模型字段只寫入一次?原子性保證沒有鎖
- 22. 如何確保原子讀取和原子寫入?
- 23. 如何確保更新表中字段時的原子性?
- 24. 在嵌套的MongoDB調用中,如何確保原子性?
- 25. HBase:原子'檢查行不存在,並創建'操作
- 26. Hbase - 如何添加超級列家族?
- 27. objc_setAssociatedObject保留原子或非原子
- 28. 如何在HBASE中處理行級刪除?
- 29. 如何訪問原子矢量屬性?
- 30. 如何運行HBase程序
據我所知,對於任何行操作(比如Put/Delete/checkAndPut),操作順序是append - > sync - > memstore。此外,每個KeyValue中都有一個時間戳,您可以在其中存儲多個版本的KeyValue對(由列家族的版本確定)。您還可以使用RowLock確保操作完全安全。 – frail