1

クラウド インフラストラクチャ コンポーネントのプロパティ サイズを設定できるように、アプリケーションが駆動している IOPS を特定する方法を見つけようとしています。データベースとストレージ層の間の IOPS を理解していますが、アプリケーションが駆動するものを計算する方法を理解したいと思っています。私のアプリケーションの特徴の一部を次に示します。 1) 90% の書き込みと 10% の読み取り 2) 最終的に HBase データベースに挿入する Java ベースのアプリケーションがあります 3) 各メッセージがおそらく 2 回の HBase 挿入につながる約 50 メッセージ/秒を処理します

ここに私が確信していないことがあります: 1) IOPS を計算する唯一の方法は、ロード中に実際のサーバーで iostat などを実行することですか? 2)実際のストレージユニットではなく、入ってくるデータボリューム/サイズから必要なものを計算できる一般的な方法はありますか? 3)トランザクションの数と各トランザクションのバイト数に関係はありますか(IOは通常3Kであると読んでいますが、ほとんどの挿入にはそれほど多くの情報が含まれていないため、問題ではありません)。

どんな助けでも大歓迎です。

4

1 に答える 1

1

Hbase にはあまり詳しくありません。しかし、ドキュメントによると、ログ構造を使用しているため、書き込みは順次書き込みになります。また、複数 MB のシーケンシャル読み取りと書き込みの両方を引き起こすコンパクションも備えています。読み取りクエリは、ストレージ層でランダム読み取りを引き起こします。だからここにあなたの質問への答えがあります:

  1. 私の知る限り、はい。IOPS を取得する唯一の方法は、iostat を実行することです。おそらく、アプリケーションレベルからいくつかの圧縮統計を取得できます。しかし、IOPS レベルの詳細を抽出するのは困難です。

  2. 圧縮により、データ全体のサイズよりも多くのストレージが発生します。また、アプリケーションの書き込みが多い場合 (圧縮が挿入の速度に追いつかない可能性があります)、実際のデータ ボリュームのサイズははるかに大きくなります。質問の 50 msg/sec を考えると、これは当てはまりません。インスタンスごとに予想されるデータ ボリュームの 2 倍のサイズのディスクをプロビジョニングします。

  3. 前述のように、Hbase はログ構造になっています。書き込みはメモリに蓄積され、まとめてディスクにフラッシュされます。したがって、各トランザクションのサイズは問題ではありません。

于 2016-03-15T18:45:17.057 に答える