web-dev-qa-db-ja.com

CassandraはJava 10をサポートしていますか?

環境をJava 8からOpenJDK 10に移行する予定です。これをローカルマシンで実行すると、Cassandraが起動しなくなり、次のようになります。エラー:

enter image description here

サポートされていないという確かな情報をオンラインで見つけることができません。

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を想定していますか?)、それは大いに役立ちます。

11
user3275784

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の最新のパッチが本当に唯一のオプションです。

16
Aaron

CassandraサポートのみJava 8-より高いバージョンのサポートは、Cassandra 4.0ではサポートされません CASSANDRA-9608 で進行状況を追跡できます。

6
Alex Ott

Cassandra 3.11.4を使用すると、CassandraエンジンをJava 11で実行できますが、落とし穴:

  • 何らかの理由でまだガベージコレクションにCMSを使用している場合は、G1に移行するときです。これはjvm.optionsファイルで設定されます。
  • また、jvm.optionsでは、_ Java 9 で非推奨になったため、ThreadPriorityPolicyを無効にする必要があります。
  • Java 9で導入されたgcアクティビティの統合ロギングでは、jvm.optionsのgc固有のパラメーターを削除する必要があります。これらのパラメーターの一部は次のとおりです。
    • -Xloggc
    • -XX:+ PrintGCDetails
    • -XX:+ PrintGCDateStamps
    • -XX:+ PrintHeapAtGC
    • -XX:+ PrintTenuringDistribution
    • -XX:+ PrintGCApplicationStoppedTime
    • -XX:+ PrintPromotionFailure
  • nodetoolを実行するには、まだJava 8が必要です。

    • 両方のJVMがインストールされており、代わりにJava 11をデフォルトとして設定しました。これはJava_HOME変数の値でもあります
    • そのバージョンを指すJava8_HOMEという新しい変数があります。
    • Java変数を設定するときにJava8_HOMEを使用するように、nodetoolスクリプト(この場合は/ usr/bin/nodetoolにありました)を更新しました
  • offheap_buffersmemtable_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

  1. ダウンロードCassandraトランク分岐コード: https://github.com/Apache/cassandra

  2. ファイルを解凍し、ターミナル/コマンドプロンプトでフォルダーを開きます。

  3. ビルドcassandra -Duse.jdk11 = true引数付き:
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
  1. Binフォルダーに移動して、Cassandraを実行します。
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
  1. Nodetoolのステータスを確認する
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
  1. Cqlshを実行する
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> 
0
Ajit Soman