我是hadoop的新手。我启用了webhdfs并使用curl命令来获取主目录。

curl -i“http://172.16.18.50:9000/webhdfs/v1/?op=GETHOMEDIRECTORY”

但是得到的信息是:来自服务器的空回复。这是conf文件:

core-site.xml ----

<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://webHDFS0:9000</value>
   </property>

   <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/eins/hadoop-1.0.2/tmp</value>
   </property>
</configuration>

hdfs-site.xml ----
<configuration>
   <property>
      <name>dfs.replication</name>
      <value>2</value>
   </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>enabled</value>
    </property>
</configuration>

任何人都可以提出建议吗?

最佳答案

您正在尝试连接到NameNode IPC套接字(端口9000),而不是Web套接字(默认为50075)。尝试以下方法:

http://172.16.18.50:50075/webhdfs/v1/?op=GETHOMEDIRECTORY

另外,您在hdfs-site.xml中的配置需要使用true而不是enabled作为其值:

hdfs-site.xml ----
<configuration>
   <property>
      <name>dfs.replication</name>
      <value>2</value>
   </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>

要确认一切正常,请查看您的名称节点的日志,您应该看到类似以下内容的内容:
2012-05-22 06:23:42,176 INFO org.apache.hadoop.http.HttpServer: dfs.webhdfs.enabled = true
2012-05-22 06:23:42,177 INFO org.apache.hadoop.http.HttpServer: Added filter 'SPNEGO' (class=org.apache.hadoop.hdfs.web.AuthFilter)
2012-05-22 06:23:42,179 INFO org.apache.hadoop.http.HttpServer: addJerseyResourcePackage: packageName=org.apache.hadoop.hdfs.server.namenode.web.resources;org.apache.hadoop.hdfs.web.resources, pathSpec=/webhdfs/v1/*

目前,我认为您的回答是:
2012-05-22 06:11:20,676 INFO org.apache.hadoop.http.HttpServer: dfs.webhdfs.enabled = false

关于hadoop - 对webhdfs的http请求,但服务器的回复为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10672700/

10-13 07:28