특정 Java 가상 머신을 사용하도록 애플리케이션 구성 - 아마존 EMR

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

특정 Java 가상 머신을 사용하도록 애플리케이션 구성

Amazon EMR 릴리스에는 다양한 기본 Java 가상 머신 (JVM) 버전이 있습니다. 이 페이지에서는 다양한 릴리스 및 애플리케이션에 대한 JVM 지원을 설명합니다.

고려 사항

애플리케이션에 지원되는 Java 버전에 대한 자세한 내용은 Amazon EMR 릴리스 가이드의 애플리케이션 페이지를 참조하십시오.

  • Amazon은 클러스터에서 하나의 런타임 EMR 버전만 실행할 수 있으며, 동일한 클러스터의 다양한 런타임 버전에서 다른 노드 또는 애플리케이션을 실행하는 것은 지원하지 않습니다.

  • Amazon EMR 7.x의 경우, 자바 17을 지원하는 애플리케이션의 경우 기본 자바 가상 머신 (JVM) 은 자바 17입니다. 단, Apache Livy는 예외입니다. 지원되는 애플리케이션 JDK 버전에 대한 자세한 내용은 Amazon Release Guide의 해당 EMR 릴리스 페이지를 참조하십시오.

  • Amazon EMR 7.1.0부터 Flink는 기본적으로 Java 17을 지원하며 Java 17로 설정되어 있습니다. 다른 버전의 Java 런타임을 사용하려면 의 설정을 재정의하십시오. flink-conf Java 8 또는 Java 11을 사용하도록 Flink를 구성하는 방법에 대한 자세한 내용은 Java 11에서 실행되도록 Flink 구성을 참조하십시오.

  • Amazon EMR 5.x 및 6.x의 경우 기본 자바 가상 머신 (JVM) 은 자바 8입니다.

    • Amazon EMR 릴리스 6.12.0 이상의 경우 일부 애플리케이션은 Java 11 및 17도 지원합니다.

    • Amazon EMR 릴리스 6.9.0 이상의 경우 Trino는 자바 17을 기본으로 지원합니다. Trino를 사용하는 Java 17에 대한 자세한 내용은 Trino 블로그에서 Trino updates to Java 17을 참조하세요.

런타임 버전을 선택할 때는 다음과 같은 애플리케이션별 고려 사항에 주의합니다.

애플리케이션별 Java 구성 참고 사항
애플리케이션 Java 구성 참고 사항

Spark

기본이 아닌 Java 버전으로 Spark를 실행하려면 Spark 및 Hadoop을 모두 구성해야 합니다. 예를 보려면 다음을 재정의하십시오. JVM 을 참조하세요.

  • 기본 인스턴스 프로세스의 Java 런타임을 업데이트하도록 spark-env에서 JAVA_HOME을 구성합니다. 예를 들어, spark-submit, spark-shell, Spark 기록 서버가 이에 해당합니다.

  • 하둡 구성을 수정하여 Spark 실행기의 Java 런타임을 업데이트하고 YARN ApplicationMaster

스파크 RAPIDS

Spark용으로 구성된 Java RAPIDS 버전으로 실행할 수 있습니다.

Iceberg

Iceberg를 사용하는 애플리케이션의 구성된 Java 버전으로 Iceberg를 실행할 수 있습니다.

델타

Delta를 사용하는 애플리케이션의 구성된 Java 버전으로 Delta를 실행할 수 있습니다.

Hudi

Hudi를 사용하는 애플리케이션의 구성된 Java 버전으로 Hudi를 실행할 수 있습니다.

Hadoop

JVMHadoop용으로 업데이트하려면 수정하십시오. hadoop-env 예를 보려면 다음을 재정의하십시오. JVM 을 참조하세요.

Hive

Hive용 Java 버전을 11 또는 17로 설정하려면 하둡 JVM 설정을 사용하려는 Java 버전으로 구성하십시오.

HBase

양식을 업데이트하려면 수정하십시오JVM. HBase hbase-env 기본적으로 Amazon은 사용자가 설정을 재정의하지 않는 한 Hadoop JVM 구성을 HBase JVM 기반으로 EMR 설정합니다. hbase-env 예를 보려면 다음을 재정의하십시오. JVM 을 참조하세요.

Flink

JVMFlink용으로 업데이트하려면 수정하십시오. flink-conf 기본적으로 Amazon은 사용자가 설정을 재정의하지 않는 한 하둡의 JVM 구성을 JVM 기반으로 Flink를 EMR 설정합니다. flink-conf 자세한 내용은 Java 11과 함께 실행하도록 Flink 구성 단원을 참조하십시오.

Oozie

Java 11 또는 17에서 실행하도록 Oozie를 구성하려면 Oozie 서버, Oozie LauncherAM Launcher AM을 구성하고 클라이언트 측 실행 파일 및 작업 구성을 변경합니다. Java 17에서 실행하도록 EmbeddedOozieServer를 구성할 수도 있습니다. 자세한 내용은 Oozie용 자바 버전 구성 단원을 참조하십시오.

Pig

Pig는 Java 8만 지원합니다. Java 11 또는 17을 Hadoop과 함께 사용하고 동일한 클러스터에서 Pig를 실행할 수 없습니다.

다음을 재정의하십시오. JVM

Amazon 릴리스 JVM 설정을 재정의하려면 (예: Amazon EMR EMR 릴리스 6.12.0을 사용하는 클러스터에서 Java 17을 사용하는 경우) Flink를 제외한 모든 애플리케이션에 application-env 대한 환경 분류에 JAVA_HOME 설정을 제공하십시오. Flink의 경우 환경 분류는 flink-conf입니다. Flink를 사용하여 Java 런타임을 구성하는 단계는 Java 11과 함께 실행하도록 Flink 구성 섹션을 참조하세요.

Apache Spark로 설정을 재정의하십시오. JVM

Amazon EMR 릴리스 6.12 이상에서 Spark를 사용할 때 클러스터 모드에서 제출용 드라이버를 작성하면 드라이버는 Java 8을 사용하지만 실행자가 Java 11 또는 17을 사용하도록 환경을 설정할 수 있습니다. 또한 5.x 미만의 Amazon EMR 릴리스에서 Spark를 사용하고 클러스터 모드에서 제출용 드라이버를 작성하는 경우 드라이버는 Java 7을 사용합니다. 하지만 실행기에서 Java 8을 사용하도록 환경을 설정할 수 있습니다.

JVMSpark용 를 재정의하려면 하둡과 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": {} }

JVMApache로 설정을 재정의하십시오. HBase

Java HBase 11을 사용하도록 구성하려면 클러스터를 시작할 때 다음 구성을 설정하면 됩니다.

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

Apache 하둡 및 Hive로 JVM 설정을 재정의합니다.

다음 예제는 Hadoop 및 Hive에서 버전 JVM 17로 설정하는 방법을 보여줍니다.

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

서비스 포트

다음은 서비스 포트입니다YARN. HDFS 이러한 설정은 하둡 기본값을 반영합니다. 다른 방식으로 문서화되지 않은 한, 기타 애플리케이션 서비스는 기본 포트에서 호스팅됩니다. 자세한 내용은 애플리케이션의 프로젝트 설명서를 참조하십시오.

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.hostnamefs.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