web-dev-qa-db-ja.com

Cassandra CQLSH OperationTimedOut error =クライアント要求のタイムアウト。Session.execute[_async](timeout)を参照してください

1つのCassandraクラスタ(192.168.0.200経由で到達)から別のCassandraクラスタ(127.0.0.1経由で到達)に)データを転送したい。データは523行ですが、各行は約1 MBです。COPYFROMおよびCOPY TOコマンドを使用しています。COPYTOコマンドを発行すると、次のエラーが表示されます。

Error for (8948428671687021382, 9075041744804640605):
OperationTimedOut - errors={
'192.168.0.200': 'Client request timeout. See Session.execute[_async](timeout)'},
last_Host=192.168.0.200 (will try again later attempt 1 of 5).

~/.cassandra/cqlshrcファイルから:

[connection]
client_timeout = 5000

しかし、これは助けにはなりませんでした。

15
Rishabh Poddar

ここで使用しているCassandraのバージョンは明確でないため、3.0.xと仮定します。

COPY関数は適切ですが、常に最良の選択であるとは限りません(つまり、大量のデータがある場合)。ただし、この場合は、cassandraで timeout settings の一部を確認することをお勧めします

ここのドキュメントは pagetimeout 設定も示しているので、役立つかもしれません。

2つのクラスター間でデータを移動する方法は、他にもいくつかあります。次のいずれかを使用できます。

  1. sstableloader
  2. Javaドライバー のようなドライバーの1つ
  3. sparkを使用して1つのクラスターから別のクラスターにデータをコピーする この例のように
  4. OpsCenterを使用した クラスターのクローン
  5. cassandraバルクローダー (私はこれを使用する多くの人々を知っています)

もちろん#3と#4にはDSE cassandraが必要ですが、それはあなたにアイデアを与えるためだけです。ApacheCassandraまたはDatastaxを使用しているかどうかはわかりませんでしたエンタープライズCassandra。

とにかく、これが役に立てば幸いです!

2
markc

接続のタイムアウトではなく、リクエストのタイムアウト(デフォルト:10秒)を増やしたい場合があります。

試してください:

cqlsh --request-timeout=6000

または追加:

[connection]
request_timeout = 6000

あなたの~/.cassandra/cqlshrcファイル。

15
Luca Gibelli

コピーのタイムアウトに関しては、既に指摘したとおり、PAGETIMEOUTパラメータを使用するのが正しい方法です。

keyspace.tableを '/ dev/null'にコピーしてWITH PAGETIMEOUT = 10000;

Cqlshで--request-timeout = 6000を設定しようとしても、その状況では役に立ちません。

こんにちは以下のほかに、

1。墓石の確認
In cassandra墓石は読み取りのパフォーマンスを低下させ、次の問題が発生しますOperationTimedOut:errors = {'127.0.0.1': 'Client request timeout。See Session.execute_async'}、last_Host = 127.0.0.1

列にnull値を含むテーブルにデータを挿入すると、トゥームストーンが作成されます。テーブル内のnull挿入を回避する必要があります。
unsethttps://docs.datastax.com/en/latest-csharp -driver-api/html/T_Cassandra_Unset.htm )およびignoreNullshttps://github.com/datastax/spark -cassandra-connector/blob/master/doc/5_saving.md )Sparkのプロパティ。
次のコマンドを使用して、テーブルのステータスを確認できます
nodetool tablestats keyspace1.tablename

2。トゥームストーンを削除
単一のノードで作業している場合は、テーブルのALTER table keyspace1.tablename WITHgc_grace_seconds= '0';を変更することにより、トゥームストーンを削除できます。

3.read_request_timeout_in_ms:読み取りリクエストのタイムアウトを増やすために、cassandra.yamlファイルの値を設定します

1
Hitesh Shahani