1

由于 Hadoop 疯狂的数据分布和管理,我面临一个奇怪的问题。由于非 DFS 的使用,我的一两个数据节点已完全填满,而其他数据节点几乎是空的。有没有办法让非 dfs 的使用更加统一?[我已经尝试过使用 dfs.datanode.du.reserved 但这也无济于事]

问题示例:我有 16 个数据节点,每个节点有 10 GB 空间。最初,每个节点都有大约。7 GB 可用空间。当我开始处理 5 GB 数据的作业(复制因子 = 1)时,我希望该作业能够成功完成。可惜!当我监视作业执行时,我突然看到一个节点空间不足,因为非 dfs 使用量约为 6-7 GB,然后它重试,另一个节点现在空间不足。我真的不想有更高的重试次数,因为这不会给出我正在寻找的性能指标。

知道如何解决此问题。

4

2 回答 2

2

听起来您的输入没有被正确拆分。您可能想要选择不同的 InputFormat 或编写自己的 InputFormat 以更好地适应您的数据集。还要确保所有节点都列在 NameNode 的从属文件中。
另一个问题可能是严重的数据倾斜——当大部分数据流向一个 reducer 时。您可能需要创建自己的分区器来解决它。

于 2012-09-12T20:46:57.330 回答
0

据我所知,您不能限制非 dfs 的使用。我建议确定究竟是什么输入文件(或其拆分)导致了问题。然后你可能会找到解决方案。
Hadoop MR 是在假设单个拆分处理可以使用单节点资源(如 RAM 或磁盘空间)完成的情况下构建的。

于 2012-09-12T21:39:45.417 回答