我尝试使用sstableloader将数据加载到Cassandra集群。 sstableloader显示以下错误:
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57)
at java.nio.ByteBuffer.allocate(ByteBuffer.java:335)
at org.apache.cassandra.io.compress.BufferType$1.allocate(BufferType.java:28)
at org.apache.cassandra.io.util.RandomAccessReader.allocateBuffer(RandomAccessReader.java:69)
at org.apache.cassandra.io.util.RandomAccessReader.<init>(RandomAccessReader.java:62)
at org.apache.cassandra.io.util.RandomAccessReader.open(RandomAccessReader.java:103)
at org.apache.cassandra.io.util.RandomAccessReader.open(RandomAccessReader.java:92)
at org.apache.cassandra.io.util.RandomAccessReader.open(RandomAccessReader.java:87)
at org.apache.cassandra.io.util.BufferedSegmentedFile.getSegment(BufferedSegmentedFile.java:60)
at org.apache.cassandra.io.util.SegmentedFile$SegmentIterator.next(SegmentedFile.java:271)
at org.apache.cassandra.io.util.SegmentedFile$SegmentIterator.next(SegmentedFile.java:252)
at org.apache.cassandra.io.sstable.format.big.BigTableReader.getPosition(BigTableReader.java:184)
at org.apache.cassandra.io.sstable.format.SSTableReader.getPosition(SSTableReader.java:1558)
at org.apache.cassandra.io.sstable.format.SSTableReader.getPositionsForRanges(SSTableReader.java:1489)
at org.apache.cassandra.io.sstable.SSTableLoader$1.accept(SSTableLoader.java:128)
at java.io.File.list(File.java:1161)
at org.apache.cassandra.io.sstable.SSTableLoader.openSSTables(SSTableLoader.java:79)
at org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:161)
at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:97)
如果我了解情况需要增加MAX_HEAP_SIZE。我怎样才能为sstableloader做到这一点?
听起来不太乐观 - “/ usr / bin / sstableloader仍然有一个硬编码的-Mx256M,无法轻易覆盖”。 https://issues.apache.org/jira/browse/CASSANDRA-7385
感谢。
我编辑了bin / sstableloader来设置MAX_HEAP_SIZE =“16GB”。在sstatableloader工作之后。
答案 0 :(得分:1)
sstableloader.sh在代码中包含以下行
if [ "x$MAX_HEAP_SIZE" = "x" ];
...
因此,将MAX_HEAP_SIZE放在sstableloader命令前会设置临时环境变量并被sstableloader识别:
MAX_HEAP_SIZE="16G" sstableloader -d node /file/path
答案 1 :(得分:0)
对于Cassandra v.2.2.4,您可以使用vi,nano等编辑sstableloader文件,以设置MAX_HEAP_SIZE =&#34; 16GB&#34; 或者:
sed -i -e 's/MAX_HEAP_SIZE="256M"/MAX_HEAP_SIZE="16G"/g' sstableloader