【问题标题】:Unable to start Cassandra server on unix machine无法在 unix 机器上启动 Cassandra 服务器
【发布时间】:2024-01-17 15:38:02
【问题描述】:

我是 cassandra 的新手,在 Unix 机器上启动 cassandra 服务器时需要帮助。我安装了 cassandra,在执行 ./bin/cassandra -f 时出现以下错误 -

./bin/cassandra: 测试:未知操作员>

另一个错误是在同一目录中执行 cqlsh。

cqlsh:第 21 行的语法错误:`print' 意外

我的环境中有 jdk 1.8 和 python 2.4.4。我也尝试过同时使用 tcsh 和 bash。

请提供建议并感谢解决方案。

【问题讨论】:

    标签: bash unix cassandra cqlsh


    【解决方案1】:

    将 TCSH 更改为 Bash 并编辑 cassandra 脚本解决了这个问题。

    在 solaris 上工作的最佳参考 -https://blogs.oracle.com/partnertech/entry/how_to_build_and_run

    【讨论】:

      【解决方案2】:

      肯定有一些技巧可以让 Cassandra 在某些品牌的 UNIX 上运行。了解您尝试运行哪个版本的 Cassandra 也会有所帮助。

      首先,您绝对应该从 Bash 运行它。

      ./bin/cassandra: test: unknown operator >
      

      接下来,这是因为conf/cassandra-env.sh 正在尝试检查您的 Java 版本。根据您拥有的 Cassandra 版本,它会尝试执行以下操作:

        if [ "$JVM_VENDOR" != "OpenJDK" -o "$JVM_VERSION" \> "1.6.0" ]
      

      在 Linux 上的 Bash 中运行良好。但是对于某些品牌的 UNIX,该运算符可能不会以相同的方式工作。老实说,只要你知道你的 Java 版本是好的,你应该可以编辑 conf/cassandra-env.sh 并注释掉这些检查。

      cqlsh: syntax error at line 21: `print' unexpected
      

      由于这一行而发生此错误:

      python -c 'import sys; sys.exit(not (0x020700b0 < sys.hexversion < 0x03000000))' 2>/dev/null \
      && exec python "`python -c "import os;print(os.path.dirname(os.path.realpath('$0')))"`/cqlsh.py" "$@"
      

      这可能是由于 cqlsh 包装脚本未能在您的机器上找到合适的 Python 版本。我不知道 cqlsh 能够使用 Python 2.4,所以我会尝试将其升级到 2.7。

      不过,简而言之,如果您可以在 Linux 上运行 Cassandra,您将有更大的成功机会。即使您解决了这些错误,我敢打赌您还会遇到更多问题,因此现在改用 Linux 可能会更容易。

      【讨论】:

      • 谢谢亚伦。 Linux 对我的项目不可行,因为我们有现有的环境设置。我有 java 版本“1.8.0_121”。评论 jvm 行给了我其他一组错误 - ./cassandra: numactl: not found ./cassandra: bad replacement