Hadoop中Mapper和Reducer是单独进程还是线程

Hadoop中的Mapper和Reducer是单独的进程,每个任务都会启动一个新的进程来运行。TaskTracker维护slots逻辑值,用于资源管理和任务调度,slots并非实际的线程。TaskRunner虽然继承自Thread,但实际是通过launchJvmAndWait方法启动单独的JVM进程来运行Mapper和Reducer任务,以隔离系统代码和用户代码,防止用户代码的错误影响TaskTracker。
摘要由CSDN通过智能技术生成
hadoop一个节点默认起两个map slot,请问这两个slot是多线程吗?
hadoop-0.21.0 源码中是这样的:
首先看看 org.apache.hadoop.mapred.TaskTracker 类:
两个类变量 maxMapSlots 和 maxReduceSlots:
maxMapSlots = conf.getInt(TT_MAP_SLOTS, 2);
maxReduceSlots = conf.getInt(TT_REDUCE_SLOTS, 2);
其中 public static final String TT_MAP_SLOTS = "mapreduce.tasktracker.map.tasks.maximum";
public static final String TT_REDUCE_SLOTS = "mapreduce.tasktracker.reduce.tasks.maximum";
类方法 initializeMemoryManagement() 中 ,根据 slots 来决定申请内存的大小
totalMemoryAllottedForTasks = maxMapSlots * mapSlotMemorySizeOnTT + maxReduceSlots * reduceSlotSizeMemoryOnTT;
类方法 TaskTracker.initialize() 中会起两个 TaskLauncher 线程,
分别负责启动 Mapper 和 Reduce 任务:
mapLauncher = new TaskLauncher(TaskType.MAP, maxMapSlots); 
reduceLauncher = new TaskLauncher(TaskType.REDUCE, maxReduceSlots);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值