http://wiki.apache.org/cassandra/CassandraLimitations

"Any request for a subcolumn deserializes _all_ the subcolumns in that
supercolumn, so you want to avoid a data model that requires large
numbers of subcolumns."

On Fri, Jan 28, 2011 at 7:40 PM, Rajat Chopra <rcho...@makara.com> wrote:
> Thanks Jonathan.
> But the read fails in all cases, even when start_column/end_column span is 10 
> columns here, and even when column_count is set appropriately. Or did I miss 
> what you said?
> The trace seems to suggest an entire super_column is being deserialized.
>
> Rajat
>
> -----Original Message-----
> From: Jonathan Ellis [mailto:jbel...@gmail.com]
> Sent: Friday, January 28, 2011 5:32 PM
> To: user@cassandra.apache.org
> Subject: Re: get_slice OOM on large row
>
> Requesting too much data in a single request is user error.  That is
> why you have start columns/rows, so you can page through a large set.
>
> On Fri, Jan 28, 2011 at 6:48 PM, Rajat Chopra <rcho...@makara.com> wrote:
>> Hi!
>>
>>    Trying to test the 0.7 release with some offbeat settings to check the
>> behavior.
>>
>>
>>
>> -          Single node cluster
>>
>> -          Key_cache_size - default
>>
>> -          Row_cache_size - default
>>
>> -          Min/max compaction threshold - 0 (so this is disabled)
>>
>> -          Disk_access_mode : standard
>>
>> -          Memtable_throughput_in_mb : 2 (yes two mb only)
>>
>>
>>
>> Basically I wanted to run the process with least amount of memory usage.
>> Without much hassle (probably because compaction was disabled) I put 400k
>> columns in a single row of a super column of a cf. Each column value being
>> about 20kb. So, I have about 8G of data.
>>
>>
>>
>> Now the issue is that I run into OOM on any kind of read that I do, even
>> with -Xmx2G. Using pycassa as the high level client.
>>
>> The trace is pasted below.
>>
>>
>>
>> Is it because the entire row is loaded even if some keys are asked for?
>>
>> Please help for my better understanding of limitations/usage.
>>
>>
>>
>> Thanks,
>>
>> Rajat
>>
>>
>>
>>
>>
>> Heap dump file created [2147332020 bytes in 16.621 secs] ERROR 16:38:06,420
>> Fatal exception in thread Thread[ReadStage:5,5,main]
>>
>> java.lang.OutOfMemoryError: Java heap space
>>
>>       at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57)
>>
>>       at java.nio.ByteBuffer.allocate(ByteBuffer.java:329)
>>
>>       at
>> org.apache.cassandra.utils.FBUtilities.readByteArray(FBUtilities.java:277)
>>
>>       at
>> org.apache.cassandra.db.ColumnSerializer.deserialize(ColumnSerializer.java:94)
>>
>>       at
>> org.apache.cassandra.db.SuperColumnSerializer.deserialize(SuperColumn.java:364)
>>
>>       at
>> org.apache.cassandra.db.SuperColumnSerializer.deserialize(SuperColumn.java:313)
>>
>>       at
>> org.apache.cassandra.db.columniterator.SSTableNamesIterator.readSimpleColumns(SSTableNamesIterator.java:144)
>>
>>       at
>> org.apache.cassandra.db.columniterator.SSTableNamesIterator.read(SSTableNamesIterator.java:130)
>>
>>       at
>> org.apache.cassandra.db.columniterator.SSTableNamesIterator.<init>(SSTableNamesIterator.java:70)
>>
>>       at
>> org.apache.cassandra.db.filter.NamesQueryFilter.getSSTableColumnIterator(NamesQueryFilter.java:59)
>>
>>       at
>> org.apache.cassandra.db.filter.QueryFilter.getSSTableColumnIterator(QueryFilter.java:81)
>>
>>       at
>> org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1215)
>>
>>       at
>> org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1107)
>>
>>       at
>> org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1077)
>>
>>       at org.apache.cassandra.db.Table.getRow(Table.java:384)
>>
>>       at
>> org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:63)
>>
>>       at
>> org.apache.cassandra.service.StorageProxy$weakReadLocalCallable.call(StorageProxy.java:777)
>>
>>       at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
>>
>>       at java.util.concurrent.FutureTask.run(FutureTask.java:166)
>>
>>       at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>>
>>       at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>
>>       at java.lang.Thread.run(Thread.java:636)
>>
>> ERROR 16:38:06,717 Internal error processing get_slice
>>
>> java.lang.RuntimeException: java.util.concurrent.ExecutionException:
>> java.lang.OutOfMemoryError: Java heap space
>>
>>       at
>> org.apache.cassandra.service.StorageProxy.weakRead(StorageProxy.java:282)
>>
>>       at
>> org.apache.cassandra.service.StorageProxy.readProtocol(StorageProxy.java:224)
>>
>>       at
>> org.apache.cassandra.thrift.CassandraServer.readColumnFamily(CassandraServer.java:98)
>>
>>       at
>> org.apache.cassandra.thrift.CassandraServer.getSlice(CassandraServer.java:195)
>>
>>       at
>> org.apache.cassandra.thrift.CassandraServer.multigetSliceInternal(CassandraServer.java:271)
>>
>>       at
>> org.apache.cassandra.thrift.CassandraServer.get_slice(CassandraServer.java:233)
>>
>>       at
>> org.apache.cassandra.thrift.Cassandra$Processor$get_slice.process(Cassandra.java:2699)
>>
>>       at
>> org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:2555)
>>
>>       at
>> org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:167)
>>
>>       at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>>
>>       at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>
>>       at java.lang.Thread.run(Thread.java:636)
>>
>> Caused by: java.util.concurrent.ExecutionException:
>> java.lang.OutOfMemoryError: Java heap space
>>
>>       at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
>>
>>       at java.util.concurrent.FutureTask.get(FutureTask.java:111)
>>
>>       at
>> org.apache.cassandra.service.StorageProxy.weakRead(StorageProxy.java:278)
>>
>>       ... 11 more
>>
>> Caused by: java.lang.OutOfMemoryError: Java heap space
>>
>>       at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57)
>>
>>       at java.nio.ByteBuffer.allocate(ByteBuffer.java:329)
>>
>>       at
>> org.apache.cassandra.utils.FBUtilities.readByteArray(FBUtilities.java:277)
>>
>>       at
>> org.apache.cassandra.db.ColumnSerializer.deserialize(ColumnSerializer.java:94)
>>
>>       at
>> org.apache.cassandra.db.SuperColumnSerializer.deserialize(SuperColumn.java:364)
>>
>>       at
>> org.apache.cassandra.db.SuperColumnSerializer.deserialize(SuperColumn.java:313)
>>
>>       at
>> org.apache.cassandra.db.columniterator.SSTableNamesIterator.readSimpleColumns(SSTableNamesIterator.java:144)
>>
>>       at
>> org.apache.cassandra.db.columniterator.SSTableNamesIterator.read(SSTableNamesIterator.java:130)
>>
>>       at
>> org.apache.cassandra.db.columniterator.SSTableNamesIterator.<init>(SSTableNamesIterator.java:70)
>>
>>       at
>> org.apache.cassandra.db.filter.NamesQueryFilter.getSSTableColumnIterator(NamesQueryFilter.java:59)
>>
>>       at
>> org.apache.cassandra.db.filter.QueryFilter.getSSTableColumnIterator(QueryFilter.java:81)
>>
>>       at
>> org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1215)
>>
>>       at
>> org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1107)
>>
>>       at
>> org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1077)
>>
>>       at org.apache.cassandra.db.Table.getRow(Table.java:384)
>>
>>       at
>> org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:63)
>>
>>       at
>> org.apache.cassandra.service.StorageProxy$weakReadLocalCallable.call(StorageProxy.java:777)
>>
>>       at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
>>
>>       at java.util.concurrent.FutureTask.run(FutureTask.java:166)
>>
>>       ... 3 more
>>
>>
>
>
>
> --
> Jonathan Ellis
> Project Chair, Apache Cassandra
> co-founder of DataStax, the source for professional Cassandra support
> http://www.datastax.com
>



-- 
Jonathan Ellis
Project Chair, Apache Cassandra
co-founder of DataStax, the source for professional Cassandra support
http://www.datastax.com

Reply via email to