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

How to start Cassandra on a (M1) Macbook?

我无法在配备 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)。

不幸的是,Cassandra 3.11(以及即将发布的 4.0)附带的 JNA (v4.2.2) JAR 不包含允许为 Apple M1 的 Darwin arm64 构建的补丁(参见 JNA PR #1238)。

在撰写本文时,没有可用的解决方法,但如果您只想尝试使用 Cassandra,您可以在 Astra on the free-tier and it doesn't require a credit card. It comes bundled with Stargate.io 上启动 Cassandra 数据库——一个数据访问平台,它允许您使用 REST API、GraphQL API 或 JSON/Doc API 连接到 Cassandra 集群,因此您可以立即构建应用程序而无需 download/install/configure Cassandra。

或者,您可以尝试 K8ssandra.io -- a cloud-native distribution of Cassandra that runs on Kubernetes with all the tools bundled in for automated repairs, backups, monitoring with Prometheus + Grafana, and Stargate.io。干杯!

我发现将 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)可以解决问题。至少只是为了让开发环境正常运行。

对于 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/repostory/net/java/dev/jna

中找到 jar