すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for HBase:書き込みの最適化

最終更新日:Jan 16, 2025

ApsaraDB for HBase は、Log-Structured Merge(LSM)モードに基づいて、HLog およびメモリにデータを書き込みます。つまり、ApsaraDB for HBase はランダムな入出力(I/O)操作を実行しないため、書き込み操作の高パフォーマンスと安定性が実現します。ほとんどのデータベースソリューションでは、書き込み操作はパフォーマンスを犠牲にして信頼性のために最適化されています。

バッチ書き込み機能は、リモートプロシージャコール(RPC)の数を減らすために提供されています。

HTable.put(List<Put>)       

自動フラッシュ

自動フラッシュ を false に設定することで、書き込みパフォーマンスを大幅に向上させることができます。ただし、2 MB のデータがバッファリングされる(hbase.client.write.buffer)か、hbase.flushcommits() コマンドが呼び出されるまで待ってから、RegionServer で 自動フラッシュ を呼び出すことをお勧めします。データはリモートデータベースに書き込まれません。

HTable.setWriteBufferSize(writeBufferSize) を使用して、バッファサイズを設定できます。

サーバーの最適化

WAL フラグ

Write Ahead Log(WAL)を無効にすることで、書き込みパフォーマンスを大幅に向上させることができます。これは、WAL が無効になっている場合、HLog への書き込みが実行されないため、I/O 操作の数が削減されるためです。Memstore へのメモリ内書き込みのみが実行されます。

この操作は、信頼性よりもパフォーマンスが優先されるシナリオに適用できます。

Memstore のメモリサイズを増やす

Memstore の値を増やし、BlockCache の値を減らすことで、書き込みパフォーマンスを向上させることもできます。これは読み取りの最適化とは逆です。

多数の HFile ファイルが生成されているかどうかを確認する

書き込み速度が高い場合、多数の HFile が生成されます。これは、HFile のマージ速度が書き込み操作の速度よりも遅いためです。

リソースを効率的に使用するために、オフピーク時にメジャーコンパクションを実行することをお勧めします。HFile の数を減らすことができない場合は、ノードを追加することをお勧めします。