Hadoopアーカイブログガイド

概要

多くのYARN集約ログを持つクラスタでは、それらをHadoopアーカイブに結合して小さなファイルの数を減らし、NameNodeへの負荷を軽減することが役立つ場合があります。このツールは、これを行う簡単な方法を提供します。Hadoopアーカイブ内の集約ログは、ジョブ履歴サーバーとyarn logsコマンドによって引き続き読み取ることができます。

Hadoopアーカイブの詳細については、Hadoopアーカイブガイドを参照してください。

ログのアーカイブ方法

usage: mapred archive-logs
-force                         Force recreating the working directory if
                               an existing one is found. This should
                               only be used if you know that another
                               instance is not currently running
-help                          Prints this message
-maxEligibleApps <n>           The maximum number of eligible apps to
                               process (default: -1 (all))
-maxTotalLogsSize <megabytes>  The maximum total logs size (in
                               megabytes) required to be eligible
                               (default: 1024)
-memory <megabytes>            The amount of memory (in megabytes) for
                               each container (default: 1024)
-minNumberLogFiles <n>         The minimum number of log files required
                               to be eligible (default: 20)
-noProxy                       When specified, all processing will be
                               done as the user running this command (or
                               the YARN user if DefaultContainerExecutor
                               is in use). When not specified, all
                               processing will be done as the user who
                               owns that application; if the user
                               running this command is not allowed to
                               impersonate that user, it will fail
-verbose                       Print more details.

競合を防ぐため、このツールはクラスタで一度に1つのインスタンスのみを実行することをサポートしています。これは、HDFSのyarn.nodemanager.remote-app-log-dir(デフォルト: /tmp/logs/archive-logs-work)の下にarchive-logs-workという名前のディレクトリが存在するかどうかをチェックすることによって行われます。何らかの理由でそのディレクトリが適切にクリーンアップされず、ツールが実行を拒否する場合、-forceオプションを使用して強制的に実行できます。

-helpオプションは、使用方法情報を表示します。

このツールは、次の手順を実行することによって機能します。

  1. 次の基準に基づいて、対象となるアプリケーションのリストを決定します。
    • まだアーカイブされていない
    • その集約ステータスが正常に完了している
    • 少なくとも-minNumberLogFiles個のログファイルがある
    • ログファイルサイズの合計が-maxTotalLogsSizeメガバイト未満である
  2. 見つかったアプリケーションが-maxEligibleAppsを超える場合、最新のアプリケーションは削除されます。これらは次回処理できます。
  3. 対象となるアプリケーションに基づいてシェルスクリプトが生成されます。
  4. 前述のスクリプトを使用して、分散シェルプログラムが実行されます。これは、各アプリケーションを処理する1つずつ、-maxEligibleApps個のコンテナで、-memoryメガバイトのメモリを使用して実行されます。各コンテナは、単一のアプリケーションに対してhadoop archivesコマンドを実行し、その集約ログファイルを結果のアーカイブで置き換えます。

-noProxyオプションを使用すると、ツールは現在実行しているユーザー、またはDefaultContainerExecutorを使用している場合はYARNユーザーとしてすべてを処理します。指定しない場合、すべての処理はアプリケーションを所有するユーザーによって行われます。このコマンドを実行しているユーザーがそのユーザーのなりすましを許可されていない場合、失敗します。これは、管理者ユーザーがなりすましを有効にすることなくすべての集約を処理する場合に役立ちます。-noProxyを使用すると、結果のHARファイルは、ログを最初に所有していたユーザーではなく、ツールを実行したユーザーが所有します。

-verboseオプションを使用すると、ツールは実行内容の詳細情報を表示します。

ツールの実行の結果、処理されたアプリケーションの元の集約ログファイルは、それらのすべてのログを含むHadoopアーカイブに置き換えられます。