Hadoop任务分配

Hadoop任务分配,hadoop,task,Hadoop,Task,我对Hadoop任务分配感到困惑。假设我们有5个输入数据D1、D2、D3、D4、D5,那么我们有5个作业J1、J2、J3、J4、J5,作业J1的输入数据是D1,依此类推。现在,如果D1被拆分为4个块,这些块沿着数据中心分布,那么J1也被拆分为任务(映射和减少),那么J1有多少映射和减少任务?如何保存数据位置?这是否意味着mapTask1只需要D1的一个数据块?你能给我一个很好的解释吗?如果D1作为4个块存储在HDFS中,并且你用来读取文件的输入格式可以将文件拆分(例如gz压缩文件是不可拆分的),

我对Hadoop任务分配感到困惑。假设我们有5个输入数据D1、D2、D3、D4、D5,那么我们有5个作业J1、J2、J3、J4、J5,作业J1的输入数据是D1,依此类推。现在,如果D1被拆分为4个块,这些块沿着数据中心分布,那么J1也被拆分为任务(映射和减少),那么J1有多少映射和减少任务?如何保存数据位置?这是否意味着mapTask1只需要D1的一个数据块?你能给我一个很好的解释吗?

如果D1作为4个块存储在HDFS中,并且你用来读取文件的输入格式可以将文件拆分(例如gz压缩文件是不可拆分的),那么对于使用D1作为输入的作业,你将得到4个映射任务

您可以通过修改
mapred.min.split.size
mapred.max.split.size
配置属性来增加/减少映射任务的数量(同样假设您的输入文件是可拆分的,并且您的输入格式也支持它)

至于数据位置,提交作业时,从名称节点获取输入文件(D1)的块位置,为运行作业而创建的映射任务保留此信息(D1,块0,位于节点E1中,称为“拆分”信息)

当作业跟踪器安排您的任务时,它将检查哪些任务跟踪器具有空闲的映射槽,然后确定(如果可能)您的作业的哪些任务具有拆分,其输入数据块是任务跟踪器的“本地”

reduce任务的数量由您自行配置