Mat*_*ieu 7 cassandra google-cloud-platform kubernetes google-kubernetes-engine cassandra-3.0
我们在Google Cloud Kubernetes中有一个带有3个pod的Cassandra集群.我们的Cassandra版本是3.9,我们正在使用Google图像.
当我尝试从表格创建物化视图时出现问题.
表的架构如下:
CREATE TABLE environmental_data (
block_id int,
timestamp timestamp,
device_id int,
sensor_id int,
.
.
.
PRIMARY KEY (block_id, timestamp, device_id, sensor_id)
Run Code Online (Sandbox Code Playgroud)
我想用device_id作为集群密钥创建一个视图,我试着这样做:
CREATE MATERIALIZED VIEW environmental_data_by_device AS
SELECT block_id, timestamp, device_id, sensor_id,... FROM environmental_data
WHERE block_id is not null
and timestamp is not null
and device_id is not null
and sensor_id is not null
PRIMARY KEY ((device_id), timestamp, sensor_id, block_id)
WITH CLUSTERING ORDER BY (timestamp DESC);
Run Code Online (Sandbox Code Playgroud)
在本地只有非常少量的数据,一切都很顺利.但是在拥有8000万行的生产中,有2个播放器崩溃,而Cassandra则在这个错误上出现了问题:
尝试更新MaterializedView时捕获到未知异常!environmental_data
java.lang.IllegalArgumentException:对于XXXX的最大大小,XXXX字节的突变太大
还有很多 java.lang.OutOfMemoryError: Java heap space
我该怎么做才能确保下一次尝试成功?决定放弃生产Cassandra第二次是不可想象的.
我已经成功创建了一个基于表的视图库,但它并没有那么大.
Gal*_*one -1
由于我对 Cassandra 的了解并不深入,因此我可以从基础设施的角度给您一些提示。如果我负责基础设施,我会检查您是否以正确的方式设置了部署,以确保您有很多java.lang.OutOfMemoryError部署:
这通常不会突出显示,但可能是一个问题:如果您有内存请求3 nodes having 3 GB of RAM并且2 pods consuming 2 GB没有内存请求,则可能会发生它们被安排在同一节点上,在一段时间后被杀死。设置内存请求一切顺利。
此外,您可以在这里找到一篇有趣的文章,其中还涉及Kubernetes 中基于 Java 堆内存的自动缩放。
您可以通过以下命令检查 pod 消耗了多少内存和 CPU:
$ kubectl top pods --namespace=xxxx
Run Code Online (Sandbox Code Playgroud)
如果节点受到影响
$ kubectl top nodes
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
334 次 |
| 最近记录: |