我试图通过在dfs.name.dir
中的hdfs-site.xml
中添加卷的位置来向Hadoop伪分布式节点添加新卷,我可以在此位置看到锁定文件 - 但是尝试尽我所能,似乎当我加载文件(使用配置单元)这些位置很难使用(即使锁文件和一些子文件夹出现..所以Hadoop显然可以访问它们)。当主卷接近空间不足时,我得到以下异常:
Failed with exception java.io.IOException: File /tmp/hive-ubuntu/hive_2011-02-24_15-39-15_997_1889807000233475717/-ext-10000/test.csv could only be replicated to 0 nodes, instead of 1
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1417)
at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:643)
有关如何向Hadoop添加新卷的任何指示? FWIW我正在使用EC2。
答案 0 :(得分:1)
向数据节点添加新磁盘/容量时,Hadoop无法保证磁盘的负载均衡(例如:它不会在具有更多可用空间的驱动器上放置更多块)。我解决这个问题的最好方法是增加复制因子(例如:从2到3)。
hadoop fs -setrep 3 -R /<path>
在名称节点上观察“未复制的块”报告。一旦达到0,减少复制因子(例如:从3到2)。这将从系统中随机删除应该平衡本地节点的副本。
hadoop fs -setrep 2 -R /<path>
它不会100%平衡,但它应该比以前好多了。这在Hadoop wiki中有所涉及。如果您正在运行伪分布式,并且没有其他数据节点,那么平衡器脚本将无法帮助您。
答案 1 :(得分:1)
根据FAQ:
,您可以做一些事情我首先尝试运行#4,然后运行#2。