Sstableloader(Cassandraバルク・ローダー)

クラスターへの外部データの一括読み込み、異なるノード数または異なるレプリケーション・ストラテジを持つ別のクラスターへの既存のSSTableの読み込み、およびスナップショットの復元を行います。

Cassandraバルク・ローダー(sstableloader)は、以下の機能を提供します。
  • 外部データをクラスターに一括で読み込む。
  • ノードの数またはレプリケーション・ストラテジの異なるクラスターに既存のSSTableを読み込む。
  • スナップショットを復元する。

sstableloaderは一連のSSTableデータ・ファイルを稼働中のクラスターにストリーミングします。一連のSSTableを各ノードに単にコピーするのではなく、クラスターのレプリケーション・ストラテジに合わせて、関連するデータ部分を各ノードに転送します。データの読み込み先のテーブルは空でなくてもかまいません。

テーブルが別のクラスターでリペアされている場合は、読み込み後にリペアされません。

前提条件

sstableloaderではCassandraのゴシップを使用するため、以下のようになっていることを確認してください。

  • cassandra.yaml構成ファイルがclasspathに含まれており、適切に構成されている。
  • クラスター内の少なくとも1つのノードがシードとして構成されている。
  • cassandra.yamlファイル内で、インポート先のクラスターに対して以下のプロパティが適切に構成されている。

sstableloaderを使用して外部データを読み込む場合は、まずSSTableを生成する必要があります。

DataStax Enterpriseを使用する場合は、Sqoopを使用して外部データをCassandraに移行できます。

SSTableの生成

SSTableWriterは、クラスターに一括読み込みする生のCassandraデータ・ファイルをローカルで作成するAPIです。Cassandraのソース・コードには、SSTableファイルを外部データから作成するためのCQLSSTableWriter実装が含まれています。この実装では、これらのファイルが基盤のストレージ・エンジンにどのようにマッピングされるかの詳細を理解する必要がありません。 Cassandra 2.0.1, 2.0.2, and a quick peek at 2.0.3に示されているように、org.apache.cassandra.io.sstable.CQLSSTableWriterクラスをインポートし、インポートするデータのスキーマ、スキーマのライター、およびプリペアドINSERT文を定義します。

sstableloaderの使用

データを読み込む前に、CQLまたはThriftを使用してテーブルのスキーマを定義する必要があります。

SSTableの読み込みにおいて最適なスループットを得るには、sstableloaderの複数のインスタンスを使用して複数のマシン間でストリーミングを行うことができます。sstableloaderが同時に実行できるSSTableの数には固定の上限はないため、改善が見られなくなるまでローダーを追加できます。

Cassandraノードと同じマシンでsstableloaderを使用する場合、Cassandraノードと同じネットワーク・インターフェイスを使用することはできません。ただし、そのノードからJMX StorageService > bulkload()呼び出しを使用することはできます。この方法では、SSTableのあるディレクトリーの絶対パスを使用して、sstableloaderと同じ方法でSSTableを読み込みます。ただし、ノードはストリーミング元とストリーミング先の両方になるため、そのノードに対する負荷が高くなります。つまり、稼働中のクラスターへの読み込みでは、Cassandraノードでないマシンからデータを読み込むべきです。

使用法:

パッケージ・インストール:
$ sstableloader [オプション] path_to_keyspace
tarボール・インストール:
$ cd install_location/bin
$ sstableloader [オプション] path_to_keyspace
sstableloader一括読み込みは、キースペース・ディレクトリーにあるSSTableを構成されているターゲット・クラスターに読み込みます。そのディレクトリー・パスの親ディレクトリーは、ターゲットのキースペース/テーブル名として使用されます。
  1. SSTableの場所に移動します。
    パッケージ・インストール:
    $ cd /var/lib/cassandra/data/Keyspace1/Standard1/
    tarボール・インストール:
    $ cd install_location/data/data/Keyspace1/Standard1/
  2. キースペースの内容を表示するには、以下のように入力します。
    $ ls
    
    Keyspace1-Standard1-jb-60-CRC.db
    Keyspace1-Standard1-jb-60-Data.db
    ...
    Keyspace1-Standard1-jb-60-TOC.txt
  3. ファイルを一括して読み込むには、ターゲット・クラスター内のKeyspace1/Standard1/のパスを指定します。
    $ sstableloader -d 110.82.155.1 /var/lib/cassandra/data/Keyspace1/Standard1/ ##  Package installation
    
    $ install_location/bin/sstableloader -d 110.82.155.1 /var/lib/cassandra/data/data/Keyspace1/Standard1/ ## Tarball installation

    これで、すべてのファイルが一括して読み込まれます。

Sstableloaderオプション
短いオプション 長いオプション 説明
-alg --ssl-alg <ALGORITHM> クライアントSSLアルゴリズム(デフォルト:SunX509)。
-ciphers --ssl-ciphers <CIPHER-SUITES> クライアントSSL。暗号化スイートのコンマ区切りリスト。
-cph --connections-per-host <connectionsPerHost> ホストごとの同時接続の数。
-d --nodes <initial_hosts> 必須。初期のクラスター情報を得るために、(コンマで区切られた)ホストのリストに接続します。
-f --conf-path <path_to_config_file> ストリーミング・スループットおよびクライアント/サーバーSSLのcassandra.yamlパスのパス。
-h --help ヘルプを表示します。
-i --ignore <NODES> コンマで区切られたこのノードのリストにはストリーミングしません。
-ks --keystore <KEYSTORE> クライアントSSL。キーストアのフルパス。
-kspw --keystore-password <KEYSTORE-PASSWORD> クライアントSSL。キーストア用のパスワード。
  --no-progress 進行状況を表示しません。
-p --port <rpc port> RPCポート(デフォルト:9160 [Thrift])。
-prtcl --ssl-protocol <PROTOCOL> クライアントSSL。使用する接続プロトコル(デフォルト:TLS)。
-pw --password <password> Cassandra認証用のパスワード。
-st --store-type <STORE-TYPE> クライアントSSL。ストアのタイプ。
-t --throttle <throttle> メガビット単位のスロットル速度(デフォルト:無制限)。
-tf --transport-factory <transport factory> Cassandraへの接続を作成する完全修飾ITransportFactoryクラス名。
-ts --truststore <TRUSTSTORE> クライアントSSL。トラストストアのフルパス。
-tspw --truststore-password <TRUSTSTORE-PASSWORD> クライアントSSL。トラストストアのパスワード。
-u --username <username> Cassandra認証のユーザー名。
-v --verbose 詳細出力。
以下のcassandra.yamlオプションは、コマンドラインから変更できます。
cassandra.yamlのオプション コマンドラインの例
stream_throughput_outbound_megabits_per_sec --throttle 300
server_encryption_options --ssl-protocol none
client_encryption_options --keystore-password MyPassword
cassandra.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストール /etc/cassandra/cassandra.yaml
tarボール・インストール install_location/resources/cassandra/conf/cassandra.yaml
Windowsインストール C:\Program Files\DataStax Community\apache-cassandra\conf\cassandra.yaml