cassandra - 如何查询 Cassandra 集群的元数据?

标签 cassandra hector astyanax

我们有一个创造性地命名为“bootstrap”的过程,它为环境(Dev1、Dev2、QA、...、PROD)中的给定软件版本设置我们的 Cassandra 集群。此 bootstrap 创建/更新键空间和列族以及在非生产中填充初始数据。

我们正在使用 Astyanax,但我们可以使用 Hector 进行引导。

鉴于另一个团队已决定每个环境都有自己的数据中心名称。
鉴于我希望当我们从两个数据中心扩展到更多数据中心时,它可以在产品中工作。
鉴于我们将使用 PropertyFileSnitch:

我如何询问 Cassandra 集群的布局? (没有炮轰 nodetool ring)

具体来说,我需要知道数据中心的名称,以便在使用 NetworkTopologyStrategy 时可以使用正确的策略选项设置创建或更新 key 空间。我们希望每个数据中心有 3 个副本。一些环境有一个,几个环境有两个,最终生产将有更多。

是否有 CQL 或 Thrift 调用可以为我提供有关集群布局的信息?

我查看了各种文档集中的几个目录,并用谷歌搜索了一下。我想在挖掘 nodetool 代码之前我会在这里问。

最佳答案

我不确定 Hector 或 Astyanax 如何公开这一点,但基本的 Thrift 方法 describeRing(keyspace)应该给你你正在寻找的东西。它包含的部分信息是 EndpointDetails看起来像这样的结构:

endpoint_details=[EndpointDetails(datacenter='datacenter1', host='127.0.0.1', rack='rack1')]

连同该方法的其余结果,您应该能够找出集群中每个节点的 token 、DC、机架等。

由于您使用的是 Java 客户端,因此您还可以使用一些 JMX 方法(nodetool 使用的方法)来描述集群的更多选择部分。例如,您可以查看 snitch mbean ( "org.apache.cassandra.db:type=EndpointSnitchInfo" ),特别是 getDatacenter(ip)getRack(ip)方法。

关于cassandra - 如何查询 Cassandra 集群的元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12946170/

相关文章:

cql decimal对应的solr数据类型

Cassandra (Cassandra)中的时间戳比较

cassandra - 用INSERT覆盖cassandra中的行,会导致墓碑吗?

java - 高效地向cassandra插入大量数据

python - dcos cassandra子命令错误

java - Hector 或 CQL,我应该使用哪个

java - 使用 Hector 向/从 Cassandra 存储和检索 float[]

ssl - Astyanax 和 Cassandra 之间的安全通信

java - DefaultEntityManager 不允许我使用 <UUID, String> 的 ColumnFamily

cassandra - Cassandra 集群中出现意外的 UnavailableException