IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Hadoop MapReduce学习笔记1

    admin发表于 2013-12-14 09:13:12
    love 0

    Hadoop MapReduce是比较经典的Master/Slave架构设计,系统主要包括两大模块:

    • JobTracker : 也就是我们所说的Master, 包括资源管理功能和作业调用功能;
    • TaskTracker : Slave模块,或者称为Worker,任务执行的节点;

    JobTracker中资源管理

    1. Hadoop以slot(槽位)代表计算资源,包括一定的内存和cpu核,具体细分为Map Slot和Reduce Slot,一个Task可占用多个slots;一个TaskTracker可划分多个slots(可配置), slots间的资源隔离目前hadoop做的不是太好;
    2. TaskTracker作为具体的执行单元,采用pull的的方式拉取任务,TaskTracker会定期的向JobTracker发送心跳,心跳的信息包括:我还活着,TaskTracker中运行的task的状态,如果有空闲的slots的话,向JobTracker表明我有空闲资源,JobTracker以心跳应答的方式向TaskTracker分配新的Task;
    3. JobTracker不会主动的和TaskTracker联系,只会接收心跳,然后再应答中向TaskTracker发送指令,如启动Task, 杀死Task;如果长时间未收到TaskTracker的心跳,表明TaskTracker可能已宕机,则会重启TaskTracker上已经分配的任务到其他的TaskTracker中;
    4. 任务的调度策略:默认简单任务调度策略FIFO,可用户自定义任务的调度策略;

    JobTracker中的作业控制

    1. Hadoop将作业分为三个层次:
      • 作业: 用户提交的作业,使用JobInProgress控制作业的运行状态,包含多个Tasks
      • Tasks: 包括Map Task 和 Reduce Task: 使用TaskInProgress控制任务的运行状态,可能包含多个Task Attempt.
      • Task Attempt : 某个Task的运行一次尝试,这里采用的类似two-phase commit的协议,因为jobtracker可能会针对同一Task启动两个Attempt(谁先执行完,使用谁的计算结果,并把另外一个杀掉),然后才会提交task attempt的结作为Task的计算结果,在TaskTracker中执行.
    2. JobTracker会从TaskTracker的心跳汇聚TaskAttempt的运行状态,然后调度未完成的task,分配给TaskTracker.

    最多留言日志

    • 利用War-Ftpd的漏洞深入解析缓冲去溢出
    • 修改wordpress最新评论的显示样式
    • jquery ajax 提交checkbox数组的方法
    • 关于我
    • 程序员眼中的编程语言


沪ICP备19023445号-2号
友情链接