このトピックでは、MapReduce および Spark ジョブのログを JindoFileSystem(JindoFS)または Object Storage Service(OSS)に保存する方法について説明します。
概要
E-MapReduce(EMR)クラスターは、さまざまなニーズに合わせて従量課金制とサブスクリプション課金方式をサポートしています。従量課金制クラスターはいつでもリリースできます。Hadoop クラスターは、デフォルトで Hadoop Distributed File System(HDFS)にログを保存します。従量課金制クラスターをリリースすると、クラスターのジョブログを照会できなくなります。この場合、ジョブの問題のトラブルシューティングが困難になる可能性があります。このトピックでは、ジョブの以前のログを照会できるように、MapReduce および Spark ジョブのログを JindoFS または OSS に保存する方法について説明します。
JindoFS、YARN コンテナログ、および Spark History Server の構成
JindoFS の構成
構成ファイル パラメーター 説明 例 bigboot jfs.namespaces JindoFS でサポートされている名前空間。複数の名前空間はカンマ(,)で区切ります。 emr-jfs jfs.namespaces.emr-jfs.oss.uri emr-jfs 名前空間のストレージバックエンド。 oss://oss-bucket/oss-dir jfs.namespaces.test.mode emr-jfs 名前空間のストレージモード。 block 説明 JindoFS は、ブロックストレージモードとキャッシュモードをサポートしています。YARN コンテナログの構成
構成ファイル パラメーター 説明 例 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 JobHistory が完了した Hadoop ジョブのログを保存するディレクトリ。 jfs://emr-jfs/emr-cluster-log/jobhistory/done または oss://${oss-bucket}/emr-cluster-log/jobhistory/done mapreduce.jobhistory.intermediate-done-dir JobHistory が 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 クラスターの作成時にカスタムソフトウェア構成を追加できます。

カスタム構成の例
たとえば、ログを JindoFS に保存するには、次のカスタム構成を使用し、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 バケットと関連ディレクトリを置き換えます。
[
{
"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"
}
]