2012-02-15 16 views
2

を報告できませんでした。私はいくつかのXMLファイルをマッピングしており、すべての要素(ID>タグ> )からIDをフィルタリングしています。私はIDの特定のセットにジョブを制限したいので、私は大きなファイル(2.7ギガバイトで約250万行、IDとしてちょうど整数ですべての行)を読み込みます。だから私はDistributedCacheを使用し、セットアップ()でファイルを解析 - BufferedReaderを持つマッパーの方法とHashSetのにIDを保存します。私は仕事を開始するときに任意のマップジョブが実行される前にHadoop DistributedCacheは、hadoopジョブでステータス

は今、私は数え切れないほどの

Task attempt_201201112322_0110_m_000000_1 failed to report status. Killing!

を取得します。

クラスタは40個のノードで構成され、DistributedCacheのファイルは、ジョブのすべてのタスクが実行される前に、スレーブノードにコピーされるので、私は障害が大きいHashSetのによって引き起こされると仮定する。私はすでに2000年代にmapred.task.timeoutを増やしました。もちろん私は時間をさらに増やすことができましたが、実際にはこの期間で十分でしょうか?

DistributedCacheは「大容量の読み取り専用ファイルを効率的に配布する」ために使用されているため、ここで何が失敗するのか疑問に思っていましたし、関連するIDをすべてのマップジョブに渡す別の方法があるでしょうか?

おかげで、 スタン

答えて

0

は、あなたはそれが(入口と出口の時間をログ)この方法でタイムアウトされていることを確認するために、セットアップ方法にいくつかのいくつかのデバッグprintlnsを追加することはできますか?

また、BloomFilterを使用してIDを保持することもできます。これらの値は、偽陽性率(〜0.5%)が50MBのブルームフィルタに保存してから、実際の参照ファイルに対してパーティション・チェックを実行します。