Map-Worker(Mapper)的数量取决于输入文件的Input-splits的数量。
所以例如:200 个输入拆分(它们是逻辑的)=200 映射器 。
映射器节点是如何选择的?
Mapper 是本地数据节点,如果不可能,则将数据传输到空闲节点并在该节点上调用 Mapper。
Reducer 的数量可以由用户设置(Job.setNumberOfReducer(Number)),否则它也将根据 Mapper 的中间输出的拆分数量。
其他问题的答案
Q1>so in one node can run for example 10 mappers in parallel at one time, or these mappers are processed sequentially?
Ans:顺序(最大(活动/运行)映射器数=DataNodes数)
Q2>how are chosen the nodes where are reducers invoked?
答:
- 中间键值存储在本地文件系统中而不是在 HDFS 中,然后将其复制(HDFS)到 Reducer Node 。
- 单个 Mapper 会将 Data 提供给多个 reducer。所以数据的局部性是不可能的,因为特定减速器的数据来自许多节点,如果不是来自所有节点。
所以 Reducer 是(或至少应该)在 Bandwidth of a Node 上选择的,记住以上几点
Q3>if we need reducers count bigger then overall nodes count (for example 90 reducers in 50 nodes cluster), are the reducers on one node processed in parallel or sequentially?
Ans :顺序(最大数量(活动/运行)Reducer = 数据节点数)