MapReduce初步

最基本的海量数据分流思想

• 传统Hash,最基本的划分方法

  – 如何将大数据、流量均分到N台服务器

  – 找到合理的key,hash(key)尽量分布均匀

  – hash(key)mod N == 0 分到 第0台,

  – hash(key)mod N == i 分到 第i台

  – hash(key)mod N == N-1 分到 第N-1台

• 随机划分

• 一致性Hash:支持动态增长,更高级的划分方法

MapReduce基本思想:分治思想

• MapReduce映射

  – 分:map

    • 把复杂的问题分解为若干“简单的 任务”

  – 合:reduce

MapReduce计算框架- 执行流程

 

MapReduce编程模型

• 借鉴函数式的编程方式

• 用户只需要实现两个函数接口:

   • Map

    (in_key, in_value) -> (out_key, intermediate_value) list

  • Reduce

    (out_key, intermediate_value list) ->out_value list

MapReduce实现架构

• 两个重要的进程

  – JobTracker

     • 主进程,负责接收客户作业提交,调度任务到作节点上运行,并提供诸如监控工作节点状态及任务进度等 管理功能,一个MapReduce集群有一个jobtracker,一般运行在可靠的硬件上。

     • tasktracker是通过周期性的心跳来通知jobtracker其当前的健康状态,每一次心跳包含了可用的map和 reduce任务数目、占用的数目以及运行中的任务详细信息。Jobtracker利用一个线程池来同时处理心跳和 客户请求。

   – TaskTracker

     • 由jobtracker指派任务,实例化用户程序,在本地执行任务并周期性地向jobtracker汇报状态。在每一个工 作节点上永远只会有一个tasktracker

 

posted @ 2019-10-26 14:52  xd_xumaomao  阅读(106)  评论(0编辑  收藏  举报