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
DCE Cassandra 3.9在加入现有集群期间二级索引创建缓慢_Cassandra_Dce - Fatal编程技术网

DCE Cassandra 3.9在加入现有集群期间二级索引创建缓慢

DCE Cassandra 3.9在加入现有集群期间二级索引创建缓慢,cassandra,dce,Cassandra,Dce,我们有32个节点的cassandra群集,平均节点大小约为1TB。节点配置1xIntel Xeon E3-1271v3,32GB ram,2x3TB硬盘。 我们有一个数据库,其中有一些小表和一个大表,其中包含大约90-95%的集群大小 我试图向这个集群添加额外的节点,但突然发现,向现有集群添加一个节点需要13-14天才能加入集群。构建二级索引占用了大部分时间,我看到所有compactor线程占用了所有可用的CPU 我已将cassandra配置更改为扩展限制: 并发压缩程序:4 每秒压缩量:0

我们有32个节点的cassandra群集,平均节点大小约为1TB。节点配置1xIntel Xeon E3-1271v3,32GB ram,2x3TB硬盘。 我们有一个数据库,其中有一些小表和一个大表,其中包含大约90-95%的集群大小

我试图向这个集群添加额外的节点,但突然发现,向现有集群添加一个节点需要13-14天才能加入集群。构建二级索引占用了大部分时间,我看到所有compactor线程占用了所有可用的CPU

我已将cassandra配置更改为扩展限制:

  • 并发压缩程序:4
  • 每秒压缩量:0

大约1年前,我们还向该集群添加了新节点,并将其从16个节点扩展到32个节点,在集群扩展之前,平均节点大小为1TB。卡桑德拉版本是2.1。一个节点的连接时间为1-1.5天

那么,问题是我们如何加快这一进程?我们错过什么了吗


谢谢。

这张有点长,所以我无法对它发表评论。。。对不起

我知道这听起来有点奇怪,尤其是在电影后期 你的项目,但问题是索引的情况不会得到 随着时间的推移,情况会有所好转。我强烈建议你自己动手做 表,而不仅仅是将索引放在以下内容上。取决于 您可以使用“反向索引”访问数据的频率

基本上,这里的每个索引都使您能够“搜索”基本索引 实体通过某种条件找到它们。大多数情况是 实际上很窄,这是个好消息。但问题是索引 将变得庞大(已经如此),特别是在文档和作者方面。但我想 医生的问题更大

你应该考虑为这个做单独的表格。每个索引 您将在集群中的每个节点上创建一个 您将拥有比实际需要多得多的数据,因为 每个节点的引擎盖数据都会相乘。将复制因子添加到此 系统占用了大量空间,而您甚至都没有意识到

加入节点的问题在于,当它们接收到新数据时,所有节点 群集中的数据需要重建。。。对于每个节点 在集群中,这会花费您很多时间。所以基本上你是放松的 cassandra“轻松加入节点”的所有好处

现在,您可能认为在编写数据时,空间会成为问题 进入非规范化的新模式

如果空间是个问题,那么可以使用一种称为反向索引的技术 您只需将信息的id放入搜索表中 然后在主表中进行第二次加载。我在某个项目上用过这个 空间是个问题,但既然你把所有的主要内容都编入了索引 空间可能不是问题,因为您已经使用了很多 比你想象的要多。(我敢打赌,您可能也会大大节省空间)

无论如何,所有索引都应该成为表。。。如果一致性是个问题, 使用批处理(不要使用物化视图,因为可能会丢失数据)

我诚实的建议是远离索引。我知道 这是地狱重构这个加上它很难得到时间重构:(但是
我认为这应该是可以管理的。

这一条有点长,所以我不能发表评论……对不起

我知道这听起来有点奇怪,尤其是在电影后期 你的项目,但问题是索引的情况不会得到 随着时间的推移,情况会有所好转。我强烈建议您开始自己制作 表,而不仅仅是将索引放在以下内容上 您可以使用“反向索引”访问数据的频率

基本上,这里的每个索引都使您能够“搜索”基本索引 实体通过某些条件找到它们。大多数条件是 实际上很窄,这是个好消息。但问题是索引 将变得巨大(已经如此),特别是在文档和作者上。但我猜 医生的问题更大

<>你应该考虑为这个做单独的表格。 您将在集群中的每个节点上创建一个 您将拥有比实际需要多得多的数据,因为 每个节点的引擎罩数据都会成倍增加。将复制因子添加到此 系统占用了大量空间,而您甚至都没有意识到

加入节点的问题在于,当它们接收到新数据时,所有节点 集群中的数据需要为每个节点重建 在集群中,这会花费你很多时间。所以基本上你会放松 cassandra“轻松加入节点”的所有好处

现在,您可能认为在编写数据时,空间会成为问题 进入非规范化的新模式

如果空间是个问题,那么可以使用一种称为反向索引的技术 您只需将信息的id放入搜索表中 然后在主表中进行第二次加载。我在某个项目中使用了它 空间是个问题,但既然你把所有的主要内容都编入了索引 空间可能不是问题,因为您已经使用了很多 比你想象的要多。(我打赌你可能也会在空间上节省很多)

无论如何,所有索引都应该成为表…如果一致性有问题, 使用批处理(不要使用物化视图,因为可能会丢失数据)

我诚实的建议是你远离索引。我知道 这是地狱重构这个加上它很难得到时间重构:(但是
我认为它应该是可管理的。

你能想出一个没有二级索引的更好的模式吗?非规范化可能会有所帮助。@DineMartine基本上是对的,只是出于好奇。你能为这个问题添加数据模式和访问查询吗?有足够的材料和
CREATE INDEX links_by_author_url_idx ON keyspace.links_by_author (url);


CREATE INDEX docs_url_idx ON keyspace.docs (url);


CREATE INDEX om_master_object_id_idx ON keyspace.om (master_object_id);


CREATE INDEX actions_pday_idx ON keyspace.actions (pday);


CREATE INDEX authors_yauid_idx ON keyspace.authors (yauid);

CREATE INDEX authors_login_lr_idx ON keyspace.authors (login_lr);

CREATE INDEX authors_login_idx ON keyspace.authors (login);

CREATE INDEX authors_email_idx ON keyspace.authors (email);

CREATE INDEX authors_name_idx ON keyspace.authors (name);