hadoop 存储目录使用的空间超过 HDFS 上的总数据

标签 hadoop mapreduce hdfs

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

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

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

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

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

datanode1 =7.47 GB

datanode2 =17.7 GB

datanode3 =143GB

为了确保这些空间被 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/应用程序/hadoop/tmp/dfs/数据 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

最近我的一个数据节点宕机了几天,修复后出现了这个问题。 如何平衡负载?

最佳答案

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

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

关于hadoop 存储目录使用的空间超过 HDFS 上的总数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12478045/

相关文章:

hadoop - 减少步骤似乎停留在 99%

hadoop - HBase 随机写入是如何工作的

hadoop - 多个映射后跟一个使用 Hadoop 和 HBase 的 reduce

hadoop - 如何在代码中找到 hadoop 作业的作业 ID?

hadoop - hadoop.tmp.dir 的 VERSION 文件有什么用

java - Mapreduce:词典顺序。文本和整数类型

java - 将减少的数据拆分为 Hadoop 中的输出和新输入

hadoop - 多个输入文件Mapreduce Wordcount示例分别完成

hadoop - Hive managed table drop 不会删除 HDFS 上的文件。任何解决方案?

hadoop - HDFS安全模式问题