如何在ubuntu上重新安装cassandra?

Rya*_*Ryu 24 cassandra

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

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

并且,我决定删除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 install 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.

我想知道,我想念的是什么.

小智 9

通过执行以下操作,我能够完全卸载Cassandra:

apt-get remove cassandra
Run Code Online (Sandbox Code Playgroud)

---删除cassandra目录

rm -rf /var/lib/cassandra
rm -rf /var/log/cassandra
rm -rf /etc/cassandra
Run Code Online (Sandbox Code Playgroud)

但是,在执行上述操作后,仍有一些事情遗留下来,如果您在执行此操作后尝试重新安装它,则无法正常工作,因为安装会检测到剩余的文件并认为您仍然安装了该软件.您将获得一组新目录,但它们将为空.所以,你需要删除所有其他的东西.需要手动删除目录和文件.

---找到剩下的Cassandra文件

find / -name 'cassandra' 
Run Code Online (Sandbox Code Playgroud)

要么,

find / -name '*cassandra*'
Run Code Online (Sandbox Code Playgroud)

(需要删除系统上剩余的所有文件,或者将一些目录留空或甚至根本不创建).

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

现在,你应该能够做到:

apt-get update
Run Code Online (Sandbox Code Playgroud)

其次是:

apt-get install cassandra
Run Code Online (Sandbox Code Playgroud)

在这之后,我得到了一个全新的安装,并在启动Cassandra时,它完成了所有首次启动的东西并启动并运行.

如果由于公钥而导致签名未被验证时出现GPG错误,则需要在安装语句之前进行设置.


Ric*_*ton 7

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

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

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

sudo service cassandra start
Run Code Online (Sandbox Code Playgroud)

而不是直接用sudo开始.

我已经看到,当以root身份手动运行cassandra而不是cassandra用户时,权限会变得混乱,这是init脚本为您处理的内容.


jos*_*osh 7

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

http://www.datastax.com/documentation/opscenter/3.2/webhelp/#opsc/online_help/opscRemovingPackages_t.html

继承脚本代码:

# 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}
Run Code Online (Sandbox Code Playgroud)

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

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