このトピックでは、JindoOssCommitterとも呼ばれるJindoジョブコミッターの使用方法について説明します。
背景情報
ジョブコミッターは、MapReduceやSparkなどの分散コンピューティングフレームワークの基本コンポーネントです。分散タスクの書き込み操作のデータ整合性問題を処理するために使用されます。
Jindoジョブコミッターは、Alibaba Cloud E-MapReduce(EMR)チームによって開発された効果的なジョブコミッターです。 OSSシナリオでのジョブコミット専用です。 Jindoジョブコミッターは、OSSのマルチパートアップロードおよびファイルシステムカスタマイズ機能と組み合わされています。 Jindoジョブコミッターを使用する場合、タスクの出力データは、名前変更操作を実行する必要なく、最終出力ディレクトリに直接書き込まれます。ジョブコミットが完了する前は、中間データはユーザーには見えません。これにより、データの整合性が確保されます。
- OSSの帯域幅と一部の高度な機能の有効化は、OSSのデータコピーパフォーマンスに影響を与える可能性があります。そのため、ユーザーまたはバケットによってデータコピーのパフォーマンスが異なる場合があります。ご質問がある場合は、OSSのテクニカルサポート担当者にお問い合わせください。
- すべてのタスクが完了すると、MapReduceアプリケーションマスターまたはSparkドライバーがジョブをコミットします。これにより、結果ファイルの一部のみが最終出力ディレクトリに表示される短い時間枠が発生します。時間枠の長さは、ファイルの数と正の相関があります。
fs.oss.committer.threads
パラメーターを大きい値に設定して、同時処理を高速化できます。 - HiveジョブとPrestoジョブは、Hadoopジョブコミッターを使用しません。
- EMRクラスターでは、Jindoジョブコミッターはデフォルトで有効になっています。
MapReduceジョブでJindoジョブコミッターを使用する
- YARNサービスの [mapred-site] タブに移動します。
- 上部のナビゲーションバーで、クラスターが存在するリージョンを選択 し、ビジネス要件に基づいてリソースグループを選択します。
- [クラスター管理] タブをクリックします。
- [クラスター管理] ページで、クラスターを見つけて、[アクション] 列の [詳細] をクリックします。
- 左側のナビゲーションペインで、 を選択します。
- [構成] タブをクリックします。
- [サービス構成] セクションで、[mapred-site] タブをクリックします。
- Hadoopバージョンに基づいてジョブコミッターパラメーターを構成します。
- Hadoop 2.X
[mapred-site] タブで、[mapreduce.outputcommitter.class] パラメーターを com.aliyun.emr.fs.oss.commit.JindoOssCommitter に設定します。
- Hadoop 3.X
[mapred-site] タブで、[mapreduce.outputcommitter.factory.scheme.oss] パラメーターを com.aliyun.emr.fs.oss.commit.JindoOssCommitterFactory に設定します。
- Hadoop 2.X
- 構成を保存します。
- [サービス構成] セクションの右上隅にある [保存] をクリックします。
- [変更の確認] ダイアログボックスで、[説明] を指定し、[構成の自動更新] をオンにします。
- [OK] をクリックします。
- SmartDataサービスの [smartdata-site] タブに移動します。
- 左側のナビゲーションペインで、 を選択します。
- [構成] タブをクリックします。
- [サービス構成] セクションで、[smartdata-site] タブをクリックします。
- [smartdata-site] タブで、[fs.oss.committer.magic.enabled] を true に設定します。
- 構成を保存します。
- [サービス構成] セクションの右上隅にある [保存] をクリックします。
- [変更の確認] ダイアログボックスで、[説明] を指定し、[構成の自動更新] をオンにします。
- [OK] をクリックします。
SparkジョブでJindoジョブコミッターを使用する
- Sparkサービスの [spark-defaults] タブに移動します。
- 左側のナビゲーションペインで、 を選択します。
- [構成] タブをクリックします。
- [サービス構成] セクションで、[spark-defaults] タブをクリックします。
- [spark-defaults] タブで、次の表にリストされているパラメーターを構成します。
パラメーター 値 spark.sql.sources.outputCommitterClass com.aliyun.emr.fs.oss.commit.JindoOssCommitter spark.sql.parquet.output.committer.class com.aliyun.emr.fs.oss.commit.JindoOssCommitter spark.sql.hive.outputCommitterClass com.aliyun.emr.fs.oss.commit.JindoOssCommitter これらのパラメーターは、Sparkデータソーステーブル、Spark Parquetデータソーステーブル、およびHiveテーブルにデータを書き込むために使用されるジョブコミッターを指定します。
- 構成を保存します。
- [サービス構成] セクションの右上隅にある [保存] をクリックします。
- [変更の確認] ダイアログボックスで、[説明] を指定し、[構成の自動更新] をオンにします。
- [OK] をクリックします。
- SmartDataサービスの [smartdata-site] タブに移動します。
- 左側のナビゲーションペインで、 を選択します。
- [構成] タブをクリックします。
- [サービス構成] セクションで、[smartdata-site] タブをクリックします。
- [smartdata-site] タブで、[fs.oss.committer.magic.enabled] を true に設定します。説明
fs.oss.committer.magic.enabled
パラメーターを使用して、使用するジョブコミッターを決定できます。 このパラメーターを true に設定すると、Sparkジョブは名前変更操作を必要としないJindo Oss Magic Committerを使用します。 このパラメーターを false に設定すると、JindoOssCommitterはFileOutputCommitterと同じように機能します。 - 構成を保存します。
- [サービス構成] セクションの右上隅にある [保存] をクリックします。
- [変更の確認] ダイアログボックスで、[説明] を指定し、[構成の自動更新] をオンにします。
- [OK] をクリックします。
Jindoジョブコミッターを最適化する
MapReduceタスクまたはSparkタスクが多数のファイルを書き込む場合、ジョブコミット関連タスクに対して同時に実行できるスレッド数を調整して、ジョブコミットのパフォーマンスを向上させることができます。
- SmartDataサービスの [smartdata-site] タブに移動します。
- 左側のナビゲーションペインで、 を選択します。
- [構成] タブをクリックします。
- [サービス構成] セクションで、[smartdata-site] タブをクリックします。
- [smartdata-site] タブで、[fs.oss.committer.threads] パラメーターを 8 に設定します。デフォルト値は 8 です。
- 構成を保存します。
- [サービス構成] セクションの右上隅にある [保存] をクリックします。
- [変更の確認] ダイアログボックスで、[説明] を指定し、[構成の自動更新] をオンにします。
- [OK] をクリックします。