2015-07-22 2 views
0

После изменения декларации носителей из одного вывода поля в два кластера, похоже, запоминается его старое объявление вывода. НапримерApache Storm: Вспоминая старое количество полей вывода для носика

declarer.declare(new Fields("userTask")); 

К

declarer.declare(new Fields("tupleTrackingId","userTask")); 

Этот носик имеет сериализации. Это тоже запомнилось.

Ошибка в журнале состояний

Tuple created with wrong number of fields. Expected 1 fields but got 2 fields 

Но теперь он имеет новую декларацию.

Вопросы Есть ли способ очистить историю штормового кластера? Или очистить исторически сгенерированный сериализованный объект?

Или если это еще одна проблема?

Для здравомыслия здесь есть выход для слива.

outputCollector.emit(new Values(msgID, task), msgID); 

Благодаря

ответ

0

Проблема была в том, что у меня была оригинальная скомпилированная банка одной и той же программы в каталоге шторма, из предыдущего здания и развертывания при тестировании кластера.

Что происходит, если какие-либо баночки этого файла были включены при запуске Nimbus, поэтому он имел ссылку на эту старую банку, испорченный сериализацией измененного объекта. Вы можете просмотреть это, посмотрев параметры, переданные при запуске Nimbus.

Примечание Не помещайте банки в папку Storm, так как это может вызвать проблемы, которые трудно отследить.

0

Nimbus буфера представлены топологии в storm.local.dir. Вы должны иметь возможность удалять буферизованную топологию (т. Е. Файл jar). Но будьте осторожны: удаление «неправильных» файлов приведет к прерыванию работы топологий!

+0

Спасибо, но я попытался это сделать, но он все еще не работает. Очищенные банки отсюда:/usr/local/storm/storm-local/nimbus/inbox – Matt

+0

Вы уверены, что файл jar, который вы отправляете, был правильно обновлен с новым кодом носика? –

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