我们正在AWS上运行3节点cassandra集群。我能够启动一个节点,但我无法启动集群中的其他两个节点。 当我尝试启动节点时,我得到一个以下信息列表,直到它最终耗尽堆空间并终止: http://pastebin.com/7gRGWVDV
最后,节点以内存不足错误终止:
ERROR 07:37:41,495 Exception in thread Thread[FileWatchdog,5,main] java.lang.OutOfMemoryError: Java heap space
at java.lang.StringCoding$StringEncoder.encode(StringCoding.java:300)
at java.lang.StringCoding.encode(StringCoding.java:344)
at java.lang.String.getBytes(String.java:916)
at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:242)
at java.io.File.exists(File.java:813)
at org.apache.log4j.helpers.FileWatchdog.checkAndConfigure(FileWatchdog.java:77)
at org.apache.log4j.helpers.FileWatchdog.run(FileWatchdog.java:108)
ERROR 07:37:48,570 Exception in thread Thread[CompactionExecutor:4,1,main] java.lang.OutOfMemoryError: Java heap space
at org.apache.cassandra.io.util.RandomAccessReader.readBytes(RandomAccessReader.java:347)
at org.apache.cassandra.utils.ByteBufferUtil.read(ByteBufferUtil.java:392)
at org.apache.cassandra.utils.ByteBufferUtil.readWithLength(ByteBufferUtil.java:355)
at org.apache.cassandra.db.ColumnSerializer.deserializeColumnBody(ColumnSerializer.java:124)
at org.apache.cassandra.db.OnDiskAtom$Serializer.deserializeFromSSTable(OnDiskAtom.java:85)
at org.apache.cassandra.db.Column$1.computeNext(Column.java:75)
at org.apache.cassandra.db.Column$1.computeNext(Column.java:64)
at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
at com.google.common.collect.AbstractIterator.next(AbstractIterator.java:153)
at org.apache.cassandra.db.columniterator.IndexedSliceReader$IndexedBlockFetcher.getNextBlock(IndexedSliceReader.java:434 )
在cassandra-env.sh中,我设置:
MAX_HEAP_SIZE="4G"
HEAP_NEWSIZE="800M"
我能够启动cassandra并正常运行直到几天,然后我们运行了一个数据迁移任务,将数据从mysql移动到cassandra。在迁移期间,我记得我们已经从mysql到cassandra移动了大约4000万行。因此,我们耗尽了硬盘空间,因此我们增加了更多的磁盘空间,并将我们的aws实例从m3大增加到m3 xlarge。 但现在我无法启动节点。 正如在其他SO答案中所建议的,我删除了saved_cache目录并尝试重新启动节点。但这个建议对我们没有用。
我正在使用cassandra版本2.0.14
任何指针都会有所帮助!
答案 0 :(得分:0)
我见过几次同样的事情。基本上,由于压实,Cassandra在大型插入过程中消耗了大量的堆。尝试从较大的堆开始,并在导入完成后再次降低它