人生ずっと勉強。
ITを軸としたT型人間になりたい人のブログ。
09 | 2017/10 | 11
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Hadoopで"could only be replicated to 0 nodes, instead of 1"エラー
【解決法まとめ】
・前提
現在使っているHadoopのバージョンが、以前使っていたバージョンより古い場合(ダウングレードしたとき)。
・解決方法
1.Hadoopのクラスタを停止
# stop-all.sh

2.ローカルにあるHadoopのデータディレクトリを物理的に削除。
データディレクトリは
/tmp/hadoop-Hadoop用ユーザネーム

であることが典型的。ユーザネームが「Hadoop」なら「/tmp/hadoop-hadoop」。

3.HDFSを再びフォーマット
# hadoop namenode -format

4.Hadoopクラスタ再起動
# start-all.sh


【問題の背景】
・Hadoop-0.21.0を使っていて、以下の警告が出たのでHadoop-0.20.2にダウングレードした。
WARN conf.Configuration: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id

ちなみにこれについてはすでにこちらにパッチが登場済み。バージョン0.22から反映されるそうです。
それまでは自力でコンパイルしてjarに統合するしかない、のかな?
・「# hadoop fs -ls /」や「# hadoop fs -mkdir /tmp」などはうまくいくが、HDFSにファイルを置こうと
「# hadoop fs -copyFromLocal ./hoge.txt /tmp/」とすると、
"could only be replicated to 0 nodes, instead of 1"
というエラーが出現。
「# hadoop fs -ls /tmp」をすると、「hoge.txt」はあるがサイズは0.
・DataNodeのログファイルを確認するため、
less $HADOOP_INSTALLED/logs/hadoop-ユーザ名-datanode-ホスト名.log

を叩くと、ログ中に
"Unexpected version of storage directory in the datanode log file"
の記述が。
これでググってみると、こちらを発見。
記述されている通りにやってみたところうまく動く。
記述内容は【解決法まとめ】の通り。

スポンサーサイト


わたくし

いろいろリンク

カテゴリ

月別アーカイブ

最新記事

最新コメント

最新トラックバック

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

QRコード

QR

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。