配置Hadoop集群时应该设置多少个映射器/缩减器?

时间:2012-04-05 15:09:11

标签: map hadoop reduce

配置Hadoop集群时,采用科学方法设置集群的映射器/缩减器数量?

4 个答案:

答案 0 :(得分:5)

没有公式。这取决于你有多少核心和多少内存。映射器的数量+减速器的数量一般不应超过核心数量。请记住,该计算机还运行任务跟踪器和数据节点守护程序。一般的建议是更多的映射器而不是减速器。如果我是你,我会用一些合理的数据运行我的典型工作来试试。

答案 1 :(得分:1)

引自" Hadoop The Definite Guide,3rd edition",page 306

  

因为MapReduce作业正常   受I / O约束,拥有比处理器更多的任务更有意义   利用。

     

超额订阅量取决于作业的CPU利用率   你跑,但一个好的经验法则是一个到两个之间的因子   任务(计算map和reduce任务)比处理器。

上面引用的处理器相当于一个逻辑核心。

但这只是理论上的,并且很可能每个用例都不同于另一个,需要执行一些测试。但这个数字可以作为测试的良好开端。

答案 2 :(得分:0)

也许你应该看看reducer延迟加载,它允许reducers在需要时稍后启动,所以基本上,可以增加map槽数。尽管如此,对此并不太了解,但似乎很有用。

答案 3 :(得分:0)

取自Hadoop Gyan-My blog

  

没有。映射器的数量根据前面描述的数据位置原则决定。数据位置原则:Hadoop尽力在本地存在数据的节点上运行映射任务,以优化网络和节点间通信延迟。由于输入数据被分成多个部分并馈送到不同的映射任务,因此希望在单个节点上将所有馈送到该映射任务的数据都可用。因为HDFS仅保证大小等于其块大小(64M)的数据。如果存在于一个节点上,则建议/提倡将分割大小等于HDFS块大小,以便映射任务可以利用此数据本地化。因此,每个映射器有64M的数据。如果我们看到一些映射器在很短的时间内运行,请尝试降低映射器的数量并让它们运行更长时间一分钟左右。

     

没有。 reducers的数量应该略小于集群中的reduce插槽数量(插槽的概念在配置集群时在作业/任务跟踪器属性中进行预配置),以便所有reducers在一个wave中完成并生成充分利用集群资源。