问题标签 [datastax-startup]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3287 浏览

cassandra - 具有空 ID 的集群中的 Cassandra 主机

注意:我们在 Cassandra 2.1.12.1047 (DSE 4.8.4) 集群中看到了这个问题,该集群有 6 个节点,跨 3 个区域(每个区域 2 个)。

最近尝试更新集群上的模式,我们发现更新失败。我们怀疑集群中的一个节点不接受更改。

当检查system.peers我们在 us-east-1 中的一台服务器的表时,发现它有异常,它似乎有一个完整的主机条目,但并不存在。

由于该主机不存在,我尝试使用删除它nodetool removenode但失败了error: Cannot remove self -- StackTrace -- java.lang.UnsupportedOperationException: Cannot remove self

我们知道,.187由于 EC2 问题,服务器在几周前突然终止。

我们多次尝试使服务器健康,但最后只是简单地终止了在 中报告此.187主机的服务器,从其他服务器之一system.peers运行 a nodetool removenode,然后使新服务器联机。

新服务器上线,大约一个小时后,它似乎赶上了将其与其他服务器内联所需的积压活动(纯粹基于 CPU 监控的假设)。

但是,现在事情变得非常奇怪,因为当我们从集群中的任何服务器运行 a 时,表.187中报告的system.peers内容就会出现,而不是我们刚刚上线的新服务器。nodetool status

由于我不知道如何删除没有主机 ID 的节点,所以我很困惑。

我能做些什么来摆脱这个流氓节点?

注意:这是 describecluster 的结果

0 投票
2 回答
927 浏览

cassandra - 使用 Cassandra 进行 LOCAL_ONE 和意外数据复制

供参考。我们正在使用 Cassandra 2.1.12.1047 | 运行此测试 DSE 4.8.4

我们在 Cassandra 中有一个简单的表,其中包含 5,000 行数据。前段时间,作为预防措施,我们在每个 Cassandra 实例上添加了监控以确保它有 5,000 行数据,因为我们的复制因子强制执行此操作,即我们在每个区域有 2 个副本,我们的开发集群中总共有 6 台服务器。

CREATE KEYSPACE example WITH replication = {'class': 'NetworkTopologyStrategy', 'ap-southeast-1-A': '2', 'eu-west-1-A': '2', 'us-east-1-A': '2'} AND durable_writes = true;

我们最近强行终止了一台服务器以模拟故障,并让一台新服务器上线,看看会发生什么。我们还删除了旧节点使用nodetool removenode,以便在每个区域中,我们希望所有数据都存在于每个服务器上。

一旦新服务器上线,它就会加入集群,并且似乎开始复制数据。我们假设因为它处于引导模式,它将负责确保从集群中获取所需的数据。大约一个小时后 CPU 终于下降了,我们假设复制已完成。

但是,我们有意LOCAL_ONE在每台服务器上使用查询的监视器报告说所有服务器都有 5,000 行,而上线的新服务器卡住了大约 2,600 行。我们假设它可能仍在复制,所以我们把它留了一段时间,但它保持在那个数字。

所以我们运行 nodetool status 来检查并得到以下信息:

因此,如果服务器报告它拥有 100% 的数据,为什么LOCAL_ONE查询只给我们大约一半的数据?

当我运行LOCAL_QUORUM查询时,它返回 5,000 行,从那时起,即使LOCAL_ONE查询也返回 5,000。

虽然LOCAL_QUORUM在这种情况下解决了问题,但我们将来可能需要执行其他类型的查询,假设每个服务器 a)拥有它应该拥有的数据,b)知道当它没有数据时如何满足查询,即它知道数据位于环上的其他位置。

24 小时后进一步更新 - 问题更严重

因此,在没有关于这个问题的任何反馈的情况下,我通过添加更多节点在集群上进行了实验。根据https://docs.datastax.com/en/cassandra/1.2/cassandra/operations/ops_add_node_to_cluster_t.html,我已按照建议将节点添加到集群的所有步骤,实际上是添加容量。我相信 Cassandra 的前提是,当您添加节点时,集群有责任重新平衡数据,并在此期间从环上的位置获取数据,如果它不在它应该在的位置。

不幸的是,事实并非如此。这是我的新戒指:

正如您将看到的,我将环的大小翻了一番,并且有效所有权约为每台服务器的 50%(我的复制因子是每个区域 2 个副本)。但是,令人遗憾的是,您可以看到一些服务器上完全没有负载(它们是新的),而另一些服务器上的负载过大(它们很旧,显然没有发生数据分布)。

现在这本身并不令人担心,因为我相信 Cassandra 的强大功能及其最终将数据放在正确位置的能力。让我非常担心的是,我的表正好有 5,000 行,现在我的三个区域中的任何一个都不再有 5,000 行。

这么严重,这里发生了什么?让我们回顾一下:

  • 我的复制因子是这样的'ap-southeast-1-A': '2', 'eu-west-1-A': '2', 'us-east-1-A': '2',所以每个区域都应该能够完全满足查询。
  • 引入新实例不应导致我丢失数据,但显然我们甚至使用 LOCAL_QUORUM
  • 每个地区对数据都有不同的看法,但我没有介绍任何新数据,只有新的服务器会自动引导。

于是我想,为什么不QUORUM跨整个多区域集群进行查询。不幸的是,这完全失败了:

然后我转身TRACING ON;,也失败了。我可以在日志中看到以下内容:

这发生在我运行查询的每台服务器上。

检查集群,似乎一切都在同步

进一步更新 1 小时后

有人建议,也许这只是因为范围查询没有按预期工作。因此,我编写了一个简单的脚本,分别查询 5k 行中的每一行(它们的 ID 范围为 1->5,000)。不幸的是,结果正如我所担心的那样,我丢失了数据。我已经用LOCAL_ONE,LOCAL_QUORUM和 event尝试过这个QUORUM

从上面可以看出,这意味着我有大约 1.5% 的数据不再可用。

所以我很难过。我真的需要一些建议,因为我确实认为 Cassandra 是专门为处理按需水平扩展而设计的。非常感谢任何帮助。

0 投票
1 回答
127 浏览

datastax-enterprise - Cassandra中的通用VS特定模型?

这篇文章很长,让我们从一些背景开始:天气数据在我们的架构中起着核心作用。一个天气数据主要由五个值组成:

  • 温度
  • 全球辐射
  • 风(方向、速度)
  • 相对湿度

但是我们也可以有更多的自定义值。

我们的特点是:

缺失值:所有这五个值并不总是可以从一个气象站获得。有时我们需要从最近的气象站获取缺失值(例如:全球辐射)

采样率:对于一个给定的气象站,五个值之间的采样率可以不同。

虚拟站:我们也有特殊的“虚拟”气象站,由分离的气象传感器(来自真实气象站)组成。

在所有情况下,在采集过程结束时,对于气象站(真实或虚拟)中的每个事件,我们都需要根据这五个值计算一些更高级别的指数。这五个值或更高级别的指数中的一些每天汇总。

我们计划使用 Spark 进行数据处理。

这三个模型中哪一个是最相关的,并且不会剥夺我们对 Cassandra 的好处?

如何管理传感器和weather_stations(缺失数据和虚拟站)之间的关系?

传感器模型 - 所有数据的一张表

测量模型 - 按数据类型的一张表

对于所有类型的测量都是一样的。然后从这些表中,我们需要处理数据以聚合所有内容,填充缺失值并以较低的采样率重复值。

气象站模型 - 一张包含所有数据的表格

然后我们用虚拟站、缺失值和具有较低采样率的重复值填充一个weather_data_processed 表。

0 投票
0 回答
124 浏览

datastax-enterprise - cqlsh 5.0.1 中的 cassandra-stress 错误 卡桑德拉 2.1.12.1046 | DSE 4.8.4

我安装了datastax enterprise,版本如下,当我运行压力测试时,出现以下错误:

为什么会出现以下错误:

0 投票
2 回答
134 浏览

bash - DSE 的 Wheezy 自定义运行脚本

尝试在 Google Cloud Platform 上配置 Datastax Enterprise(我的第一个 Cassandra 集群)时,我一直收到错误消息,特别是在遵循此处的教程时: DataStax Enterprise Deployment Guide for Google Compute Engine - Manual

ssh进入新机器称为customizer

当我复制并粘贴脚本,或完全重新键入脚本picovi(在“创建自定义操作系统映像”下找到的脚本)并尝试运行它时, ./customizer.sh: line 21: syntax error near unexpected token 'newline'由于以下行而出现错误:

知道这条线应该是什么样子才不会出现这个错误吗?当我尝试删除终端时<>终端被挂断,我必须按 ctrl+c 才能退出。

这是完整的脚本:

0 投票
1 回答
1284 浏览

datastax-enterprise - 运行 cassandra-stress get 没有足够的副本可用于在 datastax-enterprise 的 3 个节点中以一致性 LOCAL_ONE 进行查询

在datastax-enterprise cqlsh 5.0.1 | 卡桑德拉 2.1.12.1046 | DSE 4.8.4 | CQL 规范 3.2.1 | 本机协议 v3

运行 cassandra-stress 时,出现以下错误:

最后显示错误如下:

有什么问题吗?命令是:cassandra-stress write n=19000000 -rate threads=4 -node 192.168.35.150

3个节点

0 投票
2 回答
536 浏览

datastax-enterprise - OpsCenter 不显示可用存储

我创建了一个使用 OpsCenter 管理的新 DataStax Enterprise Cluster。使用的所有版本都是包存储库中可用的最新版本。代理已安装,一切正常,包括 RAM 使用情况、CPU 负载等。我已毫无问题地向该集群添加了 90 GB 以上,主机可以支持更多。

据我所知,这显然是 OpsCenter / DataStax-Agent 问题。我在 OpsCenter 或 DSA 的日志文件中都没有看到相关行。同一 OpsCenter 实例中的其他集群可以正常工作。

关于可能是什么问题的任何想法?

存储容量不工作

更新 #1:主机中 的df(1)输出是:

在另一个主机中是:

输出https://<host>:<port>/<Cluster-Name>/storage-capacity

0 投票
1 回答
76 浏览

datastax-enterprise - DataStax OpsCenter 云配置连接超时,获取 AWS VPC 和可用区

首次配置 OpsCenter 时以及单击“添加数据中心”后,无法使用 AWS 安全凭证获取 VPC 和可用区。我已确保端口 8888 已打开,AWS 凭证工作(使用 CLI)并且超时设置为 10 分钟。尽管如此,它还是失败了 ErrorNo 110: Connection timeout。

我需要做其他事情才能使它起作用吗?可能是分配给 opscenter 主机的 IAM 角色?我所有的节点和 opscenter 都在 EC2 中运行。

该日志清楚地表明了从 AWS 提取信息的一些问题,但它似乎是“aws ec2 describe”调用的包装器。

提前感谢您的帮助。

0 投票
1 回答
1150 浏览

apache-spark - EMR LinkageError 上的 Spark + Cassandra

我在 EMR 4.4.0 上部署了 Spark 1.6 我正在连接到部署在 EC2 上的 datastax cassandra 2.2.5。

该连接使用 spark-connector 1.4.2_s2.10 将数据保存到 cassandra 中(因为它有 guava 14)但是使用 1.4.2 版本的连接器从 cassandra 读取数据失败。

正确的组合建议使用 1.5.x,因此我开始使用 1.5.0。首先我遇到了番石榴问题,我使用 userClasspathFirst 解决方案修复了它。

现在我克服了 Guava 16 错误,但是由于我使用的是 userClassPathFirst,我面临着另一个冲突,我没有任何方法可以解决它。

当我使用 Java 代码而不是 spark-shell 重复这些步骤时,我遇到了同样的麻烦。有什么解决方案可以克服它,或者任何其他更清洁的方法?

谢谢!

0 投票
2 回答
855 浏览

java - 如何找到使用 Cassandra 中止 Spark 作业的根本原因(导致 ClassCastException - ShuffleMapTask to Task)?

我正在尝试使用 Spark 从 Cassandra 读取数据。

任务失败并出现以下错误。我无法理解为什么调用 ShuffleMaptask 以及为什么将其转换为 Task 是一个问题。

我正在使用 EMR 4.4、Spark 1.6、Cassandra 2.2(Datastax 社区)和 spark-cassandra-connector-java_2.10 1.6.0-M1(也尝试过 1.5.0)

我也尝试了以下代码,但得到了同样的错误。