由于Hadoop疯狂的数据分发和管理,我遇到了一个奇怪的问题。由于非DFS使用,我的一个或两个数据节点完全填满,而其他数据节点几乎为空。有没有办法让非dfs的使用更均匀? [我已经尝试过使用dfs.datanode.du.reserved但这也无济于事]
概率示例:我有16个数据节点,每个节点有10 GB空间。最初,每个节点都有大约。 7 GB可用空间。当我开始处理5 GB数据的作业(复制因子= 1)时,我希望作业能够成功完成。可惜!当我监视作业执行时,我突然看到一个节点空间不足,因为非dfs使用大约是6-7 GB,然后重试,另一个节点现在空间不足。我真的不希望有更高的重试次数,因为这不会给出我正在寻找的性能指标。
任何想法如何解决这个问题。
答案 0 :(得分:2)
听起来您的输入没有正确分割。您可能希望选择不同的InputFormat或编写自己的InputFormat以更好地适合您的数据集。还要确保NameNode的从属文件中列出了所有节点
另一个问题可能是严重的数据偏差 - 大部分数据转向一个减速器的情况。您可能需要创建自己的分区程序来解决它。
答案 1 :(得分:0)
据我所知,你不能限制非dfs的使用。我建议确定究竟输入文件(或其拆分)导致问题的原因。然后你可能会找到解决方案。
Hadoop MR假设可以使用单个节点资源(如RAM或磁盘空间)完成单个拆分处理。