特定の Java 仮想マシンを使用するようにアプリケーションを設定 - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

特定の Java 仮想マシンを使用するようにアプリケーションを設定

Amazon EMRリリースには、デフォルトの Java 仮想マシン (JVM) バージョンが異なります。このページでは、さまざまなリリースとアプリケーションJVMのサポートについて説明します。

考慮事項

アプリケーションでサポートされている Java バージョンの詳細については、「Amazon EMRリリースガイド」の「アプリケーションページ」を参照してください。

  • Amazon では、クラスターで 1 つのランタイムバージョンを実行するEMRことのみがサポートされ、同じクラスターで異なるランタイムバージョンで異なるノードまたはアプリケーションを実行することはサポートされていません。

  • Amazon EMR7.x の場合、デフォルトの Java 仮想マシン (JVM) は、Apache Livy を除き、Java 17 をサポートするアプリケーションでは Java 17 です。アプリケーションでサポートされているJDKバージョンの詳細については、「Amazon リリースガイド」の対応するEMRリリースページを参照してください。

  • Amazon 7EMR.1.0 以降、Flink は をサポートし、デフォルトで Java 17 に設定されています。別のバージョンの Java ランタイムを使用するには、flink-conf の設定を上書きします。Java 8 または Java 11 を使用するように Flink を設定する方法の詳細については、「Configure Flink to run with Java 11」を参照してください。

  • Amazon 5EMR.x および 6.x の場合、デフォルトの Java 仮想マシン (JVM) は Java 8 です。

    • Amazon EMRリリース 6.12.0 以降では、一部のアプリケーションは Java 11 および 17 もサポートしています。

    • Amazon EMRリリース 6.9.0 以降では、Trino はデフォルトで Java 17 をサポートしています。Java 17 と Trino の詳細については、Trino のブログ、「Trino updates to Java 17」を参照してください。

ランタイムバージョンを選択する際には、次に示すアプリケーション固有の考慮事項に留意してください。

Java 設定に関する、アプリケーション固有の注意点
アプリケーション Java の設定に関する注意点

Spark

Spark をデフォルト以外の Java バージョンで稼働させるには、Spark と Hadoop の両方を設定する必要があります。例については、「を上書きする JVM」を参照してください。

  • プライマリインスタンスプロセスの Java ランタイムを更新するには、spark-envJAVA_HOME を設定します。例えば、spark-submit、spark-shell、Spark History Server などです。

  • Hadoop 設定を変更して Spark エグゼキュターと の Java ランタイムを更新する YARN ApplicationMaster

Spark RAPIDS

Spark 用に設定された Java バージョンRAPIDSで を実行できます。

Iceberg

Iceberg は、それを使用するアプリケーションの設定済み Java バージョンで稼働させることができます。

Delta

Delta は、それを使用するアプリケーションの設定済み Java バージョンで稼働させることができます。

Hudi

Hudi は、それを使用するアプリケーションの設定済み Java バージョンで稼働させることができます。

Hadoop

JVM for Hadoop を更新するには、 を変更しますhadoop-env。例については、「を上書きする JVM」を参照してください。

[Hive]

Hive の Java バージョンを 11 または 17 に設定するには、使用する Java バージョンに Hadoop JVM設定を設定します。

HBase

JVM の を更新するにはHBase、 を変更しますhbase-env。デフォルトでは、 JVMの設定を上書きしない限り、Amazon は Hadoop の設定HBaseJVMに基づいて EMRを設定しますhbase-env。例については、「を上書きする JVM」を参照してください。

Flink

Flink JVMの を更新するには、 を変更しますflink-conf。デフォルトでは、 JVMの設定を上書きしない限り、Amazon は Hadoop の設定JVMに基づいて Flink EMRを設定しますflink-conf。詳細については、「Flink が Java 11 で実行されるよう設定する」を参照してください。

Oozie

Oozie が Java 11 または 17 で稼働するように構成するには、Oozie サーバーと Oozie LauncherAM ランチャー AM の設定を行い、クライアント側の実行ファイルとジョブ設定を変更します。EmbeddedOozieServer を設定して、Java 17 で稼働させることもできます。詳細については、「Oozie 用の Java バージョンの設定」を参照してください。

Pig

Pig は Java 8 のみをサポートしています。Hadoop で Java 11 または 17 を使用し、それと同じクラスターで Pig を稼働させることはできません。

を上書きする JVM

Amazon EMRリリースJVMの設定を上書きするには - たとえば、Amazon EMRリリース 6.12.0 を使用するクラスターで Java 17 を使用するには、Flink を除くapplication-envすべてのアプリケーションの環境分類に JAVA_HOME設定を指定します。Flink の環境分類は flink-conf です。Flink の Java ランタイムを設定する手順については、「Flink が Java 11 で実行されるよう設定する」を参照してください。

Apache Spark で JVM設定を上書きする

Amazon EMRリリース 6.12 以降で Spark を使用する場合、クラスターモードで送信するドライバーを記述すると、ドライバーは Java 8 を使用しますが、エグゼキュターが Java 11 または 17 を使用するように環境を設定できます。また、Amazon EMRリリース 5.x より前のバージョンで Spark を使用し、クラスターモードで送信するドライバーを作成すると、ドライバーは Java 7 を使用します。エグゼキューターが Java 8 を使用するよう環境を設定できます。

JVM for Spark を上書きするには、Hadoop 分類と Spark 分類の両方を設定することをお勧めします。

{ "Classification": "hadoop-env", "Configurations": [ { "Classification": "export", "Configurations": [], "Properties": { "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" } } ], "Properties": {} }, { "Classification": "spark-env", "Configurations": [ { "Classification": "export", "Configurations": [], "Properties": { "JAVA_HOME": "/usr/lib/jvm/java-1.8.0" } } ], "Properties": {} }

Apache で JVM設定を上書きする HBase

Java 11 を使用するHBaseように を設定するには、クラスターの起動時に次の設定を行います。

[ { "Classification": "hbase-env", "Configurations": [ { "Classification": "export", "Configurations": [], "Properties": { "JAVA_HOME": "/usr/lib/jvm/jre-11" } } ], "Properties": {} } ]

Apache Hadoop と Hive で JVM設定を上書きする

次の例は、Hadoop と Hive の JVMをバージョン 17 に設定する方法を示しています。

[ { "Classification": "hadoop-env", "Configurations": [ { "Classification": "export", "Configurations": [], "Properties": { "JAVA_HOME": "/usr/lib/jvm/jre-17" } } ], "Properties": {} } ]

サービスポート

以下は、 YARNおよび HDFSサービスポートです。これらの設定には、Hadoop のデフォルトが反映されます。特に文言化されていない限り、他のアプリケーションサービスはデフォルトのポートでホストされます。詳細については、アプリケーションのプロジェクトドキュメントを参照してください。

YARN および のポート設定 HDFS
設定 ホスト名 / ポート

fs.default.name

デフォルト (hdfs://emrDeterminedIP:8020)

dfs.datanode.address

デフォルト (0.0.0.0:50010)

dfs.datanode.http.address

デフォルト (0.0.0.0:50075)

dfs.datanode.https.address

デフォルト (0.0.0.0:50475)

dfs.datanode.ipc.address

デフォルト (0.0.0.0:50020)

dfs.http.address

デフォルト (0.0.0.0:50070)

dfs.https.address

デフォルト (0.0.0.0:50470)

dfs.secondary.http.address

デフォルト (0.0.0.0:50090)

yarn.nodemanager.address

デフォルト (${yarn.nodemanager.hostname}:0)

yarn.nodemanager.localizer.address

デフォルト (${yarn.nodemanager.hostname}:8040)

yarn.nodemanager.webapp.address

デフォルト (${yarn.nodemanager.hostname}:8042)

yarn.resourcemanager.address

デフォルト (${yarn.resourcemanager.hostname}:8032)

yarn.resourcemanager.admin.address

デフォルト (${yarn.resourcemanager.hostname}:8033)

yarn.resourcemanager.resource-tracker.address

デフォルト (${yarn.resourcemanager.hostname}:8031)

yarn.resourcemanager.scheduler.address

デフォルト (${yarn.resourcemanager.hostname}:8030)

yarn.resourcemanager.webapp.address

デフォルト (${yarn.resourcemanager.hostname}:8088)

yarn.web-proxy.address

デフォルト (no-value)

yarn.resourcemanager.hostname

emrDeterminedIP

注記

用語emrDeterminedIPは、Amazon EMRコントロールプレーンによって生成される IP アドレスです。新しいバージョンでは、この規則は削除されています ( yarn.resourcemanager.hostname および fs.default.name 設定は除く)。

アプリケーションユーザー

アプリケーションでは、プロセスを独自のユーザーとして実行します。たとえば、Hive JVMsはユーザー として実行されhive、 MapReduce JVMs は として実行されますmapred。これを、次のプロセスステータスの例に示します。

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND hive 6452 0.2 0.7 853684 218520 ? Sl 16:32 0:13 /usr/lib/jvm/java-openjdk/bin/java -Xmx256m -Dhive.log.dir=/var/log/hive -Dhive.log.file=hive-metastore.log -Dhive.log.threshold=INFO -Dhadoop.log.dir=/usr/lib/hadoop hive 6557 0.2 0.6 849508 202396 ? Sl 16:32 0:09 /usr/lib/jvm/java-openjdk/bin/java -Xmx256m -Dhive.log.dir=/var/log/hive -Dhive.log.file=hive-server2.log -Dhive.log.threshold=INFO -Dhadoop.log.dir=/usr/lib/hadoop/l hbase 6716 0.1 1.0 1755516 336600 ? Sl Jun21 2:20 /usr/lib/jvm/java-openjdk/bin/java -Dproc_master -XX:OnOutOfMemoryError=kill -9 %p -Xmx1024m -ea -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -Dhbase.log.dir=/var/ hbase 6871 0.0 0.7 1672196 237648 ? Sl Jun21 0:46 /usr/lib/jvm/java-openjdk/bin/java -Dproc_thrift -XX:OnOutOfMemoryError=kill -9 %p -Xmx1024m -ea -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -Dhbase.log.dir=/var/ hdfs 7491 0.4 1.0 1719476 309820 ? Sl 16:32 0:22 /usr/lib/jvm/java-openjdk/bin/java -Dproc_namenode -Xmx1000m -Dhadoop.log.dir=/var/log/hadoop-hdfs -Dhadoop.log.file=hadoop-hdfs-namenode-ip-10-71-203-213.log -Dhadoo yarn 8524 0.1 0.6 1626164 211300 ? Sl 16:33 0:05 /usr/lib/jvm/java-openjdk/bin/java -Dproc_proxyserver -Xmx1000m -Dhadoop.log.dir=/var/log/hadoop-yarn -Dyarn.log.dir=/var/log/hadoop-yarn -Dhadoop.log.file=yarn-yarn- yarn 8646 1.0 1.2 1876916 385308 ? Sl 16:33 0:46 /usr/lib/jvm/java-openjdk/bin/java -Dproc_resourcemanager -Xmx1000m -Dhadoop.log.dir=/var/log/hadoop-yarn -Dyarn.log.dir=/var/log/hadoop-yarn -Dhadoop.log.file=yarn-y mapred 9265 0.2 0.8 1666628 260484 ? Sl 16:33 0:12 /usr/lib/jvm/java-openjdk/bin/java -Dproc_historyserver -Xmx1000m -Dhadoop.log.dir=/usr/lib/hadoop/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/usr/lib/hadoop