YARN共有キャッシュのMapReduceサポートにより、MapReduceジョブは追加のリソースキャッシュを利用できます。これにより、ジョブの送信クライアント間だけでなく、YARNクラスタ内でもネットワーク帯域幅が節約されます。これにより、ジョブの送信時間とジョブ全体の実行時間が短縮されます。
まず、YARNクラスタで共有キャッシュサービスが実行されている必要があります。共有キャッシュサービスの設定方法については、YARNドキュメントを参照してください。
MapReduceユーザーは、リソースタイプに基づいて、共有キャッシュにアップロードできるリソースを指定できます。これは、mapred-site.xmlの構成パラメーターを使用して行います。
<property> <name>mapreduce.job.sharedcache.mode</name> <value>disabled</value> <description> A comma delimited list of resource categories to submit to the shared cache. The valid categories are: jobjar, libjars, files, archives. If "disabled" is specified then the job submission code will not use the shared cache. </description> </property>
リソースタイプがリストされている場合、共有キャッシュにリソースが既に存在するかどうかが確認されます。存在する場合は、キャッシュされたリソースが使用されます。そうでない場合は、リソースを非同期的にアップロードする必要があることが指定されます。
MapReduceユーザーは、MapReduceジョブのリソースを指定する3つの方法があります。
MapReduceジョブの各リソースに一意のファイル名があることを確認することが重要です。これにより、MapReduceタスクを実行しているYARNコンテナがコンテナの起動時にローカライズされるときに、シンボリックリンクが上書きされるのを防ぎます。ユーザーは、URIのフラグメント部分を使用して独自のリソース名を指定できます。たとえば、コマンドラインで指定されたファイルリソースの場合、次のようになります。
-files /local/path/file1.txt#foo.txt,/local/path2/file1.txt#bar.txt
上記の例では、file1.txtという名前の2つのファイルが、foo.txtとbar.txtという2つの異なる名前でローカライズされます。
共有キャッシュ内のすべてのリソースはPUBLICの可視性を持ちます。
共有キャッシュマネージャーが利用できない場合、MapReduceクライアントはフェイルファストメカニズムを使用します。MapReduceクライアントが共有キャッシュマネージャーに接続できなかった場合、クライアントはそのジョブ送信の残りの部分で共有キャッシュを使用しなくなります。これにより、MapReduceクライアントが共有キャッシュ内のリソースをチェックしようとするたびにタイムアウトするのを防ぎます。MapReduceクライアントはすぐにデフォルトの動作に戻り、共有キャッシュが最初から有効になっていないかのようにジョブを送信します。