忍者ブログ

ビーキョウのIT

このブログは99%ののほほんと1%のお菓子でできています。

カテゴリー「Cassandra」の記事一覧

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


Cassandra - 使用ポート番号 -

こんちゃ(´・ω・)ノ

Cassandraの使用ポートについて記載する。




設定ファイル設定項目ポート説明
cassandra.yamlrpc_port9160Thrift(RPC)等での接続ポート
cassandra.yamlnative_transport_port9042CQL用のトランスポート
cassandra.yamlstorage_port7000複数インスタンス(ノード)間で連携するためのポート
cassandra.yamlssl_storage_port7001複数インスタンス(ノード)間で連携するためのポート(SSL)
cassandra-env.shJMX_PORT7199JMXの接続用ポート




【Cassandra】
Cassandra - 概要 -
Cassandra - データモデル -
Cassandra - 読み込み・書き込みのアーキテクチャ -
Cassandra - ディレクトリ構成 -
Cassandra - CLI操作 -
Cassandra - バックアップ・リカバリ -
Cassandra - 使用ポート番号 -

拍手[1回]

PR

Cassandra - バックアップ・リカバリ -

こんちゃ(´・ω・)ノ

Cassandraのバックアップおよびリカバリ(リストア)について記載する。



【バックアップ】
Cassandraのnodetoolスクリプトを使用して、スナップショットでバックアップを取得する。スナップショットではSSTableのデータのみバックアップのため、MemTableにデータがある場合はFlush等のSSTableに移す作業をしておくと安全。
※一応スナップショット時にflushが実行されるらしいようなことを見た気がするが、念のためね。

■Cassandraのフラッシュ
$ {CASSANDRA_HOME}/bin/nodetool -h {対象ノードのIPアドレス} flush


■Cassandraのスナップショット
$ {CASSANDRA_HOME}/bin/nodetool -h {対象ノードのIPアドレス} snapshot -t {スナップショット名}


(補足)
・スナップショットはcassandra.yamlの「data_file_directories」で指定したディレクトリの場所に出力される。標準では「/var/lib/cassandra/data/{Keyspace}/{ColumnFamily}/snapshot」
・sstable2json、json2sstableスクリプトを用いてJSON形式でのインポート・エクスポートもできる。



【リカバリ(リストア)】
(1) ノード(Cassandra)を停止する。

(2) CommitLogを削除する。
「/var/lib/cassandra/commit_log」配下のファイルを削除。

(3) SSTableを削除する。
「/var/lib/cassandra/data/{Keyspace}/{ColumnFamily}/ 」の各dbファイルを削除

(4) スナップショットの各dbファイルをコピーする。
「/var/lib/cassandra/data/{Keyspace}/{ColumnFamily}/snapshot」の場所にあるdbファイルを
「/var/lib/cassandra/data/{Keyspace}/{ColumnFamily}/」にコピーする。

(5) ノード(Cassandra)を起動する。



【スナップショットの削除】
$ {CASSANDRA_HOME}/bin/nodetool -h {対象ノードのIPアドレス} clearsnapshot -t {スナップショット名}




【Cassandra】
Cassandra - 概要 -
Cassandra - データモデル -
Cassandra - 読み込み・書き込みのアーキテクチャ -
Cassandra - ディレクトリ構成 -
Cassandra - CLI操作 -
Cassandra - バックアップ・リカバリ -
Cassandra - 使用ポート番号 -

拍手[1回]


Cassandra - CLI操作 -

こんちゃ(´・ω・)ノ

CassandraCLIの操作について記載する。



【ヘルプ】
■ヘルプ一覧表示
[default@unknown] help;
または
[default@unknown] ?;


■ヘルプ詳細表示
[default@unknown] help {コマンド};




【キーススペース操作】
■キースペース一覧
[default@unknown] show keyspaces;


■キースペースの情報参照
[default@unknown] describe sample;
Keyspace: sample:
Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy
Durable Writes: true
Options: [datacenter1:1]
Column Families:


■キースペースを作成
[default@unknown] create keyspace sample;


■キースペースを削除
[default@unknown] drop keyspace sample;


■キースペースに移動(使用するキースペース指定)
[default@unknown] use sample;




【カラムファミリ操作】
■カラムファミリを作成
・通常のカラムファミリを作成
[default@sample] create column family users;

・通常のカラムファミリを作成(UTF-8)
[default@sample] create column family users with comparator=UTF8Type and default_validation_class=UTF8Type and key_validation_class=UTF8Type;

・スーパーカラムありのカラムファミリを作成
[default@sample] create column family users with column_type = 'Super';

・スーパーカラムありのカラムファミリを作成(UTF-8)
[default@sample] create column family users with column_type=Super and comparator=UTF8Type and subcomparator=UTF8Type and default_validation_class=UTF8Type and key_validation_class=UTF8Type;


■カラムファミリの情報参照
[default@sample] describe users;
ColumnFamily: users
Key Validation Class: org.apache.cassandra.db.marshal.BytesType
Default column value validator:org.apache.cassandra.db.marshal.BytesType
Columns sorted by: org.apache.cassandra.db.marshal.BytesType
GC grace seconds: 864000
Compaction min/max thresholds: 4/32
Read repair chance: 0.1
DC Local Read repair chance: 0.0
Populate IO Cache on flush: false
Replicate on write: true
Caching: KEYS_ONLY
Bloom Filter FP chance: default
Built indexes: []
Compaction Strategy: org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy
Compression Options: sstable_compression: org.apache.cassandra.io.compress.SnappyCompressor


■カラムファミリの削除
[default@sample] drop column family users;


■カラムファミリのデータ削除
[default@sample] truncate users;




【カラム操作】
■挿入
・通常のカラムファミリにデータを挿入
[default@sample] set users['rowkey1']['column1'] = 'value1';

・スーパカラムありのカラムファミリにデータを挿入
[default@sample] set users['rowkey1']['spcolumn1']['column1'] = 'value1';

※ カラムファミリーを作成する際にUTF-8を指定しないとここで以下のエラーが発生する。
org.apache.cassandra.db.marshal.MarshalException: cannot parse 'col1' as hex bytes

■件数取得
・ロウキー単位でのカラム件数取得
[default@sample] count users['rowkey1'];

・スーパーカラム単位でのカラム件数取得
[default@sample] count users['rowkey1']['spcolumn1'];


■取得
・ロウキーで取得
[default@sample] get users['rowkey1'];

・ロウキー+カラム名で取得
[default@sample] get users['rowkey1']['column1'];

・ロウキー+スーパーカラム名で取得
[default@sample] get users['rowkey1']['spcolumn1'];

・ロウキー+スーパーカラム名+カラム名で取得
[default@sample] get users['rowkey1']['spcolumn1']['column1'];

・全て取得
[default@sample] list users;


■削除
・ロウを削除
[default@sample] del users['rowkey1'];

・ロウキー+カラム名で削除
[default@sample] del users['rowkey1']['column1'];

・ロウキー+スーパーカラム名で削除
[default@sample] get users['rowkey1']['spcolumn1'];

・ロウキー+スーパーカラム名+カラム名で削除
[default@sample] get users['rowkey1']['spcolumn1']['column1'];




【セカンダリインデックス】
カラムファミリに対してセカンダリインデックスを作成することで、
値を検索してデータを取得することができる。

■セカンダリインデックス作成
・新規カラムファミリにインデックスを作成
カラムファミリ作成時に「column_metadata」オプションを付ける。
[default@sample] create column family users with column_metadata = [ { column_name: column1, validation_class: UTF8Type, index_type: KEYS} ];

・既存カラムファミリにインデックスを作成
[default@sample] update column family users with column_metadata = [ { column_name: column1, validation_class: UTF8Type, index_type: KEYS} ];


■セカンダリインデックスで取得
[default@sample] get users where column1 = 'value1';




【Cassandra】
Cassandra - 概要 -
Cassandra - データモデル -
Cassandra - 読み込み・書き込みのアーキテクチャ -
Cassandra - ディレクトリ構成 -
Cassandra - CLI操作 -
Cassandra - バックアップ・リカバリ -
Cassandra - 使用ポート番号 -



拍手[0回]


Cassandra - 読み込み・書き込みのアーキテクチャ -

こんちゃ(´・ω・)ノ

Cassandraの読み込み・書き込みの際の動作・アーキテクチャを
記載する。



【読み込み】



■動作順序
(1) クライアントからの読み込み要求を受け取る。
(2) データを保持しているノードを決定して、該当ノードに送信(フォワード)する。
(3) レプリケーションデータを保持しているノードを決定し、該当ノードに送信(フォワード)する。
(4) Row Cache、Memtable、SStableからデータを取得する。
(5) クライアントへのレスポンス返却を返却する。一貫性レベルによって動作が異なる。

■一貫性レベルの設定による動作の違い
設定ノード数説明
Zero0一貫性の保証なし。
One11つのノード(最初のノード)からデータを取得し終わった場合に、クライアントにレスポンスを返却する。
Quorum(n/2)+1(全体のノード数/2)+1のノードからデータを取得し、整合性チェックを行った後、問題ない場合はクライアントにレスポンスを返却する。問題がある場合は実データを取得しにいく。
Alln全てのノードからデータを取得し、整合性チェックを行った後、問題ない場合はクライアントにレスポンスを返却する。問題がある場合は実データを取得しにいく。

※ 整合性チェックは、データのダイジェストを使用して行う。



【書き込み】



■動作順序
(1) クライアントからの書き込み要求を受け取る。
(2) どのノードにデータを保持させるかを決定して、該当ノードに送信(フォワード)する。
(3) レプリケーション(コピー)対象のノードを決定し、該当ノードに送信(フォワード)する。
(4) 書き込み情報をCommitLogとして記録。
(5) ColumnFamilyごとにメモリ上のMemtableに書き込まれる。
(6) flashによってMemtableの内容がSstableに書き出される。flashは手動またはMemtableに閾値を設定して、書き込み要求に対して非同期に実行される。
(7) クライアントへのレスポンス返却を返却する。一貫性レベルによって動作が異なる。

■一貫性レベルの設定による動作の違い
設定ノード数説明
Zero0一貫性の保証なし。書き込みが終了する前にすぐにクライアントにレスポンスを返却する。
One11つのノードの書き込みだけを保証。1つのノードで書き込みが終わった場合にクライアントにレスポンスを返却する。
Quorum(n/2)+1レプリケートするノード数の半分+1ノードへの書き込みを保証する。(全体のノード数/2)+1のノードで書き込みが終わった場合にクライアントにレスポンスを返却する。
Allnすべてのレプリカへの書き込みを保証する。全てのノードで書き込みがおわった場合にクライアントにレスポンスを返却する。




【Cassandra】
Cassandra - 概要 -
Cassandra - データモデル -
Cassandra - 読み込み・書き込みのアーキテクチャ -
Cassandra - ディレクトリ構成 -
Cassandra - CLI操作 -
Cassandra - バックアップ・リカバリ -
Cassandra - 使用ポート番号 -

拍手[0回]


カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

最新コメント

[11/13 NEX-C3]
[01/24 R]
[07/30 ビーキョウ]
[07/25 unknown]
[06/24 ブログランキング]

最新トラックバック

バーコード

広告

カウンター

ブログ内検索

プロフィール


HN:ビーキョウ
職業:SI屋(PG、SE)
<自己紹介>
ちゃお(´・ω・)ノ
ビーキョウです。
どんどんスキルアップして、 その中で学んだことを忘れないようにメモ代わり的な 感じで記事を書いていこうという考えです。

なので、適当な部分が多々あるとは思いますが、 なにとぞよろしくお願いします
(´ ▽`)

バナーエリア

Copyright ©  -- ビーキョウのIT --  All Rights Reserved
Designed by CriCri / Photo by Geralt / Powered by [PR]
/ 忍者ブログ