DataWorks では、EMR DataLake クラスターを EMR コンピュートエンジンとして登録できます。その後、Hive、MapReduce、Presto、Spark SQL などのサービスのノードを作成できます。これにより、EMR タスクのワークフローの設定、ジョブのスケジューリング、メタデータの管理が可能になります。このトピックでは、DataWorks で EMR タスクを実行するための DataLake クラスターの設定に関するベストプラクティスについて説明します。
背景
-
DataWorks で EMR タスクを実行する際、さまざまな EMR コンポーネントを使用でき、それぞれに最適な設定があります。詳細については、「EMR コンポーネントの設定」をご参照ください。
-
EMR タスクで利用可能なメタデータストレージのオプションは、DataWorks ワークスペースのモードによって異なります。詳細については、「メタデータストレージソリューションの選択」をご参照ください。
DataWorks で EMR ジョブとともに DataLake クラスターを使用する際の開発プロセスと主要な考慮事項については、「DataWorks on EMR ユーザーガイド」をご参照ください。
EMR コンポーネントの設定
-
Kyuubi
本番環境では、
kyuubi_java_optsのメモリは 10g 以上、kyuubi_beeline_optsは 2g 以上に設定することを推奨します。 -
Spark
-
デフォルトでは、Spark コンポーネントのメモリ割り当ては小さくなっていますが、
spark-submitコマンドにメモリ設定を追加することで、ワークロードに合わせてこの割り当てを調整できます。 -
EMR クラスターのサイズに基づいて、次の Spark プロパティを適切な値に調整します:
spark.driver.memory、spark.driver.memoryOverhead、およびspark.executor.memory。
重要-
DataWorks では、リネージは EMR Hive、EMR Spark、EMR Spark SQL ノードでのみサポートされています。EMR Hive ノードはテーブルレベルと列レベルの両方のリネージをサポートしますが、Spark ベースのノードはテーブルレベルのリネージのみをサポートします。
-
Spark の場合、リネージをサポートしているのは Spark 2.x のみです。Spark 3.x はサポートしていません。
Spark の設定の詳細については、「Spark のメモリ管理」をご参照ください。
-
-
HDFS
EMR クラスターのサイズに応じて、次の HDFS パラメーターを適切な値に調整します:
hadoop_namenode_heapsize、hadoop_datanode_heapsize、hadoop_secondary_namenode_heapsize、およびhadoop_namenode_opts。
メタデータストレージの選択
標準モードの DataWorks ワークスペースで開発環境と本番環境を隔離するには、DataWorks の セクションに、開発環境用と本番環境用に 2 つの異なる EMR クラスターを登録する必要があります。さらに、データ隔離のため、2 つのクラスターのメタデータを別々の ApsaraDB RDS データベースに保存する必要があります。