1

我有一个复制因子= 3 的三节点 hadoop 集群。

每个系统的存储目录/app/hadoop/tmp/dfs/

每个datanode系统的硬盘容量为221GB。

HDFS的有效数据为62GB,复制62*3= 186GB。

现在的问题是,即使我在 660 GB 集群上只有 186 GB 的数据,我的存储空间也不足:HDFS 显示可用空间存在巨大差异:

数据节点1 =7.47 GB

数据节点2 =17.7 GB

数据节点3 =143 GB

为了确保这些空间被 hadoop 本地存储使用,我在每个数据节点上运行了这个命令。对于数据节点1

du -h --max-depth=1 /app/hadoop/tmp/
63G     /app/hadoop/tmp/dfs
139G    /app/hadoop/tmp/mapred
201G    /app/hadoop/tmp/

对于数据节点2

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 --max-depth=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宕机了几天,修复后出现了这个问题。如何平衡负载?

4

1 回答 1

0

您对磁盘空间的分析包括 MapReduce 暂存目录空间(/app/hadoop/tmp/mapred 路径),它位于 HDFS 之外,并且大部分是在作业完成时清除的临时数据。DFS 空间 (/app/hadoop/tmp/dfs) 似乎与您预期的使用大小一致。

因此,您的磁盘空间不会被 DataNodes 占用,而是被 TaskTracker 占用 - 重新启动它们会强制清除这些目录。

于 2012-12-31T00:17:09.970 回答