【问题标题】:How can I reinstall a cassandra on ubuntu?如何在 ubuntu 上重新安装 cassandra?
【发布时间】:2012-11-03 15:42:40
【问题描述】:

我是 Ubutu(linux) + Cassandra 的新手。

我在我的 ubuntu 机器上使用 OpenJdk 测试了 Cassandra。有一些很好的文章来解释如何在 ubuntu 上安装 Cassandra,所以我可以这样做。我更改了一些配置值并检查了它是否正常运行。

而且,我决定移除 cassandra 并重新安装以获得干净的。

[我在做什么]

我通过以下步骤卸载 Cassandra:

  1. 使用 apt-get 卸载 Cassandra

    apt-get 删除 cassandra

  2. 删除数据/日志/目录

    rm -rf /var/lib/cassandra

    rm -rf /var/log/cassandra

    rm -rf /etc/cassandra

之后我尝试安装新的 cassandra

apt-get 安装 cassandra

[错误消息]

sudo cassandra -f

线程“main”中的异常 java.lang.ExceptionInInitializerError 引起:java.lang.RuntimeException:无法弄清楚log4j配置:log4j-server.properties

在 org.apache.cassandra.service.AbstractCassandraDaemon.initLog4j(AbstractCassandraDaemon.java:86)

在 org.apache.cassandra.thrift.CassandraDaemon.(CassandraDaemon.java:62) 找不到主类:org.apache.cassandra.thrift.CassandraDaemon。程序将退出。`

并且“/var/lib/cassandra”、“/var/log/cassandra”和“/etc/cassandra”目录OTL下没有文件。

我想知道,我想念什么。

【问题讨论】:

  • 作为记录,其他人和我自己在 log4j 配置方面遇到了问题。有一些提示stackoverflow.com/questions/6574093/cassandra-starting-issue,但我还没有深入了解它
  • 我完成了你所有的卸载步骤,然后我运行了 sudo apt-get purge cassandra。然后安装它,它现在对我有用。

标签: cassandra


【解决方案1】:

我可以通过执行以下操作完全卸载 Cassandra:

apt-get remove cassandra

--- 删除 cassandra 目录

rm -rf /var/lib/cassandra
rm -rf /var/log/cassandra
rm -rf /etc/cassandra

但是,在做完上述之后,仍然有一些东西被遗留下来,如果你在这样做之后尝试重新安装它,它不会起作用,因为安装会检测到那些剩余的文件并认为你仍然有安装的软件。您将获得一组新目录,但它们将是空的。因此,您需要删除所有其他内容。有目录和文件需要手动删除。

--- 找到剩余的 Cassandra 文件

find / -name 'cassandra' 

或者,

find / -name '*cassandra*'

(系统上所有剩余的文件都需要删除,或者一些目录是空的,甚至根本没有创建)。

上面的命令将返回留下的文件和目录的列表。删除它们。

现在,你应该可以做到了:

apt-get update

接着是:

apt-get install cassandra

完成此操作后,我得到了一个全新的安装,在启动 Cassandra 后,它完成了所有首次启动的工作并启动并运行。

如果您收到有关由于公钥而导致签名未验证的 GPG 错误,则需要在安装语句之前进行设置。

【讨论】:

  • 删除所有剩余 cassandra 文件的命令可以是 sudo rm -rf sudo find / -name *cassandra*``
【解决方案2】:

AFAIK,您的卸载步骤是正确的。

检查每个目录的权限。在我在 Ubuntu 10.04 上安装 Cassandra 1.1.6 时,/etc/cassandra 归 root 所有,而 /var/lib/cassandra 和 /var/log/cassandra 归 cassandra 用户和组所有。

另外,您应该使用 init 脚本来启动 cassandra,如下所示:

sudo service cassandra start

而不是直接从 sudo 开始。

我看到当以 root 身份而不是以 cassandra 用户身份手动运行 cassandra 时,权限会变得混乱,而这正是 init 脚本为您负责的工作。

【讨论】:

  • 谢谢@Rich Sutton。我会在星期一回答你(那是在我的工作场所),然后通知你结果:)
  • 不幸的是 /var/lib/cassandra、/var/log/cassandra 目录已经归 root 所有。所以,我删除了所有已安装的东西,例如 cassandra binary、cassandra source tar、openjdk-6-jre/jdk 和 openjdk-7-jre/jdk。然后我安装了 openjdk-7-jre/jdk + cassandra 二进制文件。它有效!
【解决方案3】:

Datastax 为此目的提供了一个 bash 脚本:

https://docs.datastax.com/en/ddac/doc/datastax_enterprise/install/uninstallDDAC.html?hl=uninstall%2Ccassandra

脚本代码如下:

# Stop services
/etc/init.d/cassandra stop
/etc/init.d/dse stop
/etc/init.d/opscenter-agent stop

# Remove packages
PACKAGES=(dsc dsc1.1 dsc12 dsc20 cassandra apache-cassandra1 dsc-demos \
dse dse-libhadoop-native dse-libhadoop dse-libcassandra dse-hive dse-libhive dse-pig \
dse-libpig dse-demos dse-libsqoop dse-libtomcat dse-liblog4j dse-libsolr dse-libmahout dse-full)
DEB_PACKAGES=(python-cql python-thrift-basic)
RPM_PACKAGES=(python26-cql python26-thrift)
if [ `which dpkg` ]; then
PLIST=(${PACKAGES[@]} ${DEB_PACKAGES[@]})
dpkg -P ${PLIST[*]}
rm -rf /etc/apt/sources.list.d/datastax.list
else
PLIST=(${PACKAGES[@]} ${RPM_PACKAGES[@]})
yum -y remove ${PLIST[*]}
rm -rf  /etc/yum.repos.d/datastax.repo
fi

# Cleanup log and configuration files
rm -rf /var/lib/cassandra/* /var/log/{cassandra,hadoop,hive,pig}/* /etc/{cassandra,dse}/* \
/usr/share/{dse,dse-demos} /etc/default/{dse,cassandra}

要重新安装,只需运行此脚本,然后再次安装 cassandra,就像第一次一样。

编辑:他们的脚本似乎有点过时了。我不得不将 dsc20 添加到 PACKAGES 列表中。

编辑 2:链接坏了(是 http://www.datastax.com/documentation/opscenter/3.2/webhelp/#opsc/online_help/opscRemovingPackages_t.html,感谢荒牧大辅找到最新链接)

【讨论】:

【解决方案4】:

实际上问题是 cassandra 无法启动,因为它在其配置目录中找不到名为“log4j-server.properties”的文件,要解决您在那里遇到的问题,无需再次重新安装,而只需简单执行以下操作来解决问题:

1) 从here 下载压缩包文件。

2) 提取它:

$ tar -xzvf apache-cassandra-1.2.5.tar.bin.gz

3) 查看cassandra的配置路径在哪里。您可以从名为“/usr/share/cassandra/cassandra.in.sh”的文件中获取配置路径,查看名为“CASSANDRA_CONF”的键。

$ gedit /usr/share/cassandra/cassandra.in.sh

4) 从名为“conf”的目录中手动从解压包中复制丢失的文件(步骤 2)

$ sudo cp extracted_cassandra/conf/cassandra.yaml /etc/cassandra
$ sudo cp extracted_cassandra/conf/log4j-server.properties /etc/cassandra

提示:

  • 了解更多信息。如何安装cassandra debian包,查看this
  • 了解更多信息。如何从他们的存储库安装 cassandra,请查看 this

  • 如果您想重新安装它,只需执行以下操作:

    $ sudo apt-get remove cassandra

    $ sudo apt-get install cassandra

【讨论】:

    【解决方案5】:

    我也遇到了同样的 XML 错误,这是另一个答案。 this SO post 上也详细说明了该错误,其中 OP 无法启动 Cassandra。我按照您的步骤卸载并按照this article 上的步骤重新安装。


    我做了什么 - 我学到了什么

    问题一定与 C* 版本有关。我最初使用的链接引导我使用以下命令进行安装:

    deb http://www.apache.org/dist/cassandra/debian 10x main 
    


    不是这样,我升级了我的命令以指向 Cassandra Debian 版本 11 (11x)。例如。

    deb http://www.apache.org/dist/cassandra/debian 11x main 
    

    我还明智地卸载了 Cassandra 的所有内容,重新启动并强制通过新版本的 Cassandra


    资源

    有关在 Ubuntu 上安装 Cassandra 的另一个(旧)源,请尝试 Vineet Daniel 的 Installing Cassandra on Ubuntu

    【讨论】:

      【解决方案6】:
      1. 删除已安装的 cassandra 包和配置文件:

        sudo apt-get purge "cassandra-*" "datastax-*"

      2. 删除库和日志目录:

        sudo rm -r /var/lib/cassandra

        sudo rm -r /var/log/cassandra

      【讨论】:

      • @EduardoPascualAseff 很高兴为您提供帮助 :)
      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 2011-05-18
      • 2014-11-21
      • 1970-01-01
      • 2021-11-26
      • 2019-10-11
      • 2018-04-17
      • 2012-07-12
      相关资源
      最近更新 更多