在启动hadoop的时候查看一个datanode没有起来,查看log发现
ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.net.BindException: Problem binding to /0.0.0.0:50010 : Address already in use
50010端口是datanode的监听端口
50030 mapred.job.tracker.http.address
描述:JobTracker administrative web GUI JOBTRACKER的HTTP服务器和端口
50070 dfs.http.address
描述:NameNode administrative web GUI NAMENODE的HTTP服务器和端口
50010 dfs.datanode.address
描述:DataNode control port (each DataNode listens on this port and registers it with the NameNode on startup) DATANODE控制端口,主要用于DATANODE初始化时向NAMENODE提出注册和应答请求
50020 dfs.datanode.ipc.address
描述:DataNode IPC port, used for block transfer DATANODE的RPC服务器地址和端口
50060 mapred.task.tracker.http.address
描述:Per TaskTracker web interface TASKTRACKER的HTTP服务器和端口
50075 dfs.datanode.http.address
描述:Per DataNode web interface DATANODE的HTTP服务器和端口
50090 dfs.secondary.http.address
因为我们的服务器上配有多个hadoop,因此都使用默认端口是有问题的,那只能使用非默认端口了
在这种情况下,最好的方法就是在配置环境时把所有的端口配置都进行修改。
在hadoop 0.20版本会涉及到3个配置文件:
core-site.xml:
1: <property>2: <name>fs.default.name</name>3: <value>hdfs://master:9100</value>4: <description>5: 为默认hdfs文件访问URI
6: </description>7: </property>
hdfs-site.xml
1: <property>2: <name>dfs.datanode.address</name>3: <value>0.0.0.0:50011</value>4: <description>5: 默认为50010, 是datanode的监听端口
6: </description>7: </property>8: <property>9: <name>dfs.datanode.http.address</name>10: <value>0.0.0.0:50076</value>11: <description>12: 默认为50075,为datanode的http server端口
13: </description>14: </property>15: <property>16: <name>dfs.datanode.ipc.address</name>17: <value>0.0.0.0:50021</value>18: <description>19: 默认为50020, 为datanode的ipc server端口
20: </description>21: </property>
mapred-site.xml
1: <property>2: <name>mapred.job.tracker</name>3: <value>master:9101</value>4: <description>5: job tracker运行的位置和端口
6: </description>7: </property>8:
9: <property>10: <name>mapred.task.tracker.http.address</name>11: <value>0.0.0.0:50061</value>12: <description>13: 默认为50061, 是task tracker的http server端口
14: </description>15: </property>
以上端口都配置为和其他人不冲突的端口,然后启动hadoop就可以顺利启动了。
以及如何关闭安全模式:error: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot delete /tmp/hadoop-*/mapred/system. Name node is in safe mode.
请不要急,NameNode会在开始启动阶段自动关闭安全模式,然后启动成功。如果你不想等待,可以运行:
bin/hadoop dfsadmin -safemode leave 强制结束。