问题标签 [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.
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 的结果
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 是专门为处理按需水平扩展而设计的。非常感谢任何帮助。
datastax-enterprise - Cassandra中的通用VS特定模型?
这篇文章很长,让我们从一些背景开始:天气数据在我们的架构中起着核心作用。一个天气数据主要由五个值组成:
- 温度
- 雨
- 全球辐射
- 风(方向、速度)
- 相对湿度
但是我们也可以有更多的自定义值。
我们的特点是:
缺失值:所有这五个值并不总是可以从一个气象站获得。有时我们需要从最近的气象站获取缺失值(例如:全球辐射)
采样率:对于一个给定的气象站,五个值之间的采样率可以不同。
虚拟站:我们也有特殊的“虚拟”气象站,由分离的气象传感器(来自真实气象站)组成。
在所有情况下,在采集过程结束时,对于气象站(真实或虚拟)中的每个事件,我们都需要根据这五个值计算一些更高级别的指数。这五个值或更高级别的指数中的一些每天汇总。
我们计划使用 Spark 进行数据处理。
这三个模型中哪一个是最相关的,并且不会剥夺我们对 Cassandra 的好处?
如何管理传感器和weather_stations(缺失数据和虚拟站)之间的关系?
传感器模型 - 所有数据的一张表
测量模型 - 按数据类型的一张表
对于所有类型的测量都是一样的。然后从这些表中,我们需要处理数据以聚合所有内容,填充缺失值并以较低的采样率重复值。
气象站模型 - 一张包含所有数据的表格
然后我们用虚拟站、缺失值和具有较低采样率的重复值填充一个weather_data_processed 表。
datastax-enterprise - cqlsh 5.0.1 中的 cassandra-stress 错误 卡桑德拉 2.1.12.1046 | DSE 4.8.4
我安装了datastax enterprise,版本如下,当我运行压力测试时,出现以下错误:
为什么会出现以下错误:
bash - DSE 的 Wheezy 自定义运行脚本
尝试在 Google Cloud Platform 上配置 Datastax Enterprise(我的第一个 Cassandra 集群)时,我一直收到错误消息,特别是在遵循此处的教程时: DataStax Enterprise Deployment Guide for Google Compute Engine - Manual
ssh
进入新机器称为customizer
当我复制并粘贴脚本,或完全重新键入脚本pico
或vi
(在“创建自定义操作系统映像”下找到的脚本)并尝试运行它时, ./customizer.sh: line 21: syntax error near unexpected token 'newline'
由于以下行而出现错误:
知道这条线应该是什么样子才不会出现这个错误吗?当我尝试删除终端时<
,>
终端被挂断,我必须按 ctrl+c 才能退出。
这是完整的脚本:
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个节点
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
:
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”调用的包装器。
提前感谢您的帮助。
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 重复这些步骤时,我遇到了同样的麻烦。有什么解决方案可以克服它,或者任何其他更清洁的方法?
谢谢!
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)
我也尝试了以下代码,但得到了同样的错误。