hadoop学习笔记之Map-Reduce


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次,怎么设置?),则该任务将不再被执行,同时此次作业宣告失败。
   


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值