假设hadoop系统中有一个节点有8 8GB内存可用。
如果任务跟踪器和数据节点消耗2 2GB,并且每个任务所需的内存是200MB,那么可以启动多少个map和reduce?
8-2 =6 6GB
因此,6144MB/200MB = 30.72
因此,总共将启动30个map和reduce任务。
我是对的还是我漏掉了什么?
发布于 2017-04-27 15:20:04
映射器和减法器的数量不是由可用的资源决定的。您必须通过调用setNumReduceTasks()在代码中设置reducers的数量。
对于映射器的数量,它更复杂,因为它们是由Hadoop设置的。默认情况下,每个输入拆分大约有一个map任务。你可以通过改变默认的块大小,记录读取器,输入文件的数量来调整它。
您还应该在hadoop配置文件中设置并发运行的map任务和reduce任务的最大数量,以及分配给每个任务的内存。最后两个配置是基于可用资源的配置。请记住,map和reduce任务在您的CPU上运行,因此您实际上受到可用内核数量的限制(一个内核不能同时运行两个任务)。
This guide可能会为您提供更多详细信息。
发布于 2018-11-06 01:54:02
并发任务的数量不是仅仅基于节点上的可用内存来决定的。这也取决于内核的数量。如果你的节点有8个vcore,而你的每个任务占用1个核心,那么一次只能运行8个任务。
https://stackoverflow.com/questions/43632080
复制相似问题