如何从不在Cassandra群集环中的节点使用sstableloader
我们在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执行如下命令如何从不在Cassandra群集环中的节点使用sstableloader,cassandra,Cassandra,我们在linux上的生产cassandra集群上使用apache cassandra 1.1.9版本。我想使用sstableloader上传一些数据。 我能够为一个小数据生成sstables,然后尝试使用sstableloader从另一台机器(在同一网络中,但不在Cassandra集群环中)将这些sstables上载到Cassandra集群,但出现以下错误 “无法检索终结点范围:” 我不明白为什么会出现这种错误。 我正在运行sstableloader的这台计算机上安装了相同的cassandra。
~/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之类的工具监视集群,以查看数据是否得到相应的分发。