Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从不在Cassandra群集环中的节点使用sstableloader_Cassandra - Fatal编程技术网

如何从不在Cassandra群集环中的节点使用sstableloader

如何从不在Cassandra群集环中的节点使用sstableloader,cassandra,Cassandra,我们在linux上的生产cassandra集群上使用apache cassandra 1.1.9版本。我想使用sstableloader上传一些数据。 我能够为一个小数据生成sstables,然后尝试使用sstableloader从另一台机器(在同一网络中,但不在Cassandra集群环中)将这些sstables上载到Cassandra集群,但出现以下错误 “无法检索终结点范围:” 我不明白为什么会出现这种错误。 我正在运行sstableloader的这台计算机上安装了相同的cassandra。

我们在linux上的生产cassandra集群上使用apache cassandra 1.1.9版本。我想使用sstableloader上传一些数据。 我能够为一个小数据生成sstables,然后尝试使用sstableloader从另一台机器(在同一网络中,但不在Cassandra集群环中)将这些sstables上载到Cassandra集群,但出现以下错误

“无法检索终结点范围:”

我不明白为什么会出现这种错误。 我正在运行sstableloader的这台计算机上安装了相同的cassandra。我将cassandra.yaml从生产cassandra复制到主机的apache cassandra/conf文件夹中

我的sstables位于以下目录结构中:- /path/to/keyspace dir/keyspace/*.db

下面是我正在运行的SStable命令

./sstableloader-d-i,/home/Data/Keyspace/ 无法检索终结点范围:

如果我在这里做错了,请给出建议。

找到了解决方案。 sstableloader命令需要从包含Keyspace子目录的目录中执行。 例如 如果/home/Data是目录结构,则在该结构下有子目录keyspace/ColumnFamily/ 然后从/home/Data/directory执行如下命令


~/apache cassandra/bin/sstableloader-d/keyspace/ColumnFamily

这有点旧,但我最近遇到了“无法检索端点范围”错误,其根本原因不同

在我们的例子中,数据从生产系统导出,并加载到新的开发实例。开发实例的设置不正确,因此sstables是使用dse 4.7生成的,而正在运行的sstableloader是dse 4.6


请注意,可以将表从4.6摄取到dse 4.7中进行调试等,但必须先运行nodetool upgradesstables。这不是这里发生的事情。

运行上述命令后,我们是否需要运行任何其他节点工具命令,如repair或clean?而且,如果我有一个SSTable,我试图使用上面的命令将这些数据注入到cassandra 10节点集群中,副本为3,那么它会将所有数据加载到整个集群中。这意味着相应的数据是否将移动到相应的节点?因为我只在一个节点上运行您的命令,所以我有点困惑数据是否会移动到相应的节点?您不一定需要运行nodetool repair/clean命令,而且这将是一个耗时的过程。除非您发现集群中存在一些问题,否则您应该不会有问题。回答第二个问题—如果您将复制设置为密钥空间级别,它会将数据加载到集群中的副本。据我所知,如果您在任何特定节点上加载数据,Cassandra将负责复制数据。谢谢您的评论。对于第二个问题,我得到了部分答案(对于复制品,我从你们的评论中得到了清晰的理解)。我也问了分区的问题,例如,SSTable包含100行,分区键从1到100,而运行SSTableLoader时,100分区会在集群上被拆分吗?这意味着我使用100行的分区器创建了SSTable,在运行SSTableloader命令后,行1是否会移动到相应的节点A,行2是否会移动到节点B,依此类推?我上述问题的原因是,因为我在一个具有单个IP地址的节点中运行SSTABLEADER命令,命令为-d(但实际上我有25个节点),所以我有点困惑是否只负责我正在运行的节点的数据将被移动。但我的假设是,我的命令有一个IP地址,但它将从单个节点获取所有对等信息,并将数据移动到相关节点。我的假设是否正确?我相信基于分区配置在您的集群中,Cassandra应该自动负责跨多个节点分发数据。您可以尝试使用OpsCenter之类的工具监视集群,以查看数据是否得到相应的分发。