特定の Java 仮想マシンを使用するようにアプリケーションを設定
Amazon EMR は、リリースごとに、デフォルトの Java 仮想マシン (JVM) のバージョンが異なります。このページでは、さまざまなリリースやアプリケーションに対する JVM サポートについて説明します。
考慮事項
-
Amazon EMR リリース 5.0.0 以降の場合、デフォルトの Java 仮想マシン (JVM) は Java 8 です。
-
Amazon EMR リリース 6.9.0 以降の場合、Trino はデフォルトで Java 17 をサポートしています。Java 17 と Trino の詳細については、Trino のブログ、「Trino updates to Java 17
」を参照してください。 -
Amazon EMR リリース 6.12.0 以降の場合、一部のアプリケーションも Java 11 と 17 をサポートしています。アプリケーションでサポートされている Java バージョンについては、「Amazon EMR リリースガイド」を参照してください。Amazon EMR のクラスター内で実行可能なランタイムバージョンは 1 つのみであり、同じクラスターで、異なるランタイムバージョンを実行し、異なるノードまたはアプリケーションを稼働させることはできません。
ランタイムバージョンを選択する際には、次に示すアプリケーション固有の考慮事項に留意してください。
Java 設定に関する、アプリケーション固有の注意点 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
アプリケーション | Java の設定に関する注意点 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Spark |
Spark をデフォルト以外の Java バージョンで稼働させるには、Spark と Hadoop の両方を設定する必要があります。例については、「JVM をオーバーライドする」を参照してください。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Spark RAPIDS |
Spark 用に設定されている Java バージョンで RAPIDS を実行できます。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Iceberg |
Iceberg は、それを使用するアプリケーションの設定済み Java バージョンで稼働させることができます。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
差分 |
Delta は、それを使用するアプリケーションの設定済み Java バージョンで稼働させることができます。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Hudi |
Hudi は、それを使用するアプリケーションの設定済み Java バージョンで稼働させることができます。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[Hive] |
Hive の Java バージョンを 11 または 17 に設定するには、Hadoop の JVM 設定で、使用する Java バージョンを指定します。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HBase |
HBase の JVM を更新するには、 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Flink |
Flink の JVM を更新するには、 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Oozie |
Oozie が Java 11 または 17 で稼働するように構成するには、Oozie サーバーと Oozie LauncherAM ランチャー AM の設定を行い、クライアント側の実行ファイルとジョブ設定を変更します。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Pig | Pig は Java 8 のみをサポートしています。Hadoop で Java 11 または 17 を使用し、それと同じクラスターで Pig を稼働させることはできません。 |
JVM をオーバーライドする
Amazon EMR リリースの JVM 設定をオーバーライドするには (例えば、Amazon EMR リリース 6.12.0 を使用するクラスターで Java 17 を使用するなど)、JAVA_HOME
をその環境分類に設定します。この場合の環境分類は
であり、Flink を除くすべてのアプリケーションに適用されます。Flink の環境分類は application
-envflink-conf
です。Flink の Java ランタイムを設定する手順については、「Flink が Java 11 で実行されるよう設定する」を参照してください。
トピック
JVM 設定をオーバーライドし Apache Spark を使用する
Amazon EMR リリース 6.12 以降で Spark を使用し、クラスターモードで送信するドライバーを作成すると、そのドライバーは Java 8 を使用します。ただし、エグゼキューターが Java 11 または 17 を使用するよう環境を設定できます。Amazon EMR リリース 5.x より前のリリースで Spark を使用し、クラスターモードで送信するドライバーを作成すると、ドライバーは Java 7 を使用しますが、エグゼキューターが Java 8 を使用するよう環境を設定できます。
Spark の JVM をオーバーライドするには、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": {} }
JVM 設定をオーバーライドし Apache HBase を使用する
HBase で Java 11 が使用されるように設定するには、クラスターの起動時に次の設定を行います。
[ { "Classification": "hbase-env", "Configurations": [ { "Classification": "export", "Configurations": [], "Properties": { "JAVA_HOME": "/usr/lib/jvm/jre-11" } } ], "Properties": {} } ]
JVM 設定をオーバーライドし Apache Hadoop と Hive を使用する
次の例は、JVM をバージョン 17 に設定し、Hadoop と Hive を利用可能にする方法を示しています。
[ { "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 | デフォルト (値なし) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.resourcemanager.hostname | emrDeterminedIP |
注記
emrDeterminedIP
とは、Amazon EMR コントロールプレーンで生成された IP アドレスのことです。新しいバージョンでは、この規則は削除されています ( yarn.resourcemanager.hostname
および fs.default.name
設定は除く)。
アプリケーションユーザー
アプリケーションでは、プロセスを独自のユーザーとして実行します。たとえば、Hive JVM はユーザー hive
として、MapReduce JVM は 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