hadoop学习笔记之Map-Reduce
2015-08-25 00:04
369 查看
Map-Reduce的工作机制:
a、编写好一个Map-Reduce程序,运行作业程序。
b、JobClient向JobTracker申请一个作业ID,
c、JobClient将作业所需要的资源,复制到HDFS系统中。
d、c、JobClient提交作业
e、JobTracker初始化作业。
f、JobTracker向nameNode询问,决定这些任务在哪些机器上跑。
有关的数据在哪些文件里,这些文件保存在哪些节点的数据块中。
(程序要和所要运行的作业资源在一起)
根据taskTracker与JobTracker之间的心跳,知道哪些task可以参与到本次作业中来。
如:taskTracker必须是活着的,Tracker中是否有其他作业在做。
确定哪些taskTracker
g、taskTracker和JobTracker保持心跳,以确定taskTracker是否正常。
h、taskTracker从HDFS中将相关代码、资源等获取到本地。
i、架设java虚拟机
j、开始工作。
k、taskTracker将结果写入本地硬盘(这个是中间结果不写入HDFS)
任务执行优化
a、推测式执行:当jobTracker发现有任务拖后腿了,就会额外启动相应的备份任务。当哪个先执行完了,就将另一个kill掉
缺点:当问题产生的原因是因为代码问题,而不是机器性能问题时,这种机制反而会使得集群的性能下降。
解决方案:可以在mapred-site.xml中配置关闭推测式执行。
b、重用JVM
java之所以慢,最大的原因是JVM启动慢,为了避免反复启动多个JVM,可以配置单个JVM运行的最大任务数。
c、忽略模式
有的时候,节点的数据损坏了(hadoop中错误是常态)。任务在读取数据失败2次后,会把数据位置告诉jobtracker,jobtracker在重新启动该任
务并且在遇到所记录的坏数据时直接跳过。此配置默认是关闭的。用SkipBadRecord打开。
错误处理机制:硬件故障
a、硬件故障是只jobtracker故障或者tasktracker故障。
b、jobtracker是单点的,若发生单点故障则hadoop无法处理。选择稳定的系统作为jobtracker.
c、jobtracker通过心跳(周期1分钟)信号了解tasktracker是否发生故障或者负载过高。
d、jobtracker将发生故障的tasktracker从任务节点中移除。
e、若故障节点移除时,有map任务正在执行并且没有完成,则jobtracker会要求其他节点重新执行未完成的map任务。
f、若故障节点移除时,有reduce任务正在执行并且没有完成,则jobtracker会要求其他节点继续(不是重新执行,为什么呢?)执行未完成的reduce任务。
错误处理机制:任务失败
a、由于代码层面出现故障,如死循环等。
b、jvm自动退出,向tasktracker进程发送错误信息,并将错误信息写入日志。
c、tasktracker在监听到任务退出,或者长时间没有收到信息时,则会判定该任务失败。将任务计数-1,并通过心跳信号告知jbtracker任务失败。
d、jobtracker会将失败的任务重新放入调度队列中重新分配执行,任务也有可能被分配给原来错误的那个节点执行。
e、如果某个任务失败次数超过一定值(默认4次,怎么设置?),则该任务将不再被执行,同时此次作业宣告失败。
a、编写好一个Map-Reduce程序,运行作业程序。
b、JobClient向JobTracker申请一个作业ID,
c、JobClient将作业所需要的资源,复制到HDFS系统中。
d、c、JobClient提交作业
e、JobTracker初始化作业。
f、JobTracker向nameNode询问,决定这些任务在哪些机器上跑。
有关的数据在哪些文件里,这些文件保存在哪些节点的数据块中。
(程序要和所要运行的作业资源在一起)
根据taskTracker与JobTracker之间的心跳,知道哪些task可以参与到本次作业中来。
如:taskTracker必须是活着的,Tracker中是否有其他作业在做。
确定哪些taskTracker
g、taskTracker和JobTracker保持心跳,以确定taskTracker是否正常。
h、taskTracker从HDFS中将相关代码、资源等获取到本地。
i、架设java虚拟机
j、开始工作。
k、taskTracker将结果写入本地硬盘(这个是中间结果不写入HDFS)
任务执行优化
a、推测式执行:当jobTracker发现有任务拖后腿了,就会额外启动相应的备份任务。当哪个先执行完了,就将另一个kill掉
缺点:当问题产生的原因是因为代码问题,而不是机器性能问题时,这种机制反而会使得集群的性能下降。
解决方案:可以在mapred-site.xml中配置关闭推测式执行。
b、重用JVM
java之所以慢,最大的原因是JVM启动慢,为了避免反复启动多个JVM,可以配置单个JVM运行的最大任务数。
c、忽略模式
有的时候,节点的数据损坏了(hadoop中错误是常态)。任务在读取数据失败2次后,会把数据位置告诉jobtracker,jobtracker在重新启动该任
务并且在遇到所记录的坏数据时直接跳过。此配置默认是关闭的。用SkipBadRecord打开。
错误处理机制:硬件故障
a、硬件故障是只jobtracker故障或者tasktracker故障。
b、jobtracker是单点的,若发生单点故障则hadoop无法处理。选择稳定的系统作为jobtracker.
c、jobtracker通过心跳(周期1分钟)信号了解tasktracker是否发生故障或者负载过高。
d、jobtracker将发生故障的tasktracker从任务节点中移除。
e、若故障节点移除时,有map任务正在执行并且没有完成,则jobtracker会要求其他节点重新执行未完成的map任务。
f、若故障节点移除时,有reduce任务正在执行并且没有完成,则jobtracker会要求其他节点继续(不是重新执行,为什么呢?)执行未完成的reduce任务。
错误处理机制:任务失败
a、由于代码层面出现故障,如死循环等。
b、jvm自动退出,向tasktracker进程发送错误信息,并将错误信息写入日志。
c、tasktracker在监听到任务退出,或者长时间没有收到信息时,则会判定该任务失败。将任务计数-1,并通过心跳信号告知jbtracker任务失败。
d、jobtracker会将失败的任务重新放入调度队列中重新分配执行,任务也有可能被分配给原来错误的那个节点执行。
e、如果某个任务失败次数超过一定值(默认4次,怎么设置?),则该任务将不再被执行,同时此次作业宣告失败。
相关文章推荐
- 详解HDFS Short Circuit Local Reads
- Hadoop_2.1.0 MapReduce序列图
- 使用Hadoop搭建现代电信企业架构
- 单机版搭建Hadoop环境图文教程详解
- hadoop常见错误以及处理方法详解
- hadoop 单机安装配置教程
- hadoop的hdfs文件操作实现上传文件到hdfs
- hadoop实现grep示例分享
- MongoDB中的MapReduce简介
- MongoDB学习笔记之MapReduce使用示例
- MongoDB中MapReduce编程模型使用实例
- Apache Hadoop版本详解
- MapReduce中ArrayWritable 使用指南
- Java函数式编程(七):MapReduce
- linux下搭建hadoop环境步骤分享
- java连接hdfs ha和调用mapreduce jar示例
- hadoop client与datanode的通信协议分析
- hadoop中一些常用的命令介绍
- Hadoop单机版和全分布式(集群)安装