HBaseが各列ファミリを別々のHFileに格納していることと、行が多くの列ファミリにまたがる可能性があることを考慮してください。 HBaseは、複数の列ファミリにまたがる行のput/delete操作が実際には原子的であることをどのように保証しますか?HBaseはどのように行レベルの原子性を保証しますか?
答えて
その列に何列のファミリがあっても、1つのregionserverに移動し、regionserverが領域WAL(Hlog)に編集を書き込み、次に書き込みが同期化されます、データはmemstoreに追加されて提供されます。それから、memstoreが限界に達すると、memstoreはディスクにフラッシュされます。 regionserverに何らかの問題が発生し、それがクラッシュ/死滅/プラグが引っ張られた場合、WALはすべてが一貫性を保つように実行できます。詳細については、HBASE-2283およびHbase Architecture 101を参照してください。
リンクありがとうございます。私は実際にHBaseがすべてのHFiles(Put/Delete呼び出しのために1列以上の列ファミリに触れた場合に複数のHFilesが関わることになります)への書き込みを確実にする方法に興味がありました。しかし、あなたが言及したように、このアップデートはWALから引き続き検索できるので、HBaseはそのクライアントのアトミック性を保証することができます。 –
正確には、WALは、とりわけ、複数のhfile問題を回避するために使用されます。 – cftarnas
HBaseは、現在、すべての列ファミリを同時にフラッシングすることによって複数のHFilesを書き込むにもかかわらず、行レベルの原子性を実現しています。フラッシュは、最大の列ファミリが構成されたフラッシュサイズに達するとトリガされます。追加のMemStoreレベルのタイムスタンプがあり、MemStoreの読み込みで複数バージョンの同時実行制御が可能ですが、HFilesに書き込まれるキー/値には存在しません。列単位のフラッシュ(効率を改善するための望ましい機能)に切り替えるには、同様のタイムスタンプをファイル形式に追加する必要があります。
- 1. RDBMSは行レベルの原子性を保証しますか?
- 2. 行レベルの削除はどのようにHBASEで処理されますか?
- 3. 原子変数はメモリの可視性を保証しますか?
- 4. HBaseはどのように行を削除しますか?
- 5. Galera Clusterは一貫性をどのように保証しますか?
- 6. Pig + Hbase原子インクリメント列の値
- 7. 書き込み中にcassandraは行レベルの整合性を保証しますか?
- 8. HBaseはすべての行キーをどこに保存しますか?
- 9. writeToFile:原子的に:原子的にはどういう意味ですか?
- 10. Hbaseは重複レコードをどのように扱いますか?
- 11. 乱数生成はどのようにして再現性を保証しますか?
- 12. 、列はどのように2つのレベルの列親子
- 13. フォルダの原子移動を保証する
- 14. HBaseはどのようにHDFSへのランダムアクセスを可能にしますか?
- 15. どのように原子命題のセットを読みますか?
- 16. Salesforce.comはどのように電子メールフィールドを検証しますか?
- 17. node.jsのバージョン番号はどのように機能し、どのようにして互換性を保証しますか?
- 18. HbaseとPIGはすべての行を保存しません
- 19. TCPはインオーダーデータ伝送をどのように実装/保証しますか?
- 20. Erlang原子がどのようにゴミ収集できるか
- 21. 入力の検証はどのように行いますか?
- 22. SonarQubeはどのように「保守性評価」を計算しますか?
- 23. 複数行の原子性 - Riakとの一貫性?
- 24. hbaseをPythonでどのようにインポートできますか?
- 25. ZMQがPUB/SUBのepgmよりもどのような信頼性を保証しますか?
- 26. R - すべての因子レベルの相互作用を保証する集合関数のようなもの
- 27. hbaseの行のデータセットを保存する
- 28. 原子プロパティはどのような状況で役立ちますか?
- 29. Objective-Cの原子/非原子の証拠
- 30. 入れ子にされたクロージャの原因はサイクルを保持しますか?
私の知る限り、どの行操作(Put/Delete/checkAndPutなど)でも操作の順序はappend - > sync - > memstoreです。また、すべてのKeyValueにタイムスタンプがあり、列ファミリ内に複数のバージョンのKeyValueペアを格納できます(列ファミリのバージョンによって決まります)。 RowLockを使用して、操作が完全に安全であることを確認することもできます。 – frail