0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Cassandra】nodetool status / ring / describering

Posted at

0. はじめに

本ページのコマンドの結果表示は、DSEディストリビューションのもの (バージョンはいろいろ混在)

1. nodetool status

クラスタの状態表示

キースペースを指定して実行した場合、Owns列に利用可能なトークン範囲の割合を表示
・トークン範囲の割合は、各ノードが所有するトークンの割合とレプリケーション係数を乗算した値
・そのキースペースのreplication factorが、2ならクラスタ内の%の合計は約200%、3なら約300%になるはず....。

( 実行例 : DSE 5.1.17 )

# nodetool status test01
Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens       Owns (effective)  Host ID                               Rack
UN  10.0.2.131  722.14 KiB  256          70.8%             3f1d4bd5-e99f-4251-8a8a-d5c23a2d2fa9  RAC1
UN  10.0.2.121  659.79 KiB  256          76.7%             a2541bd4-8d08-41ae-abf0-b22d4cae5716  RAC1
UN  10.0.2.122  662.59 KiB  256          75.8%             244dc6ed-45a1-47df-a89c-0ee2dc3f4a38  RAC1
UN  10.0.2.123  714.68 KiB  256          76.6%             9490e3e8-16af-4d5a-9e31-0e480c613ad8  RAC1

# 

( キースペースを指定しないで実行した場合 )
以前のバージョン(例えば、DSE4.8.x)ではOwn列は ? 表示になっていたが、最近のバージョン(少なくとも5.1.17以降)では、パーセンテージが表示される。いずれにせよ、DATASTAXのドキュメントの記載にあるとおり、この欄の数字に意味を求めるのであれば、nodetool satus実行時に対象のキースペースを指定する必要がある。
「重要: クラスターに、レプリケーション・ストラテジまたはレプリケーション係数の異なるキースペースがある場合、有意な所有権情報を得るには、nodetool status実行時にキースペースを指定してください。」( https://docs.datastax.com/ja/dse/5.1/dse-admin/datastax_enterprise/tools/nodetool/toolsStatus.html ) )

( 実行例 : DSE 4.8.16 )

# nodetool status 
Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens  Owns    Host ID                               Rack
UN  10.0.2.121  479.96 KB  256     ?       e52df442-eebb-490a-8787-372d4e2705c2  RAC1
UN  10.0.2.122  433.09 KB  256     ?       b1ccdf1e-a6ee-4f71-95c3-b3b5bd0f3e81  RAC1
UN  10.0.2.123  488.47 KB  256     ?       a4cfeb3a-1fa2-4f99-ac8b-e14e2aa44ec4  RAC1

Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless
# 

2. nodetool ring

nodetool statusに似ているが、ノードのステータスをトークン範囲別に表示

( 実行例 : DSE 5.1.17 )

# nodetool ring test01 

Datacenter: DC1
==========
Address     Rack        Status State   Load            Owns                Token                                       
                                                                           9218035512596006795                         
10.0.2.121  RAC1        Up     Normal  659.79 KiB      76.72%              -9222728930267421097                        
10.0.2.131  RAC1        Up     Normal  722.14 KiB      70.85%              -9180151874169604866                        
10.0.2.131  RAC1        Up     Normal  722.14 KiB      70.85%              -9162853831163961080                        
10.0.2.122  RAC1        Up     Normal  662.59 KiB      75.79%              -9129890199084435875                        
10.0.2.131  RAC1        Up     Normal  722.14 KiB      70.85%              -9125736719015339102                        
10.0.2.131  RAC1        Up     Normal  722.14 KiB      70.85%              -9113235406061065294                        
10.0.2.122  RAC1        Up     Normal  662.59 KiB      75.79%              -9113100503939633554                        

    :
   (略)
    :

10.0.2.121  RAC1        Up     Normal  659.79 KiB      76.72%              9218035512596006795         
                

  Warning: "nodetool ring" is used to output all the tokens of a node.
  To view status related info of a node use "nodetool status" instead.

nodetoolコマンドとは関係ない余談だけど、cqlshのtoken関数と、nodetool ring (あるいは後述のnodetool describering)の結果を組み合わせることで、手動でトークン範囲でページング分割したクエリを実行可能

cqlsh> select * from test01.customer where token(id) <= -9222728930267421097; 

 id   | age | firstname | lastname
------+-----+-----------+----------
 4317 |  17 |     aaaaa |    bbbbb 
 3356 |  26 |     aaaaa |    bbbbb
    :
   (略)
    :

cqlsh> select * from test01.customer where token(id) > -9222728930267421097 and token(id) <= -9129890199084435875;

 id   | age | firstname | lastname
------+-----+-----------+----------
 3372 |  27 |     aaaaa |    bbbbb
 1584 |  26 |     aaaaa |    bbbbb

    :
   (略)
    :

cqlsh> select * from test01.customer where token(id) >  9218035512596006795;

 id   | age | firstname | lastname
------+-----+-----------+----------
 5504 |  17 |     aaaaa |    bbbbb
 3476 |  42 |     aaaaa |    bbbbb
    :
   (略)
    :

3. nodetool describering

キースペースのパーティション範囲(トークン値)を表示 ( トークン値ではsortされてない )

( 実行例 : DSE 5.1.17 )

# nodetool describering test01
Schema Version:3e44afb3-428b-3c44-a053-6363a2a78403
Keyspace: test01
TokenRange: 
        TokenRange(start_token:-7067710157254911858, end_token:-7027724543442860409, endpoints:[10.0.2.122, 10.0.2.121, 10.0.2.123], rpc_endpoints:[10.0.2.122, 10.0.2.121, 10.0.2.123], endpoint_details:[EndpointDetails(host:10.0.2.122, datacenter:DC1, rack:RAC1), EndpointDetails(host:10.0.2.121, datacenter:DC1, rack:RAC1), EndpointDetails(host:10.0.2.123, datacenter:DC1, rack:RAC1)])
        TokenRange(start_token:-4032970123352172154, end_token:-3949095354840399141, endpoints:[10.0.2.123, 10.0.2.121, 10.0.2.122], rpc_endpoints:[10.0.2.123, 10.0.2.121, 10.0.2.122], endpoint_details:[EndpointDetails(host:10.0.2.123, datacenter:DC1, rack:RAC1), EndpointDetails(host:10.0.2.121, datacenter:DC1, rack:RAC1), EndpointDetails(host:10.0.2.122, datacenter:DC1, rack:RAC1)])
        TokenRange(start_token:1245622280671050746, end_token:1265745285746323744, endpoints:[10.0.2.121, 10.0.2.122, 10.0.2.123], rpc_endpoints:[10.0.2.121, 10.0.2.122, 10.0.2.123], endpoint_details:[EndpointDetails(host:10.0.2.121, datacenter:DC1, rack:RAC1), EndpointDetails(host:10.0.2.122, datacenter:DC1, rack:RAC1), EndpointDetails(host:10.0.2.123, datacenter:DC1, rack:RAC1)])

    :
   (略)
    :

余談だけど、トークン値の結果はsortされてないので、EXCELでsortしたくなるかもしれないけど、その場合、EXCELでは15桁を超える数値を取り扱えないので、文字列として取り扱うようにしないといけない....。
2020-05-05_182221.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?