我有一个复制因子为3的三节点hadoop集群。
每个系统的存储目录是/app/hadoop/tmp/dfs/。
每个数据节点系统的硬盘容量为221gb。
hdfs的有效数据为62gb,复制62*3=186gb。
现在的问题是,尽管660 gb群集上只有186 gb的数据,但我的存储空间仍然不足:hdfs显示了可用空间的巨大差异:
数据节点1=7.47 gb
数据节点2=17.7 gb
数据节点3=143 gb
为了确保hadoop本地存储使用这些空间,我在每个datanode上运行了这个命令。对于datanode1
du -h --max-depth=1 /app/hadoop/tmp/
63G /app/hadoop/tmp/dfs
139G /app/hadoop/tmp/mapred
201G /app/hadoop/tmp/
对于datanode2
du -h --max-depth=1 /app/hadoop/tmp/
126G /app/hadoop/tmp/mapred
62G /app/hadoop/tmp/dfs
188G /app/hadoop/tmp/
对于datanode3 du-h——最大深度=1/app/hadoop/tmp/dfs/62g/app/hadoop/tmp/dfs/data 62g/app/hadoop/tmp/dfs/
这里datanode1使用了201gb的存储空间。我试过负载均衡器,但它显示集群是平衡的。这是输出。
start-balancer.sh
starting balancer, logging to /usr/lib/hadoop-0.20/logs/hadoop-ocpe-balancer-blrkec241933d.out
Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved
The cluster is balanced. Exiting...
Balancing took 622.0 milliseconds
最近我的一个datanode坏了几天,在修复之后这个问题出现了。如何平衡负载?
1条答案
按热度按时间ou6hu8tu1#
您对磁盘空间的分析包括mapreduce暂存目录空间(/app/hadoop/tmp/mapred路径),它们位于hdfs之外,主要是作业完成时清除的临时数据。dfs空间(/app/hadoop/tmp/dfs)似乎与预期的使用大小一致。
因此,您的磁盘空间不会被datanodes占用,而是被tasktracker占用,重新启动它们会强制清除这些目录。