0

我希望为使用 java 的 hadoop 框架启用 UseNUMA 标志。

问题是我不知道hadoop框架调用了java命令的哪些地方。

所以,我写了 java 命令的别名/etc/bash.bashrc

alias java='java -XX:+UseNUMA'

这是正确的方法吗?

我怎么知道标志是否打开?我的意思是可以使用以下命令进行检查

# java -XX:+PrintFlagsFinal | grep UseNUMA

但是如何检查hadoop是否正在使用它?

4

1 回答 1

0

在 bashrc 中创建别名没有用。Hadoop 使用环境变量 JAVA_HOME 来定位 java home,java 命令取自路径 ${JAVA_HOME}/bin/java。因此,即使您在 .bashrc 中创建别名,也将毫无用处。

要在 hadoop 守护进程启动期间指定 JVM 标志,请使用配置文件 /hadoop-env.sh 在环境变量中指定标志。

export HADOOP_NAMENODE_OPTS="-XX:+UseNUMA -Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS"
export HADOOP_SECONDARYNAMENODE_OPTS="-XX:+UseNUMA -Dcom.sun.management.jmxremote $HADOOP_SECONDARYNAMENODE_OPTS"
export HADOOP_DATANODE_OPTS="-XX:+UseNUMA -Dcom.sun.management.jmxremote $HADOOP_DATANODE_OPTS"
export HADOOP_BALANCER_OPTS="-XX:+UseNUMA -Dcom.sun.management.jmxremote $HADOOP_BALANCER_OPTS"
export HADOOP_JOBTRACKER_OPTS="-XX:+UseNUMA -Dcom.sun.management.jmxremote $HADOOP_JOBTRACKER_OPTS"

在执行诸如hadoop,yarn,mapred之类的co时在客户端启用相同的功能,使用以下环境变量

export HADOOP_OPTS="-XX:+UseNUMA"

要检查标志是否启用,可以使用以下命令。

ps aux | grep hadoop
于 2014-04-10T07:12:10.217 回答