2

私はカサンドラで働き始めました。したがって、cassandra (1.1.1) を Windows PC にダウンロードして起動しました。すべて正常に動作します。したがって、4 つの列ファミリに挿入する必要がある 4 つのテーブルに対して約 200.000.000 をインポートする古いアプリケーション (hector 1.1 を使用する Java) の再実装を開始しました。約 2.000.000 レコードをインポートした後、タイムアウト例外が発生し、cassandra が要求に応答しません。

2012-07-03 15:35:43,299 WARN  - Could not fullfill request on this host CassandraClient<localhost:9160-16>
2012-07-03 15:35:43,300 WARN  - Exception: me.prettyprint.hector.api.exceptions.HTimedOutException: TimedOutException()
....
Caused by: TimedOutException()
at org.apache.cassandra.thrift.Cassandra$batch_mutate_result.read(Cassandra.java:20269)
at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
at org.apache.cassandra.thrift.Cassandra$Client.recv_batch_mutate(Cassandra.java:922)
at org.apache.cassandra.thrift.Cassandra$Client.batch_mutate(Cassandra.java:908)
at me.prettyprint.cassandra.model.MutatorImpl$3.execute(MutatorImpl.java:246)
at me.prettyprint.cassandra.model.MutatorImpl$3.execute(MutatorImpl.java:243)
at me.prettyprint.cassandra.service.Operation.executeAndSetResult(Operation.java:103)
at me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(HConnectionManager.java:258)

ログファイル内の最後のエントリは次のとおりです。

INFO 15:35:31,678 Writing Memtable-cf2@678837311(7447722/53551072 serialized/live bytes, 262236 ops)
INFO 15:35:32,810 Completed flushing \var\lib\cassandra\data\keySpaceName\cf2\keySpaceName-cf2-hd-205-Data.db (3292685 bytes) for commitlog position ReplayPosition(segmentId=109596147695328, position=131717208)
INFO 15:35:33,282 Compacted to [\var\lib\cassandra\data\keySpaceName\cf3\keySpaceName-cf3-hd-29-Data.db,].  33.992.615 to 30.224.481 (~88% of original) bytes for 282.032 keys at 1,378099MB/s.  Time: 20.916ms.
INFO 15:35:33,286 Compacting [SSTableReader(path='\var\lib\cassandra\data\keySpaceName\cf4\keySpaceName-cf4-hd-8-Data.db'), SSTableReader(path='\var\lib\cassandra\data\keySpaceName\cf4\keySpaceName-cf4-hd-6-Data.db'), SSTableReader(path='\var\lib\cassandra\data\keySpaceName\cf4\keySpaceName-cf4-hd-7-Data.db'), SSTableReader(path='\var\lib\cassandra\data\keySpaceName\cf4\keySpaceName-cf4-hd-5-Data.db')]
INFO 15:35:34,871 Compacted to [\var\lib\cassandra\data\keySpaceName\cf4\keySpaceName-cf4-hd-9-Data.db,].  4.249.270 to 2.471.543 (~58% of original) bytes for 30.270 keys at 1,489916MB/s.  Time: 1.582ms.
INFO 15:35:41,858 Compacted to [\var\lib\cassandra\data\keySpaceName\cf2\keySpaceName-cf2-hd-204-Data.db,].  48.868.818 to 24.033.164 (~49% of original) bytes for 135.367 keys at 2,019011MB/s.  Time: 11.352ms.

次のような 4 つの列ファミリーを作成しました。

ColumnFamilyDefinition cf1 = HFactory.createColumnFamilyDefinition(
“keyspacename”,
“cf1”,
ComparatorType.ASCIITYPE);

列ファミリーには、次の列数があります。

  1. 16列
  2. 14列
  3. 7列
  4. 5列

キースペースは、レプリケーション ファクター 1 とデフォルトの戦略 (シンプル) で作成されます。「Mutator#AddInsertion」でレコード (行) を挿入します。

この例外を回避するためのアドバイスはありますか?

よろしくWM

4

1 に答える 1

1

その例外は基本的に、Cassandra がミューテーションで十分に遅れているため、タイムアウトになる前にリクエストを完了できないと言っていることです。あなたの PC が獣ではないと仮定すると、おそらくリクエストを抑制する必要があります。その例外をキャッチした後、しばらくスリープしてから再試行することをお勧めします。誤って同じ行を 2 回書き込んでも害はありません。Cassandra はすぐに書き込みに追いつくはずです。

実稼働環境にいる場合は、ノードのパフォーマンスが低下している可能性がある他の理由を詳しく調べます。

于 2012-07-03T22:42:54.903 に答える