環境をJava 8からOpenJDK 10に移行する予定です。これをローカルマシンで実行すると、Cassandraが起動しなくなり、次のようになります。エラー:
サポートされていないという確かな情報をオンラインで見つけることができません。
4か月前のこの投稿 は、Java 10をサポートしていないことを示唆していますが、確認されているとは言わず、推測されています。別のユーザーからのコメントもあり、Java 11で実行できたとのことです。
Datastaxの this ticket の最後のコメントは、「CIマトリックスを更新してJava 10を含めるようにしました。前述のOSGiテストの問題以外はすべて機能します。 」それから何を取り除くかはわかりませんが、チケットが解決済みとしてマークされているため、Java 10で現在機能していることを意味しているようです。
このチケット 、Java 11のサポートについて説明しています。Java 10をサポートする必要性についてもいくつかコメントがありますが、彼らがそうするか否かについて決定的な答えを実際に与えないでください。
最後に このブログ では、Java 11をcassandraで動作させる方法について説明しています。ただし、これはCassandra 4.0を使用していることに気付きました。これは正式にリリースされましたか?私は彼らの website に気づき、リリース日はtbdであり、現在の安定リリースは3.11.3であり、 互換性ページ 。
現在、Datastaxを介してCassandraをWindowsにインストールしていますが、現在のgitリポジトリのクローンを作成してそこから実行しようとしましたが、同じエラーメッセージが表示されます(ただし、githubでは、 Javaでのみテスト済み8)。
彼らは単に10をサポートしないのですか?また、誰かが4.0をすぐにリリースする予定かどうかを知っていて、それが間違いなく11をサポートするなら(そして私は10を想定していますか?)、それは大いに役立ちます。
Cassandra 4.0は、Java 8とJava 11の両方を明示的にサポートしています。実際、構成ファイルを次のように分割しています。
$ pwd
/Users/aaron/local/Apache-cassandra-4.0-SNAPSHOT/conf
$ ls -a jvm*
jvm-clients.options jvm11-clients.options jvm8-clients.options
jvm-server.options jvm11-server.options jvm8-server.options
これらの特定のバージョンをサポートする理由は2つあります。まず最初に、Java 8は数年前からCassandraの事実上の標準となっています。ユーザーは、今後もJava 8で動作することを期待しています。
Javaの新しい6か月のリリースサイクルを考えると、Java 9およびJava 10は、Apache Cassandra 4.0がリリースされたときに「最新」ではなくなります。さらに、ビルド中に実行されるテストは、どのバージョンのJavaを使用するかについてうるさいことがわかっています。したがって、Java 9および10での作業は優先度が低いように思われるため、4.0でJava 8および11をサポートすることを決定しました。
Cassandra 4.0がrun on Java 9または10を実行しないと言っているわけではありません。実際、 CASSANDRA-9608すべきそれをカバーするパッチも提出されています。ただし、Java 8はCassandraユーザーベースで長年使用されているため、含まれているという事実は変わりません。 Java 4.0のリリース時点では、11が現在のJDK/JREになります。クラスターが正常に動作することを確認したい場合は、これら2つの中から1つを選びます。
しかし、4.0までは、Java 8の最新のパッチが本当に唯一のオプションです。
CassandraサポートのみJava 8-より高いバージョンのサポートは、Cassandra 4.0ではサポートされません CASSANDRA-9608 で進行状況を追跡できます。
Cassandra 3.11.4を使用すると、CassandraエンジンをJava 11で実行できますが、落とし穴:
jvm.options
ファイルで設定されます。ThreadPriorityPolicy
を無効にする必要があります。jvm.options
のgc固有のパラメーターを削除する必要があります。これらのパラメーターの一部は次のとおりです。nodetool
を実行するには、まだJava 8が必要です。
offheap_buffers
にmemtable_allocation_type
を使用していたクラスターの場合(cassandra.yaml
で定義されています)、offheap_objects
を使用するように変更する必要がありました。
現在のところ、Cassandra 3.xはJava 8.でのみ機能します。Cassandra 4.0はJava 8およびJava 11ですが、この回答の執筆時点ではまだリリースされていません。
Cassandra=ローカルシステムで(本番環境では推奨されません)Java 11.で実行する場合は、次の手順に従います。
前提条件:Java 11、Apache Ant、Python
ダウンロードCassandraトランク分岐コード: https://github.com/Apache/cassandra
ファイルを解凍し、ターミナル/コマンドプロンプトでフォルダーを開きます。
ajit-soman@ajitsoman-X542BA:~/Downloads/cassandra-trunk$ ant -Duse.jdk11=true
Buildfile: /home/ajit-soman/Downloads/cassandra-trunk/build.xml
[script] Warning: Nashorn engine is planned to be removed from a future JDK release
...
...
jar:
[mkdir] Created dir: /home/ajit-soman/Downloads/cassandra-trunk/build/classes/stress/META-INF
[mkdir] Created dir: /home/ajit-soman/Downloads/cassandra-trunk/build/tools/lib
[jar] Building jar: /home/ajit-soman/Downloads/cassandra-trunk/build/tools/lib/stress.jar
[mkdir] Created dir: /home/ajit-soman/Downloads/cassandra-trunk/build/classes/fqltool/META-INF
[jar] Building jar: /home/ajit-soman/Downloads/cassandra-trunk/build/tools/lib/fqltool.jar
BUILD SUCCESSFUL
Total time: 7 minutes 38 seconds
ajit-soman@ajitsoman-X542BA:~/Downloads/cassandra-trunk/bin$ ./cassandra
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
CompileCommand: dontinline
ajit-soman@ajitsoman-X542BA:~/Downloads/cassandra-trunk/bin$ ./nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 127.0.0.1 5.79 KiB 256 100.0% 68687cfd-a80b-45db-93cd-7bc2d212a64b rack1
ajit-soman@ajitsoman-X542BA:~/Downloads/cassandra-trunk/bin$ ./cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 4.0-alpha2-SNAPSHOT | CQL spec 3.4.5 | Native protocol v4]
Use HELP for help.
cqlsh>