配置Hadoop集群时,采用科学方法设置集群的映射器/缩减器数量?
答案 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尽力在本地存在数据的节点上运行映射任务,以优化网络和节点间通信延迟。由于输入数据被分成多个部分并馈送到不同的映射任务,因此希望在单个节点上将所有馈送到该映射任务的数据都可用。因为HDFS仅保证大小等于其块大小(64M)的数据。如果存在于一个节点上,则建议/提倡将分割大小等于HDFS块大小,以便映射任务可以利用此数据本地化。因此,每个映射器有64M的数据。如果我们看到一些映射器在很短的时间内运行,请尝试降低映射器的数量并让它们运行更长时间一分钟左右。
没有。 reducers的数量应该略小于集群中的reduce插槽数量(插槽的概念在配置集群时在作业/任务跟踪器属性中进行预配置),以便所有reducers在一个wave中完成并生成充分利用集群资源。