我将流数据插入到 2 个单独的键空间中,数据插入到第一个键空间中的 2 个列族(标准)和第二个键空间中的 3 个列族(2 个标准和 1 个计数器)中。
这些列族的数据插入率得到了很好的控制,并且在纯写入的情况下工作得很好[60% 的 CPU 利用率和大约 8-10 的 CPU 负载因子]。接下来,我尝试通过 Pycassa API 从这些列族中连续读取数据,同时写入并行发生,我注意到写入性能严重下降。
建议从 2 个键空间进行并行写入 + 读取的系统设置是什么?目前,数据目录位于单个物理驱动器上,每个节点上都有 RAID10。
内存:8GB
堆大小:4GB
四核 Intel Xeon 处理器 @3.00 GHz
并发写入 = 并发读取 = 16(在 cassandra.yaml 文件中)
数据模型
Keyspace1:我在一个宽列中插入带有时间戳 (T) 作为列名的时间序列数据,该列在一行中存储 24 小时的数据。
CF1:
Col1 | Col2 | Col3(DateType) | Col(UUIDType4) |
行键1
行键2
:
:
CF2(宽列系列):
RowKey1 (T1, V1) (T2, V3) (T4, V4) ......
RowKey2 (T1, V1) (T3, V3) .....
:
:
键空间2:
CF1:
Col1 | Col2 | Col3(DateType) | Col4(UUIDType) | ... Col10
行键1
行键2
:
:
CF2(宽列系列):
RowKey1 (T1, V1) (T2, V3) (T4, V4) ......
RowKey2 (T1, V1) (T3, V3) .....
:
:
CF3(反柱系列):
计算存储在 CF2 中的每个事件的发生次数。
数据从 Keyspace 1 和 2 连续读取,仅 CF2(宽列族)。重申一下,读取和写入是并行发生的。使用 multiget 查询的数据量从 1 个增加到 8 个行键,并且重复此过程。