假设hadoop系统中的节点可以使用8GB内存。
如果任务跟踪器和数据节点消耗2GB,并且每个任务所需的内存是200MB,那么可以启动多少map和reduce?
8-2 = 6GB
所以,6144MB / 200MB = 30.72
因此,将启动30个总map和reduce任务。
我是对的还是我错过了什么?
答案 0 :(得分:1)
映射器和缩减器的数量不是由可用资源决定的。您必须通过调用params
来设置代码中的reducer数量。
对于映射器的数量,它更复杂,因为它们是由Hadoop设置的。默认情况下,每个输入拆分大致有一个映射任务。您可以通过更改默认块大小,记录阅读器,输入文件数来调整它。
您还应该在hadoop配置文件中设置最大数量的map任务并减少并发运行的任务,以及分配给每个任务的内存。最后两个配置是基于可用资源的配置。请记住,在CPU上运行map和reduce任务,因此实际上受可用内核数量的限制(一个内核无法同时运行两个任务)。
This guide可以为您提供更多详细信息。
答案 1 :(得分:0)
并发任务的数量并不仅仅基于节点上可用的内存来确定。它也取决于核心数。如果您的节点有8个vcore,并且每个任务都占用1个core,则一次只能运行8个任务。