首先,做NN到DN的免登陆。在做DN到NN的免登陆,因为datanode使用core-site.xml中配置的fs.defaultFS属性来向NN发送心跳包,从而帮助NN建立内存命名空间,保持自己的存活。
/etc/hosts 文件中,各个节点必须使用完整ip值,不可使用127.0.0.1等的特殊地址,否则NN在绑定本地rpc的时候可能会绑定到错误的ip,从而DN访问不到。一个符合规则的hosts文件内容可能如下
IP |
主机名 |
10.8.3.10 |
MASTER |
10.8.3.11 |
slave1 |
10.8.3.12 |
slave2 |
在/etc/profile 中,确保以下环境变量存在且正确
变量名 |
格式 |
说明 |
JAVA_HOME |
/usr/local/java/jdkXXX.XXX |
|
JRE_HOME |
${JAVA_HOME} |
|
CLASSPATH |
.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH |
错误会报找不到jar包 |
HADOOP_HOME |
/home/mirancy/hadoopXXX.XXX |
|
HADOOP_MAPARED_HOME |
${HADOOP_HOME} |
|
HADOOP_COMMON_HOME |
${HADOOP_HOME} |
|
HADOOP_HDFS_HOME |
${HADOOP_HOME} |
|
YARN_HOME |
${HADOOP_HOME} |
|
HADOOP_CONF_DIR |
${HADOOP_HOME}/etc/hadoop |
|
HDFS_CONF_DIR |
${HADOOP_HOME}/etc/hadoop |
|
YARN_CONF_DIR |
${HADOOP_HOME}/etc/hadoop |
|
不要忘记用source /etc/profile 重新加载
hadoop-env.sh
export JAVA_HOME=/usr/local/java/jdkXXX.XXX
core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://MASTER:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/mirancy/hadoop2.6/tmp</value>
</property>
完整参数和 *参数变化* 参照[HADOOP官网](http://hadoop.apache.org/docs/r2.6.3/hadoop-project-dist/hadoop-common/core-default.xml)
hdfs-site.xml
<property>
<name>dfs.nameode.name.dir</name>
<value>/home/mirancy/hadoop2.6/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/mirancy/hadoop2.6/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
完整参数和 *参数变化* 参照[HADOOP官网](http://hadoop.apache.org/docs/r2.6.3/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml)
yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>Master:18032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>Master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>Master:18031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>Master:18033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>Master:18088</value>
</property>
注意事项
- 多查看logs文件夹下的*.log文件,注意ERROR和WARN消息。
在配置中一共遇到这几个异常
- NN的 clusterID 和 DN的 clusterID 不同,这是由于多次namenode -format造成的。修改NN的VERSION文件或者删掉core-site.xml中的hadoop.tmp.dir目录重新格式化可解决问题。
- 端口XXX in use。如字面而言的端口被占用。使用netstat -apn | grep 50010 查杀端口占用。
- 使用web查看50070无节点,使用dfsadmin -report 无数据,而DN的HDFS守护进程却正常启动,查看log发现显示problem connecting to server XXXX。这时:
若XXXX为127.0.0.1,请按照上面所说修改hosts。
否则,先使用root账户(必须的)/etc/init.d/iptables stop
关闭NN的防火墙。重启集群后若还是不行,重新格式化NN试试。
- hdfs.DFSClient:Exception in createBlockOutputStream java.net.NoRouteToHostException:No route to host。关闭DN的防火墙即可。
- 常用 hdfs dfsadmin -report 和 jps 查看是否联通和进程启动情况。