2016-04-27 9 views
4

У меня есть несколько узлов в кольце с репликацией 3 и попытка изменить оборудование на узле. Что происходит, так это то, что я получаю исключение от потоковой передачи.Cassandra избегает JOINING state перейти к RUNNING

Я пробовал несколько раз всегда с тем же отказом. Верхний узел (10.0.10.54) ужасно выходит из космоса, и нереалистично сжимать или выполнять какие-либо операции sstable. То, что я хотел бы сделать, это:

  1. Поднимает новый узел со всеми данными предварительного потоковую до несостоявшегося события
  2. Выполнить ремонт на нем (nodetool ремонт -pr)
  3. Decomission 10,0 .10.54 узел

то, что я не могу понять, как сделать это каждый раз, когда я поднимаю новый узел переходит в ПРИСОЕДИНЕНИЯ, что я хочу, чтобы заставить его в RUNNING с данными, которые он скопировал из его СОХРАНЕНИЕ.

Исключение для тех, кто заинтересован -

WARN [StreamReceiveTask:6] 2016-04-25 06:48:51,107 StreamResultFuture.java:207 - [Stream #bb34c010-0a1b-11e6-a009-d100b9716be2] Stream failed 
INFO [MemtableFlushWriter:214] 2016-04-25 06:48:51,107 Memtable.java:382 - Completed flushing /mnt/cassandra/data/system/compactions_in_progress-55080ab05d9c388690a4acb25fe1f77b/system-compactions_in_progress-tmp-ka-276-Data.db (0.000KiB) for commitlog position ReplayPosition(segmentId=1461502431578, position=9474892) 
INFO [CompactionExecutor:259] 2016-04-25 06:48:51,252 CompactionTask.java:141 - Compacting [SSTableReader(path='/mnt/cassandra/data/trends/stream_trends-a5bb42a07e2911e58fd6f3cfff022ad4/trends-stream_trends-ka-79-Data.db'), SSTableReader(path='/mnt/cassandra/data/trends/stream_trends-a5bb42a07e2911e58fd6f3cfff022ad4/trends-stream_trends-ka-87-Data.db')] 
ERROR [main] 2016-04-25 06:48:51,270 CassandraDaemon.java:581 - Exception encountered during startup 
java.lang.RuntimeException: Error during boostrap: Stream failed 
     at org.apache.cassandra.dht.BootStrapper.bootstrap(BootStrapper.java:86) ~[cassandra-all-2.1.13.1218.jar:2.1.13.1218] 
     at org.apache.cassandra.service.StorageService.bootstrap(StorageService.java:1166) ~[cassandra-all-2.1.13.1218.jar:2.1.13.1218] 
     at org.apache.cassandra.service.StorageService.joinTokenRing(StorageService.java:944) ~[cassandra-all-2.1.13.1218.jar:2.1.13.1218] 
     at org.apache.cassandra.service.StorageService.initServer(StorageService.java:740) ~[cassandra-all-2.1.13.1218.jar:2.1.13.1218] 
     at org.apache.cassandra.service.StorageService.initServer(StorageService.java:617) ~[cassandra-all-2.1.13.1218.jar:2.1.13.1218] 
     at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:389) ~[cassandra-all-2.1.13.1218.jar:2.1.13.1218] 
     at com.datastax.bdp.server.DseDaemon.setup(DseDaemon.java:336) ~[dse-core-4.8.6.jar:4.8.6] 
     at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:564) ~[cassandra-all-2.1.13.1218.jar:2.1.13.1218] 
     at com.datastax.bdp.DseModule.main(DseModule.java:74) [dse-core-4.8.6.jar:4.8.6] 
Caused by: org.apache.cassandra.streaming.StreamException: Stream failed 
     at org.apache.cassandra.streaming.management.StreamEventJMXNotifier.onFailure(StreamEventJMXNotifier.java:85) ~[cassandra-all-2.1.13.1218.jar:2.1.13.1218] 
     at com.google.common.util.concurrent.Futures$4.run(Futures.java:1172) ~[guava-16.0.1.jar:na] 
     at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:297) ~[guava-16.0.1.jar:na] 
     at com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156) ~[guava-16.0.1.jar:na] 
     at com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145) ~[guava-16.0.1.jar:na] 
     at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:202) ~[guava-16.0.1.jar:na] 
     at org.apache.cassandra.streaming.StreamResultFuture.maybeComplete(StreamResultFuture.java:208) ~[cassandra-all-2.1.13.1218.jar:2.1.13.1218] 
     at org.apache.cassandra.streaming.StreamResultFuture.handleSessionComplete(StreamResultFuture.java:184) ~[cassandra-all-2.1.13.1218.jar:2.1.13.1218] 
     at org.apache.cassandra.streaming.StreamSession.closeSession(StreamSession.java:415) ~[cassandra-all-2.1.13.1218.jar:2.1.13.1218] 
     at org.apache.cassandra.streaming.StreamSession.maybeCompleted(StreamSession.java:692) ~[cassandra-all-2.1.13.1218.jar:2.1.13.1218] 
     at org.apache.cassandra.streaming.StreamSession.taskCompleted(StreamSession.java:653) ~[cassandra-all-2.1.13.1218.jar:2.1.13.1218] 
     at org.apache.cassandra.streaming.StreamReceiveTask$OnCompletionRunnable.run(StreamReceiveTask.java:179) ~[cassandra-all-2.1.13.1218.jar:2.1.13.1218] 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_77] 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_77] 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_77] 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_77] 
     at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_77] 
+0

Сколько всего данных в кластере и на каждом узле? Возможно, просто убейте новый узел (сбросьте данные о ключах, не касаясь системных ключей) и попробуйте снова подключиться. Также обратите внимание на значение streamingthroughput (nodetool getstreamingthroughput) – doanduyhai

+0

streamingthrougput is 0 Проблема в том, что файл с 10.0.10.54 вызывает сбой узла. – koblas

+0

Я вижу, что вы используете предприятие datastax в программе datastax. Обратитесь к людям datastax, я уверен, что они могут помочь – doanduyhai

ответ

0

Вы не можете пропустить присоединяющейся этап в то время как узел самонастройки. Я предполагаю, что вы выполняете эти шаги, чтобы заменить узел? https://docs.datastax.com/en/cassandra/2.0/cassandra/operations/ops_replace_node_t.html

Были ли все ваши узлы онлайн в течение всего процесса потоковой передачи? Если реплика падает или отключается во время потоковой передачи, это может привести к сбою потока. Если узлы на диске очень низки, это может привести к тому, что Cassandra будет действовать нечетными способами или сбой. Если это так, вам может потребоваться добавить дополнительное хранилище к существующему узлу перед добавлением нового узла.

Вы можете добавить больше дискового пространства к существующему узлу так:

  1. Стоп Кассандру
  2. Присоединить больший диск к машине/VM
  3. Скопируйте каталог Cassandra данных (/ вар/LIB/Cassandra/данные) на новый диск
  4. Изменения каталога данных Cassandra точки монтирования на новый диск, используя символические ссылки
  5. Старт Cassandra до
+0

Что это за действительный подход, на самом деле он не отвечает на вопрос. – koblas

 Смежные вопросы

  • Нет связанных вопросов^_^