为什么Hadoop被认为是I/O密集型的?
我一直在阅读一些关于Hadoop Map/Reduce的文献,总的主题似乎是:Hadoop作业是I/O密集型的(例如:使用Map/Reduce进行排序) 是什么使得这些工作I/O密集(考虑到Hadoop将计算推送到数据上的事实)? 示例:为什么Hadoop I/O中的排序是密集型的为什么Hadoop被认为是I/O密集型的?,hadoop,mapreduce,Hadoop,Mapreduce,我一直在阅读一些关于Hadoop Map/Reduce的文献,总的主题似乎是:Hadoop作业是I/O密集型的(例如:使用Map/Reduce进行排序) 是什么使得这些工作I/O密集(考虑到Hadoop将计算推送到数据上的事实)? 示例:为什么Hadoop I/O中的排序是密集型的 我的直觉:似乎在映射阶段之后,中间对被发送到还原器。这是造成巨大I/O的原因吗 Hadoop用于对大量数据执行计算。您的作业可能受到IO(您称之为I/O密集型)、CPU和网络资源的限制。在使用Hadoop的典型案例中
我的直觉:似乎在映射阶段之后,中间对被发送到还原器。这是造成巨大I/O的原因吗 Hadoop用于对大量数据执行计算。您的作业可能受到IO(您称之为I/O密集型)、CPU和网络资源的限制。在使用Hadoop的典型案例中,您对大量输入数据执行本地计算,同时返回相对较小的结果集,这使得您的任务比CPU和网络密集型任务更需要IO,但这在很大程度上取决于作业本身。以下是一些例子:
那么为什么排序是IO密集型的呢?首先,从磁盘读取数据。其次,在排序中,映射程序生成的数据量与读取的数据量相同,这意味着它很可能无法放入内存,应该溢出到磁盘。然后它被转移到减速器,并再次溢出到磁盘。然后它被reducer处理并再次刷新到磁盘。而排序所需的CPU相对较小,特别是如果排序键是一个数字,可以很容易地从输入数据中解析出来。是的,并且数据被写入磁盘。是否存在计算密集型的情况?一般意义上的传统排序算法需要大量计算。是的,当您不从磁盘读取(大量)内容时;-)答案是:视情况而定。MR(通常)迭代所有数据。这是否是(相对)IO密集型取决于您打算进行的计算量。