我们正计划将环境从Java 8迁移到OpenJDK10。在我的本地计算机上这样做,我发现Cassandra将不再为我启动,并出现以下错误:
我找不到任何可靠的在线信息,说它绝对不受支持。
4个月前的This post表明他们不支持Java 10,但没有说它得到证实,并且可以推断出更多。另一位用户对此也发表了评论,说他们已经设法使其在Java 11上运行。
关于this ticket的datastax的最终评论说:“我们已经更新了CI矩阵,使其包含Java 10,并且除上述OSGi测试问题外,其他所有东西都可以使用。”我不确定该如何解决,但似乎暗示它已在Java 10上运行,因为该票证被标记为已解决。
This ticket,他们讨论了对Java 11的支持。有几条评论讨论了甚至需要支持Java 10的必要性,但是他们并没有就是否支持Java 10给出确切的答案。
最后this blog讨论了一种使Java 11与cassandra一起使用的方法。但是我注意到这是使用Cassandra 4.0。这个正式发布了吗?我在他们的website上注意到他们说发布日期是tbd,并说当前的稳定版本是3.11.3,在他们的compatibility page中没有提及它。
我目前通过Datastax在Windows上安装了Cassandra,但是我也尝试了克隆当前的git仓库并从那里运行它,但是我收到了同样的错误消息(尽管他们确实在github上说确实已经过测试) Java 8)。
那么他们是否根本不支持10个?另外,如果有人知道他们是否计划很快发布4.0,并且如果该版本肯定支持11(我认为是10?),那将是巨大的帮助。
答案 0 :(得分:13)
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
支持这些特定版本的原因有两个。首先,几年来Java 8已经成为Cassandra的实际标准。用户期望它将来仍可在Java 8上运行。
鉴于Java的新发布周期为6个月,因此Apache Cassandra 4.0发行后,Java 9和Java 10将不再是“当前”。另外,在构建过程中运行的测试表明,他们选择使用哪种Java版本。因此,决定要支持Java 8和11 for 4.0,因为Java 9和10的工作似乎没有那么重要了。
这并不是说Cassandra 4.0不会在Java 9或10上运行。实际上,CASSANDRA-9608甚至提交了一个补丁,该补丁应 它。但是事实仍然存在,因为Java 8已在Cassandra用户群中长期使用。 Java 11将在4.0发行时成为当前的JDK / JRE。如果您想确保您的集群能够正常运行,我会选择这两个集群之一。
但是直到4.0,Java 8的最新补丁才真正是唯一的选择。
答案 1 :(得分:0)
使用Cassandra 3.11.4,我们已经能够使用Java 11执行Cassandra引擎,但是有一些陷阱:
jvm.options
文件中设置的。ThreadPriorityPolicy
jvm.options
中删除gc特定参数。其中一些参数是:
nodetool
仍然需要Java 8才能执行。
对于将offheap_buffers
用于memtable_allocation_type
(在cassandra.yaml
中定义)的集群,我们必须将其更改为使用offheap_objects
答案 2 :(得分:0)
到目前为止,Cassandra 3.x仅适用于Java8。Cassandra 4.0支持Java 8和Java 11,但在编写此答案时尚未发布。
如果要使用Java 11在本地系统(不建议用于生产)中运行Cassandra,则可以执行以下步骤:
先决条件: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>