如何在(M1) Macbook上启动Cassandra?

5
我无法在我的搭载 M1 芯片的Macbook 上启动 Cassandra (3.11.10),它会显示以下错误信息:
ERROR [main] 2021-07-09 13:12:46,807 NativeLibraryDarwin.java:64 - Failed to link the C library against JNA. Native methods will be unavailable.
java.lang.UnsatisfiedLinkError: /Users/tom/apache-cassandra-3.11.10/tmp/jna8890560385007025439.tmp: dlopen(/Users/tom/apache-cassandra-3.11.10/tmp/jna8890560385007025439.tmp, 1): no suitable image found.  Did find:
        /Users/tom/apache-cassandra-3.11.10/tmp/jna8890560385007025439.tmp: no matching architecture in universal wrapper
        /Users/tom/apache-cassandra-3.11.10/tmp/jna8890560385007025439.tmp: no matching architecture in universal wrapper

我正在使用OpenJDK 1.8.0_292 (Azul Zulu)。

3个回答

10

我发现将Cassandra的lib目录中(例如apache-cassandra-3.11.10/lib/jna-4.2.12.jar)的JNA jar包替换为最新版本(5.8.0,来自于https://search.maven.org/artifact/net.java.dev.jna/jna/5.8.0/jar),可以解决问题。至少可以让开发环境正常运行。


谢谢,看起来运行良好。非常简单而有效的解决方案! - Tom
1
在M2 MacBook上以及与Cassandra 3.11.15一起使用同样有效。 - Michael Schaefers

1

很遗憾,Cassandra 3.11(以及即将推出的4.0版本)附带的JNA(v4.2.2) JAR不包含修补程序,无法为Apple M1的Darwin arm64构建(请参见JNA PR#1238)。

截至撰写本文时,还没有可用的解决方法,但是如果您只想尝试使用Cassandra,则可以在免费层上启动Astra上的Cassandra数据库,而且无需信用卡。它捆绑了Stargate.io - 一种数据访问平台,可通过REST API、GraphQL API或JSON / Doc API连接到Cassandra集群,因此您可以立即构建应用程序,而无需下载/安装/配置Cassandra。

或者,您可以尝试K8ssandra.io--这是一个基于Kubernetes运行的Cassandra云原生分发版本,其中包含所有工具,用于自动修复、备份、监控(使用Prometheus + Grafana)和Stargate.io。干杯!


1

对于在M1上运行的cassandra-4.0.1,使用jna-5.10.0替换jna jar。如果您已安装maven,则可以执行以下操作获取该jar:

mvn dependency:get -Dartifact=net.java.dev.jna:jna:5.10.0

然后您就可以在~/.m2/repository/net/java/dev/jna中找到该jar包。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接