Azure HDInsight (HDP 2.2) で実行されている MapReduce ジョブをプロファイリングしようとしています。私が本当に欲しいのは、単一の削減タスクのプロファイルだけです (ただし、複数の方がよいでしょう)。
現在使用している構成設定は次のとおりです。
mapreduce.task.profile=true
mapreduce.task.profile.params=-agentlib:hprof=cpu=samples,depth=100,interval=7,lineno=y,thread=y,force=n,file=d:/profile.out
まず第一に、hadoop の過去のバージョンでは、ジョブ クライアントがプロファイル出力ファイルをジョブの送信元の場所にコピーしていたようですが、現在はそうではありません。タスク ノードに移動してそれらを見つける必要があります (したがって、それらを見つけやすいディレクトリに配置する理由です)。これがバグかどうかはわかりません。
しかし問題は、出力ファイルにプロファイル ヘッダーしかないことです。これは、hprof とは何か、ファイルに何が含まれているかに関する一連の情報であり、内容はありません。同じプロファイル引数を使用して単純な Java プログラムをローカルで実行すると、実際のコンテンツが取得されます。
hprof がその出力を書き込むのを妨げる可能性のある糸コンテナー環境に何か異常がありますか? おそらく、タスク jvms が奇妙に終了していますか? それを変更する方法はありますか?