Cassandra ReBuild

时间:2016-02-27 17:11:05

标签: cassandra cassandra-2.0 datastax datastax-enterprise

DSE版本4.8.2

我向数据集群添加了6个新节点,并添加了bootstrap:false。他们加入后,我正在对每个人进行重建。我相信1 NODE已完成,但控制台上的命令仍在“运行”(例如,我还无法运行另一个命令)。我想确保它完全完成。没有压缩,也没有活动到该单元的流。更新:现在已经过了4天,仍然处于命令提示符下。

除了compationstats和netstats之外还有什么我可能不知道的吗?我看到它流式传输数据,然后它压缩了它,但现在......

还有一个问题,在我完成重建后,清理是否还有其他任务我应该考虑完全同步群集?

更新:

当我尝试运行重建时,我不断收到以下错误。我将Ubuntu 14.04中的文件限制提高到200,000,但仍然出现错误。

  

INFO [MemtableFlushWriter:747] 2016-02-29 03:57:18,114   Memtable.java:382 - 完成冲洗   /media/slot02/cjd/match-b633b251a04f11e58b7b89a485a622c1/cjd-match-tmp-ka-127932-Data.db   (71.866MiB)用于提交日志职位   ReplayPosition(segmentId = 1456708497054,position = 14141564)INFO   [ScheduledTasks:1] 2016-02-29 03:58:33,573 ColumnFamilyStore.java:905    - 排队compaction_history:17177(0%)on-heap,0(0%)堆外信息[MemtableFlushWriter:748] 2016-02-29 03:58:33,574   Memtable.java:347 - 写作   Memtable-compaction_history @ 971836863(3.428KiB序列化字节,123   ops,开/关堆限制的0%/ 0%)INFO [MemtableFlushWriter:748]   2016-02-29 03:58:33,575 Memtable.java:382 - 完成冲洗   /media/slot01/system/compaction_history-b4dbb7b4dc493fb5b3bfce6e434832ca/system-compaction_history-tmp-ka-142-Data.db   (0.000KiB)用于commitlog位置   ReplayPosition(segmentId = 1456708497058,position = 20942643)警告   [STREAM-IN- / 10.0.1.243] 2016-02-29 04:00:02,317 CLibrary.java:231 -   开(/媒体/ slot01 / CJD /匹配b633b251a04f11e58b7b89a485a622c1,   O_RDONLY)失败,错误(24)。错误[STREAM-IN- / 10.0.1.243] 2016-02-29   04:00:02,541 JVMStabilityInspector.java:117 - JVM状态确定为   不稳定。由于以下原因而强行退出:   java.io.FileNotFoundException:   /media/slot01/cjd/match-b633b251a04f11e58b7b89a485a622c1/cjd-match-tmp-ka-128371-Index.db   (java.io.RandomAccessFile.open0上有太多打开的文件)   方法)〜[na:1.8.0_72] at   java.io.RandomAccessFile.open(RandomAccessFile.java:316)   〜[na:1.8.0_72] at   java.io.RandomAccessFile中。(RandomAccessFile.java:243)   〜[na:1.8.0_72] at   org.apache.cassandra.io.util.SequentialWriter。(SequentialWriter.java:78)   〜[cassandra-all-2.1.11.908.jar:2.1.11.908] at   org.apache.cassandra.io.util.SequentialWriter.open(SequentialWriter.java:111)   〜[cassandra-all-2.1.11.908.jar:2.1.11.908] at   org.apache.cassandra.io.util.SequentialWriter.open(SequentialWriter.java:106)   〜[cassandra-all-2.1.11.908.jar:2.1.11.908] at   org.apache.cassandra.io.sstable.SSTableWriter $的IndexWriter。(SSTableWriter.java:587)   〜[cassandra-all-2.1.11.908.jar:2.1.11.908] at   org.apache.cassandra.io.sstable.SSTableWriter。(SSTableWriter.java:140)   〜[cassandra-all-2.1.11.908.jar:2.1.11.908] at   org.apache.cassandra.io.sstable.SSTableWriter。(SSTableWriter.java:81)   〜[cassandra-all-2.1.11.908.jar:2.1.11.908] at   org.apache.cassandra.streaming.StreamReader.createWriter(StreamReader.java:135)   〜[cassandra-all-2.1.11.908.jar:2.1.11.908] at   org.apache.cassandra.streaming.compress.CompressedStreamReader.read(CompressedStreamReader.java:80)   〜[cassandra-all-2.1.11.908.jar:2.1.11.908] at   org.apache.cassandra.streaming.messages.IncomingFileMessage $ 1.deserialize(IncomingFileMessage.java:48)   〜[cassandra-all-2.1.11.908.jar:2.1.11.908] at   org.apache.cassandra.streaming.messages.IncomingFileMessage $ 1.deserialize(IncomingFileMessage.java:38)   〜[cassandra-all-2.1.11.908.jar:2.1.11.908] at   org.apache.cassandra.streaming.messages.StreamMessage.deserialize(StreamMessage.java:56)   〜[cassandra-all-2.1.11.908.jar:2.1.11.908] at   org.apache.cassandra.streaming.ConnectionHandler $ IncomingMessageHandler.run(ConnectionHandler.java:250)   〜[cassandra-all-2.1.11.908.jar:2.1.11.908] at   java.lang.Thread.run(Thread.java:745)[na:1.8.0_72] INFO [Thread-2]   2016-02-29 04:00:02,543 DseDaemon.java:418 - DSE关闭......

我的OpenFile限制目前是ulimit -a的200,000。我可以尝试更高,但卡桑德拉暗示了10万的限制。

如果我不得不GUESS,问题是一个节点无法紧凑,因为在数据来自的节点上有2个磁盘已满。当它从那里提取重建数据时,它会拉动50,000个小文件,而不像其他节点拉1-2个更大的文件。也许这就是我必须首先解决的问题?

真的需要帮助......谢谢!

谢谢,

3 个答案:

答案 0 :(得分:0)

  

我向数据集群添加了6个新节点,并添加了bootstrap:false

首先,这是错误的,根据文档,在向群集添加新节点时,您应该放置auto_bootstrap = true

见这里:http://docs.datastax.com/en/cassandra/2.1/cassandra/operations/ops_add_node_to_cluster_t.html

其次,建议一次一个或两个节点添加节点,而不是同时添加所有6个节点,因为它会给网络带来很大压力(因为数据流)

答案 1 :(得分:0)

确保您的ulimit设置正确

cat /proc/<DSE pid>/limits

我经常看到人们认为他们设置了ulimit配置但是为错误的用户做了。如果您检查特定进程ID,则可以100%确定。

答案 2 :(得分:0)

一个棘手的问题是,您通过limits.conf设置的任何内容都将被limits.d / cassandra.conf中的设置覆盖,因此请记住根据您的需要从那里编辑文件。

另外,正如@phact所提到的那样,通过上面的cat确保你所期望的确实存在。