hadoop --MapReduce

    MapReduce 分布式计算,移动计算而不是移动数据

    步骤:split - map - shuffle - reduce

    split : 把数据切成片段(计算框架自动做)。split块的大小与block相同。

    Map : 跟程序员编写的代码相关。(java程序)

    shuffle : 合并、排序

    reduce : reduce 的个数由程序决定。

    当map输出的数据个数较多,reduce 就多。

    shuffle 的工作大多由mapreduce框架自动完成。

    解决数据倾斜:更改partition规则,每一个partition对应一个reduce去执行。

    合并(Combine)的目的:减少map的输出


    MapReduce架构:

    主JobTracker:负责调度分配每一个子任务task运行于TaskTracker上,如果发现有失败的task就重新分配其任务到其他节点。每一个hadoop集群只有一个JobTracker。一般它运行于Master节点上。

    从TaskTracker:TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务,为了减少网络带宽TaskTracker最好运行在HDFS的DataNode上 (1.0版本有)

    Map(Mapper) + Reduce (Reducer)

    大量数据的并行计算:

    Map<key, value>    entry(条目)(key-value)

    key:行号,0为基址

    Map的输出是reduce的输入(数据格式一致,中间有shuffle)

    shuffle:洗牌、分组、排序


    

    


    

阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页