Datanode容量为0kb

时间:2013-09-02 23:49:58

标签: hadoop mapreduce hdfs

我正试图弄脏Hadoop。我的问题可能很基本,请耐心等待。

我正在阅读 Hadoop:权威指南 ,并按照天气数据教程进行操作。在将数据复制到HDFS时,我收到以下错误:

13/09/02 16:34:35 ERROR hdfs.DFSClient: Failed to close file /user/bhushan/gz/home/bhushan/ncdc_data/ftp3.ncdc.noaa.gov/pub/data/noaa/1901.gz
org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/bhushan/gz/home/bhushan/ncdc_data/ftp3.ncdc.noaa.gov/pub/data/noaa/1901.gz could only be replicated to 0 nodes, instead of 1
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1920)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:783)
    at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:587)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1432)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1428)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1426)

我的设置肯定不对。当我看到report时,这就是我得到的:

bhushan@ubuntu:~/Documents/hadoop-1.2.1/bin$ hadoop dfsadmin -report
Configured Capacity: 0 (0 KB)
Present Capacity: 0 (0 KB)
DFS Remaining: 0 (0 KB)
DFS Used: 0 (0 KB)
DFS Used%: �%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0

-------------------------------------------------
Datanodes available: 0 (0 total, 0 dead)

3个配置文件如下(全部按照本书):

HD​​FS-site.xml中:

<?xml version="1.0"?>
<!-- hdfs-site.xml -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

核心-site.xml中:

<?xml version="1.0"?>
<!-- core-site.xml -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost/</value>
</property>
</configuration>

mapred-site.xml中:

<?xml version="1.0"?>
<!-- mapred-site.xml -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:8021</value>
</property>
</configuration>

我多次格式化HDFS,但没有帮助。

我是否需要明确指定某处的HDFS大小?从书中可以看出:

  

数据节点不参与初始格式化过程,因为   namenode管理所有文件系统的元数据和数据节点   可以动态加入或离开集群。出于同样的原因,你   不需要说明要创建多大的文件系统,因为这是   由集群中的datanode数量决定,可以是   文件系统格式化很久之后,根据需要增加了。

1 个答案:

答案 0 :(得分:3)

我认为你的DataNode进程没有运行。我猜你正在研究Pseudo集群。运行“jps”命令并确保DataNode进程正在运行并持续一段时间,如4到5分钟。如果DataNode正在运行或在几分钟内消失,则配置存在一些问题。您可以尝试以下解决方案。

停止群集。删除DataNode持久性目录。您必须使用hdfs-site.xml中的“dfs.data.dir”属性对其进行配置。如果尚未配置,则它将使用Linux用户临时目录。找到该目录并删除。然后再次启动集群。尝试再次复制文件,它应该可以工作。