我一直在阅读有关Hadoop Map/Reduce的一些文献,一般主题似乎是:Hadoop Jobs是I/O密集型的(例如:使用Map/Reduce进行排序).
是什么让这些工作I/O密集(鉴于Hadoop将计算推送到数据)?示例:为什么在Hadoop I/O密集型中进行排序?
我的直觉:似乎在地图阶段之后,中间对被发送到reducer.这会导致巨大的I/O吗?
Hadoop用于对大量数据执行计算.您的工作可能受IO(您称之为I/O密集型),CPU和网络资源的限制.在Hadoop使用的经典案例中,您正在对大量输入数据执行本地计算,同时返回相对较小的结果集,这使得您的任务比CPU和网络密集型更加IO密集,但它在很大程度上取决于作业本身.这里有些例子:
您可以参考本指南进行集群的初始调整那么为什么排序是IO密集型的呢?首先,您从磁盘读取数据.接下来,在排序时,映射器生成的数据量与读取的数量相同,意味着它很可能不适合内存并且应该溢出到磁盘.然后它被转移到减速器并再次溢出到磁盘.然后它由reducer处理并再次刷新到磁盘.虽然排序所需的CPU相对较小,特别是如果排序键是一个数字,并且可以很容易地从输入数据中解析.
归档时间: |
|
查看次数: |
2361 次 |
最近记录: |