数据本地化策略和Job的执行流程

一、数据本地化策略

  1. 当JobTracker访问资源的时候需要向NameNode请求数据
  2. JobTracker获取到数据的描述信息,根据描述信息对数据进行了切片(InputSplit),然后将切片发给不同Mapper来执行
  3. MapTask在TaskTracker上执行,在执行的时候需要获取实际的数据
  4. TaskTracker需要去访问DataNode,为了节省带宽资源,所以往往将DataNode和TaskTracker放在同一个节点上 — 数据本地化策略
  5. 为了减少网络资源的消耗,往往还会将切片的大小和实际的Block的大小设置的相同

二、job执行流程

  1. run job:客户端提交一个mr的jar包给JobClient。提交方式:hadoop jar …
    a. 做job环境信息的收集,比如各个组件类,输入输出的kv类型等,检测是否合法
    b. 检测输入输出的路径是否合法
  2. JobClient通过RPC和ResourceManager进行通信,返回一个存放jar包的地址(HDFS)和jobId。jobID是全局唯一的,用于标识该job
  3. client将jar包写入到HDFS当中(path = hdfs上的地址 + jobId)
  4. 开始提交任务(任务的描述信息,不是jar, 包括jobid,jar存放的位置,配置信息等等)
  5. JobTracker进行初始化任务
  6. 读取HDFS上的要处理的文件,开始计算输入切片,每一个切片对应一个MapperTask。注意,切片是一个对象,存储的是这个切片的数据描述信息;切块是文件块(数据块),里面存储的是真正的文件数据
  7. TaskTracker通过心跳机制领取任务(任务的描述信息)。切片一般和切块是一样的,即在实际开发中,切块和切片认为是相同的。在领取到任务之后,要满足数据本地化策略
  8. 下载所需的jar,配置文件等。体现的思想:移动的是运算,而不是数据
  9. TaskTracker启动一个java child子进程,用来执行具体的任务(MapperTask或ReducerTask)
  10. 将结果写入到HDFS当中
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼鱼大头鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值