「Apache Cassandra」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (→Python API: insert == Configuration ==) |
(→Configuration: 項目を整理) |
||
(2人の利用者による、間の4版が非表示) | |||
1行目: | 1行目: | ||
[[Category:データベース管理システム]] |
[[Category:データベース管理システム]] |
||
[[Category:Apache]] |
[[Category:Apache]] |
||
− | [[en:Apache]] |
+ | [[en:Apache Cassandra]] |
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|Apache Spark}} |
{{Related|Apache Spark}} |
||
15行目: | 15行目: | ||
=== Systemd unit === |
=== Systemd unit === |
||
− | ===== |
+ | ===== journald へのロギング ===== |
+ | パッケージはデフォルトで {{ic|/var/log/cassandra/system.log}} にログを記録しています。代わりに journald にログを記録するには、ユニットを [[編集]] して、{{ic|ExecStart}} 行に {{ic|-f}} を追加してサービスをフォアグラウンドで実行するように設定して、プロセスがフォークしないように Type を {{ic|simple}} に設定する必要があります。 |
||
− | The package logs to {{ic|/var/log/cassandra/system.log}} by default. To instead log to journald you will need to copy the systemd unit to {{ic|/etc/systemd/system/}} so the change persists. |
||
+ | これは systemd [[ドロップインファイル]] を使っても可能です。 |
||
− | $ cp /usr/lib/systemd/system/cassandra.service /etc/systemd/system/ |
||
+ | {{hc|/etc/systemd/system/cassandra.service.d/override.conf|2= |
||
− | Edit the unit |
||
+ | [Service] |
||
− | |||
+ | Type=simple |
||
− | $ vim /etc/systemd/system/cassandra.service |
||
+ | ExecStart= |
||
− | |||
+ | ExecStart=/usr/bin/cassandra -p /run/cassandra/cassandra.pid -f |
||
− | And set the service to run in the foreground by adding {{ic|-f}} to the {{ic|ExecStart}} line, and set Type to {{ic|simple}} as the process will no longer fork |
||
+ | }} |
||
− | |||
− | [Service] |
||
− | Type=simple |
||
− | ExecStart=/usr/bin/cassandra -p /run/cassandra/cassandra.pid -f |
||
− | |||
− | If Cassandra was running you will need to drain, and restart Cassandra |
||
− | |||
− | $ nodetool drain; systemctl restart cassandra |
||
+ | Cassandra が起動していた場合は、Cassandra の電源を切り、[[再起動]] する必要があります。 |
||
+ | $ nodetool drain |
||
=== cassandra.yaml === |
=== cassandra.yaml === |
||
− | + | デフォルトの {{ic|cassandra.yaml}} には膨大な量のドキュメントがあります。{{AUR|cassandra}} パッケージ経由でインストールされた場合、{{ic|/etc/cassandra/cassandra.yaml}} にあります。 |
|
− | ===== |
+ | ===== 基本的な設定項目 ===== |
+ | クラスターの名前を設定します。これは、このクラスターに含める予定のすべてのノードで一貫している必要があります。 |
||
− | Setting the name of the cluster. This needs to be consistent for all nodes that you intend to have in this cluster. |
||
cluster_name: 'Test Cluster' |
cluster_name: 'Test Cluster' |
||
+ | cassandra が書き込むディレクトリも設定します。以下は、設定されていない場合に使用されるデフォルトです。可能であれば、これを cassandra データの保存にのみ使用されるディスクに設定します |
||
− | Set the directory where cassandra will write too, below is the default that will be used if unset. If possible set this to a disk used only for storing cassandra data |
||
data_file_directories: |
data_file_directories: |
||
- /var/lib/cassandra/data |
- /var/lib/cassandra/data |
||
+ | 最初のノード (種となるノード) には、その IP アドレスを種に含め、少なくとも他の1つのノードを設定します。他のすべてのノードには、クラスタの広い範囲のノードを設定してみてください。起動時にこの設定にあるシードのいずれかに接続できない場合、そのノードは起動に失敗します。 |
||
− | For the first node (the seed node) make sure to include its IP address in the seeds, and atleast 1 other node. for all other nodes, try and set a broad range of nodes in the cluster. If a node cannot connect to one of the seeds listed in this configuration at startup - it will fail to start. |
||
seed_provider: |
seed_provider: |
||
59行目: | 54行目: | ||
- seeds: "192.168.1.53, 192.168.1.52" |
- seeds: "192.168.1.53, 192.168.1.52" |
||
+ | cassandra が {{ic|ssd}} または {{ic|spinning}} にデータを保存するために使用しているディスクのタイプに基づいて、これを設定します |
||
− | set this based on what type of disk cassandra is using to store data on {{ic|ssd}} or {{ic|spinning}} |
||
disk_optimization_strategy: ssd|spinning |
disk_optimization_strategy: ssd|spinning |
||
+ | これは、Cassandra がクライアント接続をリッスンするアドレスです。 |
||
− | This is the address Cassandra will listen for client connections on |
||
listen_address: 192.168.1.51 |
listen_address: 192.168.1.51 |
||
+ | これは、このノードがアドバタイズするアドレスです。クライアントとノードの両方がこのアドレスでこのノードに到達できることを確認してください。 |
||
− | This is the address this node will advertise itself as, ensure both your clients and nodes can reach this node on this address |
||
broadcast_address: 192.168.1.51 |
broadcast_address: 192.168.1.51 |
||
+ | これは、thrift 接続に使用されるアドレスであり、{{ic|0.0.0.0}} に設定されています。すべてのインターフェイスでリッスンします。これは、セキュリティのためにファイアウォールで保護されている限り問題ありません。 |
||
− | This is the address used for thrift connections, set to {{ic|0.0.0.0}} it will listen on all interfaces, which is fine as long as its firewalled for security |
||
rpc_address: 0.0.0.0 |
rpc_address: 0.0.0.0 |
||
+ | ===== トラブルシューティング ===== |
||
+ | Cassandra がサービスとして実行できない場合は、Cassandra を実行してみてください |
||
− | ===== Recommended settings for linux specifically ===== |
||
− | |||
− | hsha stands for "half synchronous, half asynchronous." All thrift clients are handled asynchronously using a small number of threads that does not vary with the amount of thrift clients (and thus scales well to many clients). This is not recommended on windows machines hsha is about 30% slower |
||
− | |||
− | rpc_server_type: hsha |
||
− | |||
− | Because we're using hsha, {{ic|rpc_max_threads}} must be set, or cassandra will refuse to start. {{ic|rpc_max_threads}} represents the maximum number of client requests this server may execute concurrently. |
||
− | |||
− | rpc_max_threads: 100 |
||
− | |||
− | |||
− | ===== Troubleshooting ===== |
||
− | |||
− | If Cassandra fails to run as a service, try running Cassandra |
||
$ cassandra |
$ cassandra |
||
+ | 次のエラーが表示された場合: |
||
− | If you receive the following error: |
||
Improperly specified VM option 'ThreadPriorityPolicy=42' |
Improperly specified VM option 'ThreadPriorityPolicy=42' |
||
99行目: | 82行目: | ||
Error: A fatal exception has occurred. Program will exit. |
Error: A fatal exception has occurred. Program will exit. |
||
− | Cassandra |
+ | Cassandra は Java 8 でのみ実行されます。ここ [[Java]] の指示に従って Java の Java 8 をインストールして `archlinux-java` を使用して jvm を切り替える必要があります。 |
− | |||
− | == Python API == |
||
− | Python API を使用したい場合、適切な Cassandra ドライバーをインストールしてください: |
||
− | |||
− | $ pip install cassandra-driver |
||
− | |||
− | Cassandra の Python API の使用方法については [https://datastax.github.io/python-driver/api/index.html API ドキュメント] を参照。 |
2023年2月23日 (木) 02:33時点における最新版
関連記事
Apache Cassandra はリニアにスケールする NoSQL データベースです。詳しくは 公式ドキュメント を読んでください。
目次
インストール
cassandraAUR パッケージをインストールしてください。
Configuration
Systemd unit
journald へのロギング
パッケージはデフォルトで /var/log/cassandra/system.log
にログを記録しています。代わりに journald にログを記録するには、ユニットを 編集 して、ExecStart
行に -f
を追加してサービスをフォアグラウンドで実行するように設定して、プロセスがフォークしないように Type を simple
に設定する必要があります。
これは systemd ドロップインファイル を使っても可能です。
/etc/systemd/system/cassandra.service.d/override.conf
[Service] Type=simple ExecStart= ExecStart=/usr/bin/cassandra -p /run/cassandra/cassandra.pid -f
Cassandra が起動していた場合は、Cassandra の電源を切り、再起動 する必要があります。
$ nodetool drain
cassandra.yaml
デフォルトの cassandra.yaml
には膨大な量のドキュメントがあります。cassandraAUR パッケージ経由でインストールされた場合、/etc/cassandra/cassandra.yaml
にあります。
基本的な設定項目
クラスターの名前を設定します。これは、このクラスターに含める予定のすべてのノードで一貫している必要があります。
cluster_name: 'Test Cluster'
cassandra が書き込むディレクトリも設定します。以下は、設定されていない場合に使用されるデフォルトです。可能であれば、これを cassandra データの保存にのみ使用されるディスクに設定します
data_file_directories: - /var/lib/cassandra/data
最初のノード (種となるノード) には、その IP アドレスを種に含め、少なくとも他の1つのノードを設定します。他のすべてのノードには、クラスタの広い範囲のノードを設定してみてください。起動時にこの設定にあるシードのいずれかに接続できない場合、そのノードは起動に失敗します。
seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: - seeds: "192.168.1.53, 192.168.1.52"
cassandra が ssd
または spinning
にデータを保存するために使用しているディスクのタイプに基づいて、これを設定します
disk_optimization_strategy: ssd|spinning
これは、Cassandra がクライアント接続をリッスンするアドレスです。
listen_address: 192.168.1.51
これは、このノードがアドバタイズするアドレスです。クライアントとノードの両方がこのアドレスでこのノードに到達できることを確認してください。
broadcast_address: 192.168.1.51
これは、thrift 接続に使用されるアドレスであり、0.0.0.0
に設定されています。すべてのインターフェイスでリッスンします。これは、セキュリティのためにファイアウォールで保護されている限り問題ありません。
rpc_address: 0.0.0.0
トラブルシューティング
Cassandra がサービスとして実行できない場合は、Cassandra を実行してみてください
$ cassandra
次のエラーが表示された場合:
Improperly specified VM option 'ThreadPriorityPolicy=42' Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.
Cassandra は Java 8 でのみ実行されます。ここ Java の指示に従って Java の Java 8 をインストールして `archlinux-java` を使用して jvm を切り替える必要があります。