I see the same behavior with smaller batch sizes. It appears to happen when starting Cassandra with the defaults on relatively large systems. Attached is a script I created to reproduce the problem. (usage: mutate.sh /path/to/apache-cassandra-0.7.3-bin.tar.gz) It extracts a stock cassandra distribution to a temp dir and starts it up, (single node) then creates a keyspace with a column family and does a batch mutate to insert 5000 columns.

When I run it on my laptop (Fedora 14, 64-bit, 4 cores, 8GB RAM) it flushes one Memtable with 5000 operations When I run it on a server (RHEL5, 64-bit, 16 cores, 96GB RAM) it flushes 100 Memtables with anywhere between 1 operation and 359 operations (35 bytes and 12499 bytes)

I'm guessing I can override the JVM memory parameters to avoid the frequent flushing on the server, but I haven't experimented with that yet. The only difference in the effective command line between the laptop and server is "-Xms3932M -Xmx3932M -Xmn400M" on the laptop and "-Xms48334M -Xmx48334M -Xmn1600M" on the server.



--
Erik Forkalsrud
Commission Junction


On 03/10/2011 09:18 AM, Ryan King wrote:
Why use such a large batch size?

-ryan

On Thu, Mar 10, 2011 at 6:31 AM, Desimpel, Ignace
<ignace.desim...@nuance.com>  wrote:

Hello,

I had a demo application with embedded cassandra version 0.6.x, inserting
about 120 K  row mutations in one call.

In version 0.6.x that usually took about 5 seconds, and I could repeat this
step adding each time the same amount of data.

Running on a single CPU computer, single hard disk, XP 32 bit OS, 1G memory

I tested this again on CentOS 64 bit OS, 6G memory, different settings of
memtable_throughput_in_mb and memtable_operations_in_millions.

Also tried version 0.7.3. Also the same behavior.



Now with version 0.7.2 the call returns with a timeout exception even using
a timeout of 120000 (2 minutes). I see the CPU time going to 100%, a lot of
disk writing ( giga bytes), a lot of log messages  about compacting,
flushing, commitlog, …



Below you can find some information using the nodetool at start of the batch
mutation and also after 14 minutes. The MutationStage is clearly showing how
slow the system handles the row mutations.



Attached : Cassandra.yaml with at end the description of my database
structure using yaml

Attached : log file with cassandra output.



Any idea what I could be doing wrong?



Regards,



Ignace Desimpel



ignace.desim...@nuance.com



At start of the insert (after inserting 124360 row mutations) I get the
following info from the nodetool :



C:\apache-cassandra-07.2\bin>nodetool --host ads.nuance.com info

Starting NodeTool

34035877798200531112672274220979640561

Gossip active    : true

Load             : 5.49 MB

Generation No    : 1299502115

Uptime (seconds) : 1152

Heap Memory (MB) : 179,84 / 1196,81



C:\apache-cassandra-07.2\bin>nodetool --host ads.nuance.com tpstats

Starting NodeTool

Pool Name                    Active   Pending      Completed

ReadStage                         0         0          40637

RequestResponseStage              0         0             30

MutationStage                    32    121679          72149

GossipStage                       0         0              0

AntiEntropyStage                  0         0              0

MigrationStage                    0         0              1

MemtablePostFlusher               0         0              6

StreamStage                       0         0              0

FlushWriter                       0         0              5

MiscStage                         0         0              0

FlushSorter                       0         0              0

InternalResponseStage             0         0              0

HintedHandoff                     0         0              0



After 14 minutes (timeout exception after 2 minutes : see log file) I get :



C:\apache-cassandra-07.2\bin>nodetool --host ads.nuance.com info

Starting NodeTool

34035877798200531112672274220979640561

Gossip active    : true

Load             : 10.31 MB

Generation No    : 1299502115

Uptime (seconds) : 2172

Heap Memory (MB) : 733,82 / 1196,81



C:\apache-cassandra-07.2\bin>nodetool --host ads.nuance.com tpstats

Starting NodeTool

Pool Name                    Active   Pending      Completed

ReadStage                         0         0          40646

RequestResponseStage              0         0             30

MutationStage                    32    103310          90526

GossipStage                       0         0              0

AntiEntropyStage                  0         0              0

MigrationStage                    0         0              1

MemtablePostFlusher               0         0             69

StreamStage                       0         0              0

FlushWriter                       0         0             68

FILEUTILS-DELETE-POOL             0         0             42

MiscStage                         0         0              0

FlushSorter                       0         0              0

InternalResponseStage             0         0              0

HintedHandoff                     0         0              0





Attachment: mutate.sh
Description: application/shellscript

Reply via email to