0

我有两个节点 cassandra 环。在其中一台服务器上,我正在执行一些批量写入操作 - 扫描文件夹以查找文件列表并将列表写入本地 Cassandra。那里大约有 500,000 个文件。我在每个突变中放入 250 个值。

问题:我在加载过程中收到mphaeHUnavailableException。此外,我注意到另一个节点上有奇怪的事情。负载显着增加:

写操作前:

me@10.1.18.55:~$ nodetool -h localhost ring
Address         DC          Rack        Status State   Load            Owns                Token
                                                                              85070591730234615865843651857942052864
10.1.18.51      datacenter1 rack1       Up     Normal  221.3 KB        50.00%              0
10.1.18.55      datacenter1 rack1       Up     Normal  185.65 KB       50.00%              85070591730234615865843651857942052864

写操作后

me@10.1.18.55:~$ nodetool -h localhost ring
Note: Ownership information does not include topology, please specify a keyspace. 
Address         DC          Rack        Status State   Load            Owns                Token                                       
                                                                                           85070591730234615865843651857942052864      
10.1.18.51      datacenter1 rack1       Up     Normal  124.44 MB       50.00%              0                                           
10.1.18.55      datacenter1 rack1       Up     Normal  303.39 KB       50.00%              85070591730234615865843651857942052864      

它会以某种方式使我的负载崩溃吗?

Cassandra 版本 1.1.0,一致性类型 Quorum。

这是mutator实现位:

    mutator.addInsertion("items", columnFamily, HFactory.createColumn(
        i.getAndIncrement(), xml, LongSerializer.get(),
        StringSerializer.get()));

要写入一个大“项目”行的数据接缝......

4

2 回答 2

1

如果您将事物建模为 One Big Row,请不要这样做;行是分区和复制的单位,因此您需要(许多)比环中的节点更多的行,以获得良好的负载分布。

UnavailableException 可能确实意味着您正在使集群超载。你可以限制你的写入——使用“nodetool tpstats”来查看它落后了多远——或者切换到 Dalius 链接的批量加载程序,它旨在处理这种情况。

于 2012-06-26T17:30:27.177 回答
0

请确保行分区的大小不应超过 100Mb。您可以使用 cfstats 进行检查。

对于列族,以下统计数据很重要,值应小于 100Mb。如果超过限制,将导致压缩开销,节点将离线。

压缩分区最大字节数:[值] 压缩分区平均字节数:[值]

于 2014-12-21T16:31:50.490 回答