Amazon EMR
Amazon EMR 版本指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

配置应用程序以使用特定 Java 虚拟机

Java 8 是使用 Amazon EMR 发行版 5.0.0 或更高版本创建的集群实例的默认 Java 虚拟机 (JVM)。要覆盖该 JVM 设置(例如,在使用 Amazon EMR 4.8.0 版本创建的集群中使用 Java 8),请为应用程序的环境分类 application-env 提供设置,以便为应用程序设置 JAVA_HOME。对于 Hadoop 和 Hive,例如:

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

对于 Spark,如果编写在集群模式下提交的驱动程序,该驱动程序将使用 Java 7。不过,设置环境可以确保执行程序使用 Java 8。为此,建议同时设置 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": {} } ]

服务端口

以下是 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.hostnamefs.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