У меня есть приведенный ниже цикл, который используется для проверки активного узла имен в кластере Hadoop, и если первый узел неактивен, он выбирает второй.
for (( i=0;i<$(($(wc -l < $LOCAL_DIR/'tempip.txt')/3));i++ )){
j=$(($i*3))
echo ${ipArray[j]} >> $LOCAL_DIR/tmpOp.txt 2> /dev/null
if hdfs dfs -test -e ${ipArray[$j+1]} ; then
hdfs dfs -cat ${ipArray[$j+1]}/* | wc -l>> $LOCAL_DIR/tmpOp.txt 2> /dev/null
elif hdfs dfs -test -e ${ipArray[$j+2]} ; then
hdfs dfs -cat ${ipArray[$j+2]}/* | wc -l>> $LOCAL_DIR/tmpOp.txt 2> /dev/null
else
echo "Invalid"
fi
}
Проблема здесь в том, что всякий раз, когда узел имени оказывается неактивным, он выдает в окне следующее сообщение и продолжает работу с другим узлом имени.Я перенаправил свою ошибку в пустой каталог, но все равно получаю ее. Как мне от этого избавиться?
test: Operation category READ is not supported in state standby. Visit https://s.apache.org/sbnn-error
решение1
Вы отбрасываете вывод ошибок из wc
, а не из hdfs
.
См. мой ответ на что-то похожее по цитатена сервереfault.