我在一个宽列中插入带有时间戳 (T) 的时间序列数据作为列名,该列在一行中存储 24 小时的数据。流数据从数据生成器(4 个实例,每个实例有 256 个线程)写入,将数据并行插入到多行中。
CF2(宽列系列):
RowKey1 (T1, V1) (T2, V3) (T4, V4) ......
RowKey2 (T1, V1) (T3, V3) .....
:
:
我现在正在尝试使用 multiget 从 Cassandra 读取这些数据。客户端是用python编写的,使用pycassa。
当我为单个行键查询 24 小时价值数据时,会返回超过 200 万个数据点。在使用 multiget 并行 4 个行键时,我收到以下错误:
文件“c:\Python27-64bit\lib\site-packages\pycassa-1.9.1-py2.7.egg\pycassa\columnfamily.py”,第 772 行,在 multiget packed_keys[offset:offset + buffer_size], cp, sp,一致性)
文件“c:\Python27-64bit\lib\site-packages\pycassa-1.9.1-py2.7.egg\pycassa\pool.py”,第 576 行,执行 return getattr(conn, f)(*args, **kwargs)
文件“c:\Python27-64bit\lib\site-packages\pycassa-1.9.1-py2.7.egg\pycassa\pool.py”,第 153 行,在 new_f 返回 new_f(self, *args, **kwargs )
文件“c:\Python27-64bit\lib\site-packages\pycassa-1.9.1-py2.7.egg\pycassa\pool.py”,第 153 行,在 new_f 返回 new_f(self, *args, **kwargs )
文件“c:\Python27-64bit\lib\site-packages\pycassa-1.9.1-py2.7.egg\pycassa\pool.py”,第 153 行,在 new_f 返回 new_f(self, *args, **kwargs ) 文件“c:\Python27-64bit\lib\site-packages\pycassa-1.9.1-py2.7.egg\pycassa\pool.py”,第 153 行,在 new_f 返回 new_f(self, *args, **夸格斯)
文件“c:\Python27-64bit\lib\site-packages\pycassa-1.9.1-py2.7.egg\pycassa\pool.py”,第 153 行,在 new_f 返回 new_f(self, *args, **kwargs )
文件“c:\Python27-64bit\lib\site-packages\pycassa-1.9.1-py2.7.egg\pycassa\pool.py”,第 148 行,在 new_f (self._retry_count, exc. class ._ name _, exc)) pycassa.pool.MaximumRetryException:重试 6 次。上次失败超时:超时
但是,以前我能够并行获取 256 个行键的数据。现在,我增加了数据的密度(即在一个时间范围内没有 .of 数据点)并且查询因这个问题而失败。
我们在 multiget 中调整了 buffer_size,发现 8 是最佳选择。
堆大小:6GB
内存:16GB
读取一致性:一个
集群:5节点
CPU 利用率低于 20%。此外,我没有看到 OpsCenter 报告的读取吞吐量、读取延迟、磁盘吞吐量和磁盘延迟有任何异常模式。
我还尝试将 Cassandra.yaml 中的 read_request_timeout_in_ms 增加到 60000 但徒劳无功。关于我们为什么会收到此异常的任何其他指示?我希望查询花费大量时间来检索结果,但仍然不会失败。
谢谢,
VS