如何使用Cassandra工具sstableloader?
我正在尝试使用sstableloader将数据加载到现有的Cassandra环中,但不知道如何实际使其工作。我试图在一台有正在运行的cassandra节点的机器上运行它,但是当我运行它时,我得到一个错误,说端口7000已经在使用中,这是正在运行的cassandra节点用于流言的端口 那么,这是否意味着我只能在与目标cassandra环位于同一网络的机器上使用sstableloader,但实际上没有运行cassandra节点如何使用Cassandra工具sstableloader?,cassandra,Cassandra,我正在尝试使用sstableloader将数据加载到现有的Cassandra环中,但不知道如何实际使其工作。我试图在一台有正在运行的cassandra节点的机器上运行它,但是当我运行它时,我得到一个错误,说端口7000已经在使用中,这是正在运行的cassandra节点用于流言的端口 那么,这是否意味着我只能在与目标cassandra环位于同一网络的机器上使用sstableloader,但实际上没有运行cassandra节点 任何详细信息都会很有用,谢谢。使用sstableloader,阅读源代码
任何详细信息都会很有用,谢谢。使用sstableloader,阅读源代码,并最终了解如何在承载正在运行的cassandra节点的同一台机器上运行sstableloader。有两个关键点可以让它运行。首先,您需要为sstableloader创建cassandra安装文件夹的副本。这是因为sstableloader读取yaml文件以确定用于八卦的IP地址,而Cassandra正在使用现有的yaml文件。第二点是,您需要在计算机上创建一个新的环回IP地址(类似于127.0.0.2)。完成此操作后,将复制的Cassandra安装文件夹中的yaml文件更改为侦听此ipaddress
我在这里写了一篇教程,详细介绍了如何做到这一点:奥斯汀·卡桑德拉用户小组刚刚就这一点做了介绍:
我使用cassandra-0.8.4中提供的sstableloader实用程序成功地将sstables加载到cassandra中。从我遇到的一些问题中,我有以下提示
参考请参见:参考请参见:使用Cassandra SStableloader将数据批量加载到Cassandra
如果您希望在Java中执行此操作,请参见下面的实用程序类:
List argList=new ArrayList();
argList.add(“-v”);
argList.add(“-d”);
argList.add(params.hosts);
argList.add(“-f”);
argList.add(params.cassyml);
argList.add(参数完整路径);
LoaderOptions选项=LoaderOptions.builder()
.parseArgs(argList.stream().toArray(字符串[]:::新建))
.build();
尝试
{
散装装载机。装载(选项);
}
捕获(散装装载例外)
{
e、 printStackTrace();
}
...
代码还将使用CqlstableWriter类生成sstable文件。情况有所改善,使用sstableloader的整个过程更加简单,包括使用CqlstableWriter生成sstable的更简单方法 详情如下:
正如您在回答(和教程)中指出的,您可以在同一个节点上,只需提供备用IP地址即可。但是,有一个更简单的方法;您可以使用JMX->StorageService->bulkload()调用。非常适合测试和偶尔使用断开的链接。在此处添加任何其他缺失的位?@Turbo断开链接:(这与此类似,可能会有所帮助:-这正是为什么根据堆栈交换准则,指向答案的链接不是答案!sstableloader是否只加载部分数据?我的cluster1有3个节点,cluster2有3个节点。我需要将数据从cluster1复制到cluster2。我必须在每个cluster1节点或多个节点上运行sstableloader吗stableloader是否为我从其他主机获取了表的所有部分?
List<String> argList = new ArrayList<>();
argList.add("-v");
argList.add("-d");
argList.add(params.hosts);
argList.add("-f");
argList.add(params.cassYaml);
argList.add(params.fullpath);
LoaderOptions options = LoaderOptions.builder()
.parseArgs(argList.stream().toArray(String[]::new))
.build();
try
{
BulkLoader.load(options);
}
catch (BulkLoadException e)
{
e.printStackTrace();
}
...