我在计算卸载方面的工作或非常独特的解决方案,我可以用c ++ / java中的自定义编程很好地做到这一点,但我可以在hadoop或任何搜索中完成相同的搜索其他框架?我搜索了很多,但没有什么值得我发现的。
我们知道使用 Map 和 Reduce 阶段进行的正常hadoop作业,其中两者都在具有几乎相同功率的机器上运行,对于地图阶段,我们不需要电源,可以卸载到像RaspberryPI这样的便宜的商品硬件,而减少应该在强大的机器上运行。
那么是否可以隔离这两个阶段并让它们识别机器?
答案 0 :(得分:1)
在每个节点上,您可以创建mapred-site.xml文件以覆盖任何默认设置。这些设置仅适用于此节点(任务跟踪器)。
然后,每个节点都可以指定
的值在您只想运行reduce任务的节点上,将最大map任务设置为0,反之亦然。
答案 1 :(得分:0)
Reducer作业可以在不同的节点上运行,但在强大的机器上运行Reducer作业有什么好处呢?
您可以为Map和Reduce节点使用相同的商品硬件配置。
微调地图减少作业是一个比较复杂的部分,具体取决于
1)您的输入尺寸
2)Mapper完成Map作业所需的时间
3)设置Map&的数量减速机工作
等
除了Gerhard建议的配置更改外,请查看一些微调性能的提示Job
适当调整地图数量和减少任务数量的提示
诊断/症状:
1)每个map或reduce任务在不到30-40秒内完成。
2)大型作业未使用群集中的所有可用插槽。
3)在安排了大多数映射器或缩减器之后,一个或两个仍处于待定状态,然后单独运行。
调整作业的地图数量和减少任务非常重要。一些提示。
1)如果每项任务的时间少于30-40秒,则减少任务数量。
2)如果作业输入的输入超过1TB,请考虑将输入数据集的块大小增加到256M甚至512M,以便任务数量更小。
3)只要每个任务运行至少30-40秒,就将映射器任务的数量增加到集群中映射器插槽数量的某个倍数。
4)对于大多数工作,不要安排太多的减少任务。 reduce任务的数量应该等于或略小于集群中reduce槽的数量。
如果您仍希望使用不同的配置,请查看此question和Wiki link
修改强>
在1.x中配置 mapred.map.tasks(或在2.x版本中配置mapreduce.job.maps)& 在1.x中的mapred.reduce.tasks(或2.x版本中的mapreduce.job.reduces)相应地在您的节点中,具体取决于硬件配置。在更好的硬件节点中配置更多减速器。但在配置这些参数之前,请确保已经处理了INPUT大小,映射处理时间等