quick and dirty
hadoop-env.sh:
#replace eth1:0 with your NIC / alias bind_ip=$(/sbin/ifconfig eth1:0 | grep 'inet addr:' | cut -d: -f2 | awk '{print $1}') export BIND_OPTS="-Dlocal.bind.address=${bind_ip}" # Command specific options appended to HADOOP_OPTS when specified export HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS $BIND_OPTS" export HADOOP_SECONDARYNAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_SECONDARYNAMENODE_OPTS $BIND_OPTS" export HADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_DATANODE_OPTS $BIND_OPTS" export HADOOP_BALANCER_OPTS="-Dcom.sun.management.jmxremote $HADOOP_BALANCER_OPTS $BIND_OPTS" export HADOOP_JOBTRACKER_OPTS="-Dcom.sun.management.jmxremote $HADOOP_JOBTRACKER_OPTS $BIND_OPTS"
<property> <name>dfs.secondary.http.address</name> <value>${local.bind.address}:50090</value> <description> The secondary namenode http server address and port. If the port is 0 then the server will start on a free port. </description> </property> <property> <name>dfs.datanode.address</name> <value>${local.bind.address}:50010</value> </property> <property> <name>dfs.datanode.http.address</name> <value>${local.bind.address}:50075</value> </property> <property> <name>dfs.datanode.ipc.address</name> <value>${local.bind.address}:50020</value> </property> <property> <name>dfs.http.address</name> <value>${local.bind.address}:50070</value> </property> <property> <name>dfs.datanode.https.address</name> <value>${local.bind.address}:50475</value> </property> <property> <name>dfs.https.address</name> <value>${local.bind.address}:50470</value> </property>