我一直在阅读关于Hadoop Map/Reduce的一些文章,而一般的主题似乎是:Hadoop Jobs是I/O密集型的(例如:使用Map/Reduce排序)。为什么Hadoop被认为是I/O密集型的?
什么使得这些工作I/O密集型(鉴于Hadoop推动计算到数据的事实)? 示例:为什么在Hadoop I/O密集型中排序?
我的直觉:似乎在映射阶段之后,中间对被发送给reducer。这是否导致了巨大的I/O?
我一直在阅读关于Hadoop Map/Reduce的一些文章,而一般的主题似乎是:Hadoop Jobs是I/O密集型的(例如:使用Map/Reduce排序)。为什么Hadoop被认为是I/O密集型的?
什么使得这些工作I/O密集型(鉴于Hadoop推动计算到数据的事实)? 示例:为什么在Hadoop I/O密集型中排序?
我的直觉:似乎在映射阶段之后,中间对被发送给reducer。这是否导致了巨大的I/O?
Hadoop用于对大量数据执行计算。您的工作可能受到IO(资源密集型,称为I/O密集型),CPU和网络资源的限制。在使用Hadoop的经典案例中,您正在对大量输入数据执行本地计算,同时返回相对较小的结果集,这使得您的任务比CPU和网络密集型更具IO密集度,但它非常依赖于作业本身。以下是一些示例:
您可以参考this guide为集群 的初始调整,为什么排序是IO密集型的?首先,您从磁盘读取数据。接下来,在排序映射器生成的数据量与读取的数据量相同时,意味着它很可能不适合内存,并且应该传播到磁盘。然后它被转移到reducer并再次溢出到磁盘。然后它被减速器处理并再次冲刷到磁盘。而排序所需的CPU相对较小,特别是如果排序关键字是数字并且可以从输入数据轻松解析。
是的,数据写入磁盘。 – 2014-09-03 20:21:00
有计算密集的情况吗?传统的排序算法在一般意义上需要大量的计算。 – 2014-09-03 20:24:59
是的,当你没有从磁盘读取(很多)的东西;-) – 2014-09-03 20:25:58