0

私は分詞でビッグデータと HBase の初心者です。現在、OpenTSDB を使用してセンサーからのデータを保存しようとしています。

構成は次のとおりです。最後の安定した OpenTSDB がインストールされた Cloudera vmware イメージ。設定後、サーバーを起動しました

./build/tsdb tsd --port=4242 --staticroot=build/staticroot/ --cachedir=/tmp/tsd/ --auto-metric

次に、単純な netcat クライアントを実行しました。

#!/bin/bash
set -e
while true; do
  ./run $1 $2
  sleep 1
done | nc -w 30 localhost 4242

からコンパイルされた ./run を使用:

#include <cstdio>
#include <cstdlib>
#include <time.h>       /* time */

int main(int argc, char **argv)
{
  if ( argc <= 2 ) {
    fprintf(stderr, "2 param excepted: start point and number of sensors\n");
    return 1;
  }

  unsigned long t = time(NULL);
  srand(t);

  int b;   // index of first sensor
  int n;   // number of sensors
  sscanf(argv[1], "%d", &b);
  sscanf(argv[2], "%d", &n);

  for ( int i = b; i < b+n; ++i ) {
    printf("put democ.%d %d %lf host=localhost.localdomain\n", i, t, 1.0 + 0.01 * (rand() % 100));
  }

  return 0;
}

その後、localhost:4242 経由で democ.%d メトリクスを監視します。

パフォーマンスには満足していますが、ジェネレーターが多数のメトリック (n) を生成する場合に問題があります。

最初の問題は、いくつかのデータポイントの消失です。n に依存します。n = 10000 の場合、平均で 30 秒間に 29 ポイントあります。ただし、n = 75000 の場合、ポイントは 15 個しかありません。この問題は重大ではありません。ディスク帯域幅が原因だと思います。

しばらくすると、サーバーはエラーを送信します。

put: HBase error: 1000 RPCs waiting on "tsdb,\x00\x98[Q\x96E\xF0\x00\x00\x01\x00\x00\x01,1368809980414.dc6179de43f78eac6c8b745996200664." to come back online

2 番目の問題は、サーバーがしばらく稼働した後の HBase の障害です。OpenTSDB は、すべてのクライアントと独自のコンソールに大規模なフラッディングが発生し、次のようなメッセージが表示されて停止します。

put: HBase error: 10000 RPCs waiting on "-ROOT-,,0" to come back online

この問題を解決するにはどうすればよいですか?

プロジェクトに Cassandra を使用する可能性についても考えました。

時系列データを保存するための最良のオープンソース ソリューションです (各センサーは毎秒最大 40 バイトのデータを生成しますが、およそ 100,000 個のセンサーからのデータを 30 日間保存する必要があります)。

4

1 に答える 1

1

についてのエラー"RPCs waiting on ..."は、HBase が追いついていないことが原因です。OpenTSDB はメモリ内のデータ ポイントを保持し、特定の制限まで再試行します。しかし、ある時点を過ぎると、データの破棄が開始され、問題があることを示すためにこのエラーが返されます。

他のデータベース (分散されているかどうかに関係なく) と同様に、HBase で基本的なチューニングを行う必要があります。一般的に、初心者にとって最も一般的に役立つ 2 つの推奨事項は次のとおりです。

  1. 頻繁に分割しないように、最大​​領域サイズが十分に大きいことを確認してください。
  2. 起動時の失速を避けるためにリージョンを事前に作成する (これはメーリングリストで最近議論されました)

最後の問題についてwaiting on "-ROOT-,,0"はあまり期待されていません。HBase の失敗について言及しましたが、実際にテスト中に HBase が停止するのを見たことがありますか? はいの場合は、メモリが不足しているか、GC の一時停止が長すぎて ZooKeeper セッションが失われる (意図的に自殺を強制する) ために停止していないことを確認します。VMware イメージでの実行について言及したので、テストに使用される制約のある環境にいると仮定します。そのため、HBase (およびそれが実行されている VM) に、書き込みの多いワークロードに十分なメモリが与えられていることを確認してください。

于 2013-05-20T04:49:31.747 に答える