单独启动datanode和tasktracker遇到的小问题

在测试集群上拉了5台机器,自己另外搭建了一个小集群,不影响原来的集群。

1.规划,jobtracker一台,namenode一台,datanode三台,secondNamenode和网关机一台

2.新建用户lxw,并打通无密码ssh

3.安装版本0.20.2

完成之后先启动namenode和jobtracker,接着启动一台datanode时候报错

2012-05-28 17:35:23,625 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.net.SocketException: Permission denied
        at sun.nio.ch.Net.bind(Native Method)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:126)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)
        at org.mortbay.jetty.nio.SelectChannelConnector.open(SelectChannelConnector.java:216)
        at org.apache.hadoop.http.HttpServer.start(HttpServer.java:425)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:375)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:216)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1283)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1238)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1246)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1368)

查看源代码,DataNode.startDataNode,

该处涉及到三个属性值,

String address = 
      NetUtils.getServerAddress(conf,
                                "dfs.datanode.bindAddress", 
                                "dfs.datanode.port",
                                "dfs.datanode.address");

觉得是新建的用户没有权限在绑定dfs.datanode.address默认端口(1004),于是修改hdfs-site.xml

添加或修改下面三个属性:

<property>
  <name>dfs.datanode.address</name>
  <value>0.0.0.0:9999</value>
</property>
<property>
  <name>dfs.datanode.http.address</name>
  <value>0.0.0.0:9998</value>
</property>
<property>
  <name>dfs.datanode.ipc.address</name>
  <value>0.0.0.0:9997</value>
</property>

因为机器上还运行着测试集群的tasktracker和datanode,有些默认端口已经被占用,这时候需要修改端口号,比如tasktracker对应的:

<property>
  <name>mapred.task.tracker.http.address </name>
  <value>0.0.0.0:9996</value>
</property>

问题解决!

相关推荐