【问题标题】:Why doesn't change of ports work in pseudo distributed mode for hadoop 2.6.0?为什么在 hadoop 2.6.0 的伪分布式模式下更改端口不起作用?
【发布时间】:2016-02-04 11:49:16
【问题描述】:

我正在尝试更改 NameNode 使用的端口(默认端口 50070)

网站: https://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/SingleCluster.html

好像表示使用的配置是etc/hadoop/core-site.xml

我在 core-site.xml 中放置了以下内容

<property>
    <name>dfs.http.address</name>
    <value>80</value>
</property>

但它不会改变namenode使用的端口。

我已经尝试将 core-site.xml 放在我的 hadoop 文件夹下的几个位置,包括 conf/ 和 etc/hadoop,但它仍然没有更改 NameNode 的端口。

我用过这个网站:http://tecadmin.net/setup-hadoop-2-4-single-node-cluster-on-linux/

作为hadoop 2.6.0单节点设置的指南。

我将不胜感激。

更新:

我在 conf/hdfs-site.xml 中做了以下条目

<property>
<name>dfs.namenode.http-address</name>
<value>http://localhost:80</value>
</property>

这会导致以下名称节点日志错误:

************************************************************/
2016-02-05 07:24:27,752 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: registered UNIX signal handlers for [TERM, HUP, INT]
2016-02-05 07:24:27,755 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: createNameNode []
2016-02-05 07:24:28,064 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
2016-02-05 07:24:28,139 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
2016-02-05 07:24:28,140 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system started
2016-02-05 07:24:28,141 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: fs.defaultFS is hdfs://localhost:9000
2016-02-05 07:24:28,142 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: Clients are to use localhost:9000 to access this namenode/service.
2016-02-05 07:24:28,265 INFO org.apache.hadoop.hdfs.DFSUtil: Starting Web-server for hdfs at: http://localhost:80
2016-02-05 07:24:28,297 INFO org.mortbay.log: Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
2016-02-05 07:24:28,300 INFO org.apache.hadoop.http.HttpRequestLog: Http request log for http.requests.namenode is not defined
2016-02-05 07:24:28,308 INFO org.apache.hadoop.http.HttpServer2: Added global filter 'safety' (class=org.apache.hadoop.http.HttpServer2$QuotingInputFilter)
2016-02-05 07:24:28,328 INFO org.apache.hadoop.http.HttpServer2: Added filter 'org.apache.hadoop.hdfs.web.AuthFilter' (class=org.apache.hadoop.hdfs.web.AuthFilter)
2016-02-05 07:24:28,329 INFO org.apache.hadoop.http.HttpServer2: addJerseyResourcePackage: packageName=org.apache.hadoop.hdfs.server.namenode.web.resources;org.apache.hadoop.hdfs.web.resources, pathSpec=/webhdfs/v1/*
2016-02-05 07:24:28,361 INFO org.apache.hadoop.http.HttpServer2: HttpServer.start() threw a non Bind IOException
java.net.SocketException: Permission denied
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Net.java:433)
        at sun.nio.ch.Net.bind(Net.java:425)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
        at org.mortbay.jetty.nio.SelectChannelConnector.open(SelectChannelConnector.java:216)
        at org.apache.hadoop.http.HttpServer2.openListeners(HttpServer2.java:886)
        at org.apache.hadoop.http.HttpServer2.start(HttpServer2.java:827)
        at org.apache.hadoop.hdfs.server.namenode.NameNodeHttpServer.start(NameNodeHttpServer.java:142)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.startHttpServer(NameNode.java:703)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:590)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:762)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:746)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1438)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1504)
2016-02-05 07:24:28,363 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Stopping NameNode metrics system...
2016-02-05 07:24:28,363 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system stopped.
2016-02-05 07:24:28,364 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system shutdown complete.
2016-02-05 07:24:28,364 FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode.
java.net.SocketException: Permission denied
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Net.java:433)
        at sun.nio.ch.Net.bind(Net.java:425)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
        at org.mortbay.jetty.nio.SelectChannelConnector.open(SelectChannelConnector.java:216)
        at org.apache.hadoop.http.HttpServer2.openListeners(HttpServer2.java:886)
        at org.apache.hadoop.http.HttpServer2.start(HttpServer2.java:827)
        at org.apache.hadoop.hdfs.server.namenode.NameNodeHttpServer.start(NameNodeHttpServer.java:142)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.startHttpServer(NameNode.java:703)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:590)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:762)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:746)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1438)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1504)
2016-02-05 07:24:28,365 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1
2016-02-05 07:24:28,366 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at lx5557/196.1.241.3
************************************************************/

我尝试了几种不同的设置值,包括:仅端口值、localhost:port、http://localhost:port、0.0.0.0:port 和使用主机名

到目前为止还不能让它工作。

【问题讨论】:

  • 更改配置后是否重启了集群?
  • 是的。停止/启动-dfs/yarn.sh
  • "简短回答:你不能(使用端口 80)。低于 1024 的端口只能由 root 打开" -- Source

标签: apache hadoop redhat


【解决方案1】:

您更改了错误的设置。更改

的设置
dfs.namenode.http-address

您将在 hdfs-site.xml 配置文件中找到该设置。

【讨论】:

  • 我现在修改了 core-site.xml 以反映该属性名称。但是,它仍然没有改变 NameNode 端口。我已经反弹了集群(stop/start-dfs/yarn.sh)
  • @user55570 - core-site.xml 不包含该属性。这个答案是说你需要在 hdfs-site.xml 中设置它
  • 更新了 OP。我已更改 hdfs-site.xml 中的 dfs.namenode.http-address 设置,但出现错误。
【解决方案2】:

hdfs-site.xml 中,这是default value

将端口号更改为您想要的。

<property>
    <name>dfs.namenode.http-address</name>
    <value>0.0.0.0:50070</value>
</property>

我将解释您在阅读这些说明时的困惑,为什么它不是核心站点。

fs.defaultFS 值已更改,因为您提供的链接被描述为...

默认文件系统的名称。一个 URI,其方案和权限决定了 FileSystem 的实现。 uri 的方案确定命名 FileSystem 实现类的配置属性 (fs.SCHEME.impl)。 uri 的权限用于确定文件系统的主机、端口等。

其默认值为file:///,表示集群中节点的本地文件系统。

说明告诉您将fs.defaultFS 更改为hdfs://localhost:9000,因为您要将文件系统更改为HDFS,而不是本地文件系统。

tl;dr

dfs.http.address 甚至不是core-site.xml 中的配置设置,并且您链接到的页面没有提及它,所以不,它“似乎没有表明”更改该文件。

【讨论】:

  • 更新了 OP。我已更改 hdfs-site.xml 中的 dfs.namenode.http-address 设置,但出现错误。
  • 权限被拒绝是正常的。如果您阅读日志,它会执行您想要的Starting Web-server for hdfs at: http://localhost:80 。不能使用 80 端口,因为服务不是以 sudo 启动的(另外,不要那样做,否则会搞砸)
  • 运行它 sudo 并且它工作。耶!谢谢!但你说那会搞砸?
  • 在生产集群中,权限将对任何人和所有人开放,因此您的集群可能会被破坏并且没有人可以阻止它。
  • 啊。幸运的是,这只是我的测试环境。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
  • 2012-09-26
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 2012-08-25
相关资源
最近更新 更多