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. HBaseはどのように行を削除しますか?
- 2. Pig + Hbase原子インクリメント列の値
- 3. HBaseはすべての行キーをどこに保存しますか?
- 4. writeToFile:原子的に:原子的にはどういう意味ですか?
- 5. HBaseはどのようにHDFSへのランダムアクセスを可能にしますか?
- 6. フォルダの原子移動を保証する
- 7. 複数行の原子性 - Riakとの一貫性?
- 8. Salesforce.comはどのように電子メールフィールドを検証しますか?
- 9. hbaseをPythonでどのようにインポートできますか?
- 10. node.jsのバージョン番号はどのように機能し、どのようにして互換性を保証しますか?
- 11. TCPはインオーダーデータ伝送をどのように実装/保証しますか?
- 12. R - すべての因子レベルの相互作用を保証する集合関数のようなもの
- 13. Erlang原子がどのようにゴミ収集できるか
- 14. Objective-Cの原子/非原子の証拠
- 15. ZMQがPUB/SUBのepgmよりもどのような信頼性を保証しますか?
- 16. 入れ子にされたクロージャの原因はサイクルを保持しますか?
- 17. msmqはトランザクションキューのデータの整合性を保証しますか?
- 18. 原子プロパティはどのような状況で役立ちますか?
- 19. どのようにデフォルト値の検証を行いますか?
- 20. JavaScriptイベントに属性を追加するにはどうすればよいですか?行レベルで
- 21. 特定のファイル記述子に原子炉を登録するにはどうすればよいですか?
- 22. 以下のコンテキストでスレッドの安全性を保証するにはどうすればよいですか?
- 23. Cudaは原子的に操作を実行します
- 24. LessCSSではどのように1つのレベルだけをネストしますか?
- 25. どのように低レベルのネットワークプログラミングを_できますか?
- 26. hbaseを保護するにはどうすればいいですか?
- 27. Googleアナリティクスはどのようにウェブサイトを認証しますか?
- 28. syslog-ngはどのようにヘッダーを検証しますか?
- 29. どのようにImpersonateLoggedOnUserサービスを持っていますが、必須の整合性レベルは高いですか?
- 30. ELはどのように属性を検索しますか?
私の知る限り、どの行操作(Put/Delete/checkAndPutなど)でも操作の順序はappend - > sync - > memstoreです。また、すべてのKeyValueにタイムスタンプがあり、列ファミリ内に複数のバージョンのKeyValueペアを格納できます(列ファミリのバージョンによって決まります)。 RowLockを使用して、操作が完全に安全であることを確認することもできます。 – frail