デフォルトでは、Elastic MapReduce (EMR) Hadoop クラスターはジョブログを Hadoop 分散ファイルシステム (HDFS) に保存します。従量課金クラスターがリリースされると、HDFS はそれとともに削除され、すべてのジョブログが完全に失われます。クラスターリリース後にトラブルシューティングのためにログを保持するには、クラスター作成時に YARN コンテナログ、MapReduce ジョブ履歴、および Spark イベントログを JindoFS (JindoFileSystem) または Object Storage Service (OSS) にリダイレクトします。
EMR クラスターは、従量課金およびサブスクリプションの課金方法をサポートし、さまざまなニーズに対応します。
前提条件
開始する前に、以下があることを確認してください。
ログを保存するための OSS バケット
(JindoFS の場合) OSS をバックエンドとする JindoFS 名前空間
ログストレージの仕組み
YARN は、ジョブのすべてのコンテナログをノードごとに単一のファイルに集約し、アプリケーションの完了時に、構成されたリモートログディレクトリに書き込みます。yarn.nodemanager.remote-app-log-dir パラメーターがこの送信先を制御します。
MapReduce は、Job History Server を使用して、完了したジョブのメタデータをアーカイブします。サーバーは、完了したジョブログを mapreduce.jobhistory.done-dir に書き込み、進行中のレコードを mapreduce.jobhistory.intermediate-done-dir にバッファーします。
Spark は、Spark History Server を使用してジョブ実行をリプレイします。spark_eventlog_dir で設定されたパスからイベントログを読み取ります。
構成リファレンス
次の表に、各ストレージバックエンドのパラメーターを一覧表示します。すべてのパラメーターを、クラスター作成時にカスタムソフトウェア構成として適用します。
JindoFS
これらのパラメーターを bigboot 構成ファイルで設定します。
| パラメーター | 説明 | 例 |
|---|---|---|
jfs.namespaces | JindoFS がサポートする名前空間。複数の名前空間をコンマで区切ります。 | emr-jfs |
jfs.namespaces.emr-jfs.oss.uri | emr-jfs 名前空間の OSS ストレージバックエンド。 | oss://oss-bucket/oss-dir |
jfs.namespaces.emr-jfs.mode | emr-jfs 名前空間のストレージモード。JindoFS はブロックモードとキャッシュモードをサポートします。 | block |
YARN コンテナログと MapReduce ジョブ履歴
| 構成ファイル | パラメーター | 説明 | 例 |
|---|---|---|---|
yarn-site | yarn.nodemanager.remote-app-log-dir | アプリケーションの完了後、YARN がコンテナログを集約して保存するリモートディレクトリ。YARN のログ集約機能はデフォルトで有効になっています。 | jfs://emr-jfs/emr-cluster-log/yarn-apps-logs または oss://${oss-bucket}/emr-cluster-log/yarn-apps-logs |
mapred-site | mapreduce.jobhistory.done-dir | Job History Server が完了した Hadoop ジョブのログを保存するディレクトリ。 | jfs://emr-jfs/emr-cluster-log/jobhistory/done または oss://${oss-bucket}/emr-cluster-log/jobhistory/done |
mapred-site | mapreduce.jobhistory.intermediate-done-dir | Job History Server がまだアーカイブされていない Hadoop ジョブのログをバッファーするディレクトリ。 | jfs://emr-jfs/emr-cluster-log/jobhistory/done_intermediate または oss://${oss-bucket}/emr-cluster-log/jobhistory/done_intermediate |
Spark History Server
| 構成ファイル | パラメーター | 説明 | 例 |
|---|---|---|---|
spark-defaults | spark_eventlog_dir | Spark History Server が Spark ジョブのログを保存するディレクトリ。 | jfs://emr-jfs/emr-cluster-log/spark-history または oss://${oss-bucket}/emr-cluster-log/spark-history |
クラスター作成時の構成の適用
EMR クラスターを作成する際に、構成をカスタムソフトウェア構成として渡します。コンソールには、次の図に示すように、この JSON 入力用の [カスタムソフトウェア構成] フィールドが用意されています。

JindoFS にログを保存
oss-bucket とディレクトリパスを、ご利用の実際の OSS バケットと希望するパスに置き換えます。
[
{
"ServiceName": "BIGBOOT",
"FileName": "bigboot",
"ConfigKey": "jfs.namespaces",
"ConfigValue": "emr-jfs"
},
{
"ServiceName": "BIGBOOT",
"FileName": "bigboot",
"ConfigKey": "jfs.namespaces.emr-jfs.oss.uri",
"ConfigValue": "oss://oss-bucket/jindoFS"
},
{
"ServiceName": "BIGBOOT",
"FileName": "bigboot",
"ConfigKey": "jfs.namespaces.emr-jfs.mode",
"ConfigValue": "block"
},
{
"ServiceName": "YARN",
"FileName": "mapred-site",
"ConfigKey": "mapreduce.jobhistory.done-dir",
"ConfigValue": "jfs://emr-jfs/emr-cluster-log/jobhistory/done"
},
{
"ServiceName": "YARN",
"FileName": "mapred-site",
"ConfigKey": "mapreduce.jobhistory.intermediate-done-dir",
"ConfigValue": "jfs://emr-jfs/emr-cluster-log/jobhistory/done_intermediate"
},
{
"ServiceName": "YARN",
"FileName": "yarn-site",
"ConfigKey": "yarn.nodemanager.remote-app-log-dir",
"ConfigValue": "jfs://emr-jfs/emr-cluster-log/yarn-apps-logs"
},
{
"ServiceName": "SPARK",
"FileName": "spark-defaults",
"ConfigKey": "spark_eventlog_dir",
"ConfigValue": "jfs://emr-jfs/emr-cluster-log/spark-history"
}
]OSS にログを保存
oss_bucket とディレクトリパスを、ご利用の実際の OSS バケットと希望するパスに置き換えます。
[
{
"ServiceName": "YARN",
"FileName": "mapred-site",
"ConfigKey": "mapreduce.jobhistory.done-dir",
"ConfigValue": "oss://oss_bucket/emr-cluster-log/jobhistory/done"
},
{
"ServiceName": "YARN",
"FileName": "mapred-site",
"ConfigKey": "mapreduce.jobhistory.intermediate-done-dir",
"ConfigValue": "oss://oss_bucket/emr-cluster-log/jobhistory/done_intermediate"
},
{
"ServiceName": "YARN",
"FileName": "yarn-site",
"ConfigKey": "yarn.nodemanager.remote-app-log-dir",
"ConfigValue": "oss://oss_bucket/emr-cluster-log/yarn-apps-logs"
},
{
"ServiceName": "SPARK",
"FileName": "spark-defaults",
"ConfigKey": "spark_eventlog_dir",
"ConfigValue": "oss://oss_bucket/emr-cluster-log/spark-history"
}
]クラスターリリース後のログの検索
クラスターリリース後、構成したパスで OSS から直接ログにアクセスします。
| ログタイプ | OSS パス |
|---|---|
| YARN コンテナログ | oss://<oss-bucket>/emr-cluster-log/yarn-apps-logs/ |
| MapReduce 完了ジョブログ | oss://<oss-bucket>/emr-cluster-log/jobhistory/done/ |
| MapReduce 進行中ジョブログ | oss://<oss-bucket>/emr-cluster-log/jobhistory/done_intermediate/ |
| Spark イベントログ | oss://<oss-bucket>/emr-cluster-log/spark-history/ |