以下のループは、Hadoop クラスター内のアクティブなネームノードをチェックするために使用されます。最初のノードが非アクティブな場合は、2 番目のノードを選択します。
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
}
ここでの問題は、ネームノードが非アクティブであると判断されるたびに、ウィンドウに以下のメッセージが表示され、別のネームノードが続行されることです。エラーをnullディレクトリにリダイレクトしましたが、それでもエラーが発生しますどうすれば取り除くことができますか?
test: Operation category READ is not supported in state standby. Visit https://s.apache.org/sbnn-error
答え1
wc
からではなく、からのエラー出力を破棄していますhdfs
。
似たような引用に対する私の回答を参照してくださいサーバーフォルト。