Cassandraドキュメント

バージョン

プレリリース版のドキュメントを表示しています。

Javaのサポート

Apache Cassandraのコンパイルおよび実行に使用するJavaバージョンのサポートマトリックスを表1に示します。ビルドバージョンは縦軸、実行バージョンは横軸に沿っています。

Javaのサポートマトリックス

Java 11(実行)

Java 17(実行)

Java 11(ビルド)

サポート対象

試験的サポート

Java 17(ビルド)

サポート対象外

CIで実験的

Java 17でビルドされたApache 5.0ソースコードは、Java 11では実行できません。すべてのバイナリリリースはJava 11でビルドされています。

Java 11を使用してビルドする

まず、Java 11をインストールします。例として、RedHat LinuxにJava 11をインストールする場合のコマンドは次のとおりです。

$ sudo yum install java-11-openjdk

環境変数JAVA_HOMEPATHを設定します。

$ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
$ export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

依存関係とともに、Apache Cassandra 5.0ソースコードをGitからダウンロードしてインストールします。

$ git clone https://github.com/apache/cassandra.git

Cassandraがすでに実行中の場合は、次のコマンドでCassandraを停止します。

$ ./nodetool stopdaemon

build.xmlビルドスクリプトがあるcassandraディレクトリからソースコードをビルドします。Apache Antは、JAVA_HOME環境変数で設定されたJavaバージョンを使用します。

$ cd ~/cassandra
$ ant

Apache Cassandra 5.0はJava 11でビルドされます。bashスクリプトでCASSANDRA_HOMEの環境変数を設定します。また、CASSANDRA_HOME/binPATH変数に追加します。

$ export CASSANDRA_HOME=~/cassandra
$ export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$CASSANDRA_HOME/bin

Java 11またはJava 17のいずれかでApache Cassandra 5.0を実行するには、PATH環境変数にあるCASSANDRA_HOME/binディレクトリでCassandraアプリケーションを実行します。

$ cassandra

Cassandraの起動時に、Cassandraの実行に使用されたJavaバージョンが出力されます。たとえば、Java 11を使用した場合、実行出力には次の出力スニペットのようなものが含まれている必要があります。

INFO  [main] 2019-07-31 21:18:16,862 CassandraDaemon.java:480 - Hostname: ip-172-30-3-
146.ec2.internal:7000:7001
INFO  [main] 2019-07-31 21:18:16,862 CassandraDaemon.java:487 - JVM vendor/version: OpenJDK
64-Bit Server VM/11.0.3
INFO  [main] 2019-07-31 21:18:16,863 CassandraDaemon.java:488 - Heap size:
1004.000MiB/1004.000MiB

次の出力は、シングルノードのCassandra 5.0クラスターが起動したことを示しています。

INFO  [main] 2019-07-31 21:18:19,687 InboundConnectionInitiator.java:130 - Listening on
address: (127.0.0.1:7000), nic: lo, encryption: enabled (openssl)
...
...
INFO  [main] 2019-07-31 21:18:19,850 StorageService.java:512 - Unable to gossip with any
peers but continuing anyway since node is in its own seed list
INFO  [main] 2019-07-31 21:18:19,864 StorageService.java:695 - Loading persisted ring state
INFO  [main] 2019-07-31 21:18:19,865 StorageService.java:814 - Starting up server gossip
INFO  [main] 2019-07-31 21:18:20,088 BufferPool.java:216 - Global buffer pool is enabled,
when pool is exhausted (max is 251.000MiB) it will allocate on heap
INFO  [main] 2019-07-31 21:18:20,110 StorageService.java:875 - This node will not auto
bootstrap because it is configured to be a seed node.
...
...
INFO  [main] 2019-07-31 21:18:20,809 StorageService.java:1507 - JOINING: Finish joining ring
INFO  [main] 2019-07-31 21:18:20,921 StorageService.java:2508 - Node 127.0.0.1:7000 state
jump to NORMAL

Java 17を使用してビルドする

Java 17を使用してApache Cassandra 5.0をビルドする場合は、まずJava 17をインストールし、環境変数を設定する必要があります。例として、RedHat LinuxにJava 17をダウンロードしてインストールするには、次のコマンドを実行します。

$ yum install java-17-openjdk

環境変数JAVA_HOMEPATHを設定します。

$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
$ export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

これで、ビルド出力に以下が含まれるようになります。

[echo] Non default JDK version used: 17
...
...
_build_java:
    [echo] Compiling for Java 17
...
...
build:

_main-jar:
         [copy] Copying 1 file to /home/ec2-user/cassandra/build/classes/main/META-INF
     [jar] Building jar: /home/ec2-user/cassandra/build/apache-cassandra-5.0-SNAPSHOT.jar
...
...
_build-test:
   [javac] Compiling 739 source files to /home/ec2-user/cassandra/build/test/classes
    [copy] Copying 25 files to /home/ec2-user/cassandra/build/test/classes
...
...
jar:
   [mkdir] Created dir: /home/ec2-user/cassandra/build/classes/stress/META-INF
   [mkdir] Created dir: /home/ec2-user/cassandra/build/tools/lib
     [jar] Building jar: /home/ec2-user/cassandra/build/tools/lib/stress.jar
   [mkdir] Created dir: /home/ec2-user/cassandra/build/classes/fqltool/META-INF
     [jar] Building jar: /home/ec2-user/cassandra/build/tools/lib/fqltool.jar

BUILD SUCCESSFUL
Total time: 1 minute 3 seconds

一般的な問題

Java 17でビルドされたApache Cassandra 5.0ソースコードは、Java 17でのみ実行できます。Java 17でビルドされたコードをJava 11で実行すると、次のエラーメッセージが出力されます。

$ echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk
$ cassandra
...
...
Error: LinkageError occurred while loading main class org.apache.cassandra.service.CassandraDaemon
	java.lang.UnsupportedClassVersionError: org/apache/cassandra/service/CassandraDaemon has been compiled by a more
recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file
versions up to 55.0
...