欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-14 10:05:13
...

在测试集群上拉了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>

 

问题解决!