0

私はC++で記述された比較的単純なプログラムを持っており、MapReduceジョブにHadoopストリーミングを使用しています(私のバージョンのHadoopはClouderaです)。

最近、多くのストリーミングタスクが失敗し続け、タスクトラッカーによって再起動され、最後に正常に終了することがわかりました。ユーザーログを追跡しましたが、一部のMapReduceタスクの入力がゼロになっているようです。具体的には、エラーメッセージは次のようになります。

HOST=null
USER=mapred
HADOOP_USER=null
last Hadoop input: |null|
last tool output: |TCGA-06-0216-0000024576-0000008192   0   27743   10716|
Date: Sun Apr 29 15:55:51 EDT 2012
java.io.IOException: Broken pipe  

エラー率がかなり高い場合があります(50%近く)。普通ではないと思います。誰か知っている

a)何が起こっているのですか?

b)どうすれば修正できますか?

ありがとう

4

1 に答える 1

1

データに他の言語(中国語など)の文字がたくさん含まれていますか?

その場合は、(1)HadoopクラスターのJVMで文字エンコード設定を確認してください。デフォルトではUTF-8に設定されている可能性があります。(2)マッパー/レデューサー:マッパー/レデューサーがUTF-8(またはJVMを設定した文字エンコード)で文字を出力することを確認します

于 2012-05-01T03:50:21.093 に答える