nodetool nodesyncservice ratesimulator

NodeSyncデッドラインを達成するために必要なレートをシミュレートします。

構成可能な仮定に基づいて、NodeSyncデッドラインを達成するために必要なレートをシミュレートします。レート・シミュレーションは便利ですが、プロダクション環境では、シミュレーションはNodeSyncの監視とレートの調整に代わるものではありません。
制約事項: RF=1のキースペースまたは単一ノード・クラスターで、このコマンドを使用しないでください。

NodeSyncのステータスは、OpsCenterを使用して監視します。「NodeSyncメトリクス」を参照してください。

構文

nodetool [connection_options] nodesyncservice ratesimulator
[--deadline-overrides keyspace_name.table_name:deadline_target_time, ...] 
[-e keyspace_name.table_name, ...]
[help] [-i keyspace_name.table_name, ...]
[--ignore-replication-factor]
[simulate -ds factor_integer -rs factor_integer -sg factor_integer | 
recommended | recommended_minimum | theoretical_minimum] 
[] [-v] 
1. 凡例
構文規則 説明
大文字 リテラル・キーワード。
小文字 リテラル以外。
Italics 変数値。有効なオプションまたはユーザー定義値と置き換えます。
[ ] 任意。角かっこ( [] )で任意のコマンド引数を囲みます。角かっこは入力しないでください。
( ) グループ。丸かっこ(( ))は、選択肢を含むグループを示します。丸かっこは入力しないでください。
| または。縦棒(|)で代替要素を区切ります。要素のいずれかを入力してください。縦棒は入力しないでください。
... 繰り返し可能。省略記号(...)は、構文要素を必要な回数だけ繰り返すことができることを示します。
'Literal string' 単一引用符( ' )でCQL文内のリテラル文字を囲みます。大文字を維持するには、単一引用符を使用します。
{ key:value } マップ・コレクション。中かっこ( { } )でマップ・コレクションまたはキーと値のペアを囲みます。コロンでキーと値を区切ります。
<datatype1,datatype2> セット、リスト、マップ、またはタプル。山かっこ(< >)で、セット、リスト、マップまたはタプル内のデータ型を囲みます。データ型をカンマで区切ります。
cql_statement; CQL文の終了。セミコロン( ; )ですべてのCQL文を終了します。
[ -- ] コマンドライン・オプションとコマンド引数は、2つのハイフン(--)で区切ります。この構文は、引数がコマンドライン・オプションと間違われる可能性がある場合に役立ちます。
' <schema> ...</schema> ' 検索CQLのみ:単一引用符( ' )でXMLスキーマ宣言全体を囲みます。
@xml_entity='xml_entity_type' 検索CQLのみ:スキーマ・ファイルおよびsolrconfigファイル内のXML要素を上書きする実体とリテラル値を示します。

定義

短い形式と長い形式のパラメーターはカンマで区切られています。

接続オプション

-h, --host hostname
リモート・ノードのホスト名またはIPアドレス。省略した場合、デフォルトはローカル・マシンです。
-p, --port jmx_port
JMXポート番号。
-pw, --password jmxpassword
セキュアなJMXで認証するためのJMXパスワード。パスワードを入力しないと、入力するように求められます。
-pwf, --password-file jmx_password_filepath
JMX認証用の資格情報を格納するファイルへのファイルパス。
-u, --username jmx_username
セキュアなJMXで認証するためのユーザー名。

コマンド引数

--deadline-overrides
シミュレーションで一部またはすべてのテーブルについて構成デッドラインに対するオーバーライドを可能にします。
-ds, --deadline-safety-factor
係数(整数)を指定して、不完全な状態の主な原因となるテーブル・デッドラインを減らします。
simulateサブコマンド専用。
-e, --excludes keyspace_name.table_name, ...
NodeSyncがサーバーサイドで有効になっている場合に、シミュレーションから除外するテーブルのカンマ区切りのリスト。それらのテーブルでNodeSyncを無効にする確率についての影響をシミュレーションします。
help
オプションおよび使用方法の指示を表示します。
--ignore-replication-factor
シミュレーションのレプリケーション係数を無視します。このオプションを使用しない場合、デフォルトでは、NodeSyncはクラスターのすべてのノードで実行されて(強く推奨)、検証動作がレプリカ間に広まることが想定されています。NodeSyncがクラスターのすべてのノードで実行される場合、各ノードは、ノードが所有するデータの係数1/RFを検証する必要があります。このオプションはその想定を排除し、ノードが保存するすべてのデータを構成する確率を計算します。
-i, --includes keyspace_name.table_name, ...
NodeSyncがサーバーサイドで有効になっていない場合、シミュレーションに含まれるテーブルのカンマ区切りのリスト。それらのテーブルでNodeSyncを有効にする確率についての影響をシミュレーションします。
-rs, --rate-safety-factor factor_integer
不完全状態の原因となる最終レートを増加させる量の係数を表現します。simulateサブコマンドにのみ適用されます。
-sg, --size-growth-factor factor_integer
データの増大の主要因であるデータ・サイズの増大の程度を係数で表現します。simulateサブコマンドにのみ適用されます。
-v, --verbose
シミュレーション実行方法の詳細を示します。シミュレーションで実施されるすべての手順を表示します。このオプションはシミュレーションを把握するのには役立ちますが、多くのテーブルが存在する場合、結果が必要以上に大きくなる場合があります。

commentsテーブルのレートをシミュレートします

nodetool nodesyncservice ratesimulator -i cycling.comments
Computed rate: 420kB/s.

commentsテーブル用の新しい目標時間でレートをシミュレートします

nodetool nodesyncservice ratesimulator --deadline-overrides cycling.comments:20h

シミュレートの例

  1. CQLで、RF > 1のキースペース内で、NodeSyncを有効にしてテーブルを作成します。例を次に示します。
    CREATE KEYSPACE cycling WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 2};
    USE cycling;
    CREATE TABLE comments (record_id timeuuid, id uuid, commenter text, comment text, created_at timestamp,
      PRIMARY KEY (id, created_at)) WITH nodesync={'enabled': 'true'};
    CREATE TABLE comments2 (record_id timeuuid, id uuid, commenter text, comment text, created_at timestamp,
      PRIMARY KEY (id, created_at)) WITH nodesync={'enabled': 'true'};
  2. テーブルにデータを挿入します。例を次に示します。
    INSERT INTO cycling.comments (record_id, id , created_at , comment, commenter ) values (now(), e7ae5cf3-d358-4d99-b900-85902fda9bb0, '2017-02-14 12:43:20-0800', 'Raining too hard should have postponed', 'Alex');
    INSERT INTO cycling.comments (record_id, id , created_at , comment, commenter ) values (now(), e7ae5cf3-d358-4d99-b900-85902fda9bb0, '2017-02-14 12:43:20.234-0800', 'Raining too hard should have postponed', 'Alex');
    INSERT INTO cycling.comments (record_id, id , created_at , comment, commenter ) values (now(), e7ae5cf3-d358-4d99-b900-85902fda9bb0, '2017-03-21 13:11:09.999-0800', 'Second rest stop was out of water', 'Alex');
    INSERT INTO cycling.comments (record_id, id , created_at , comment, commenter ) values (now(), e7ae5cf3-d358-4d99-b900-85902fda9bb0, '2017-04-01 06:33:02.16-0800', 'LATE RIDERS SHOULD NOT DELAY THE START', 'Alex');
    INSERT INTO cycling.comments (record_id, id , created_at , comment, commenter ) values (now(), c7fceba0-c141-4207-9494-a29f9809de6f, totimestamp(now()), 'The gift certificate for winning was the best', 'Amy');
    INSERT INTO cycling.comments (record_id, id , created_at , comment, commenter ) values (now(), c7fceba0-c141-4207-9494-a29f9809de6f, '2017-02-17 12:43:20.234+0400', 'Glad you ran the race in the rain', 'Amy');
    ...
  3. シミュレーターを実行します。
    nodetool nodesyncservice ratesimulator recommended
    Computed rate: 16B/s.
    予想どおり、挿入されたデータがほとんどないため、計算されたレートはかなり小さくなります。
  4. 詳細フラグを使用してシミュレータを実行し、そのレートが計算された理由に関する洞察を表示します。
    nodetool nodesyncservice ratesimulator recommended -v
    Using parameters:
     - Size growing factor:    1.00
     - Deadline safety factor: 0.25
     - Rate safety factor:     0.10
    
    cycling.comments:
      - Deadline target=7.5d, adjusted from 10d for safety.
      - Size=1.1MB to validate (2.3MB total (adjusted from 1.1MB for future growth) but RF=2).
      - Added to previous tables, 1.1MB to validate in 7.5d => 2B/s
      => New minimum rate: 2B/s
    cycling.comments2:
      - Deadline target=7.5d, adjusted from 10d for safety.
      - Size=7.1MB to validate (14MB total (adjusted from 7.1MB for future growth) but RF=2).
      - Added to previous tables, 8.3MB to validate in 7.5d => 14B/s
      => New minimum rate: 14B/s
    
    Computed rate: 16B/s, adjusted from 14B/s for safety.
    予想どおり、挿入されたデータがほとんどないため、計算されたレートはかなり小さくなります。