Hadoop实践(三)---MapReduce作业运行全貌(YARN)

29 篇文章 6 订阅
23 篇文章 0 订阅

在Hadoop 2.0中 :

  • JobTracker被ResourceManager和Application Master替代
  • TaskTracker被NodeManager替代

1.Job.waitForCompletion()所以行动的开始

上述调用开启了本地主机与JobTracker(ResourceManager【负责作业调度和执行的各个方面】)的通信,执行与作业相关的操作时,JobTracker是主要的接口。JobTracker代替我们与NameNode通信,并对存储在HDFS中的数据相关操作进行管理

2.JobTracker接受输入数据,并确定如何将其分配给map任务

HDFS文件通常被切分为64MB的数据块

3.JobTracker确定了所需要map任务数,检查集群中的主机数(正在运行的TaskTracker(NodeManager)数,可并发执行的map任务数)

JobTracker查找输入数据块的位置【数据局部性优化】

4.每个TaskTracker开启独立的Java虚拟机(JVM)执行任务

若任务数超过集群能力,JobTracker维护一个挂起任务队列

5.JobTracker等待TaskTracker执行完成任务,交换心跳和状态消息,查找进度或问题的证据

6.mapper输入

使用正则表达式或者StringTokenizer类可以更好的断句

7.mapper输出reducer输入

在map和reduce之间存在shuffle阶段,combiner对数据进行早期聚合减少传输量

8.分块

每个mapper的输出分块,使其分别传输到相应的各个reducer,如果reducer失败,JobTracker重新执行发生故障的reduce任务

9.可选分块函数

org.apache.hadoop.mapreduce.lib.partition包中Hash Partition类中

10.关机

成功执行所有任务,JobTracker想客户端输出作业的最终状态和作业运行过程中比较重要的计数器集合

JobTracker:50030 端口

Application :8080 端口

HDFS :50070 端口

TIPS:Hadoop不能保证Combiner被应用到map输出的次数,可能不执行,可能执行一次或者多次,这取决于输出文件的大小和数量

仔细推敲Combiner类,避免逻辑错误,有时候在小样本测试中是正常的,大师在大业务群中就会有问题

Writable 接口

当数据要在网络上传输或从硬盘读写时,提供数据的序列化和反序列化机制。所以用作mapper和reducer输入或输出的数据类型都必须实现这个接口。

驱动类(Driver)

指定MapReduce作业的输入和输出的数据格式和结果

org.apache.hadoop.lib.input

FileInputFormat:抽象基类,作为任何基于文件输入的父类
SequenceFileInputFormat:高效的二进制文件格式
TextInputFormat:普通文本文件
LineRecordReader:对文本文件的默认实现(行号:键 内容:值)
SequenceFileRecordReader:从二进制文件SequnceFile读取键值对

org.apache.hadoop.mapreduce.output

FileOutputFormat:所以基于文件的OutputFormat的基类
NullOutputFormat:虚拟类,丢弃所有输出文件不做任何写入
SequenceFileOutputFormat:输出写入到二进制SequenceFile
TextOutputFormat:输出写入到普通文本文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值