zoukankan      html  css  js  c++  java
  • Hadoop学习笔记(八)MapReduce深入分析

    MapReduce深入分析

    Hadoop中MapReduce提供的主要是离线端的数据分析。根据其原理,可以将其分为两个阶段
    1. Map
    2. Reduce阶段

    Hadoop在MapReduce设计方面主要有两个重要思想:

    1. 化整为零,分而治之。
    2. 数据加工终端化。数据在终端加工要比数据传输后再加工节省资源。

    输入输出分析

    InputFormat

    InputSplit是Hadoop定义的用以 传送每个单独的map的数据,InputSplit存储一个分片长度和一个记录数据位置的数组。当数据传送给map时,map 将分片信息传送到InputFormat。InputFormat.RecordReader( )生成RecordReader,RecorderReader.createKey( ).createValue( )生成map可以处理的< k, v >。

    InputFormat子类主要有

    • BaileyBorweinPlouffe.BbpinputFormat
    • ComposableInputFormat
    • CompositeInputFormat
    • DBInputFormat
    • DisSum.Macine.AbstractInputFormat
    • FileInputFormat *

    其中FileInputFormat是Hadoop默认的输入方式,其子类包括
    - CombineFileInputFormat
    - KeyValueTextInputFormat
    - NLineInputFormat
    - SequenceFileInputFormat
    - TeraInputFormat
    - TextInputFormat

    TextInputFormat以及其子类数据记录格式为

    OutputFormat

    OutputFormat类似于InputFormat,默认为TextOutputFormat,
    输出格式为

    Mapper 工作方式

    Mapper通常用来处理输入格式转化、投影、过滤等。例如在Hadoop-examples.wordcount,Mapper将输入分割之后的TextInputFormat进行本地化的数据清洗和加工

    MapReduce优化

    1. 任务调度。将任务优先分配给空闲的机器,将map任务分配给InputSplit所在的机器,减少I/O消耗。
    2. 数据处理和InputSplit。MapReduce擅长处理少量的大数据,处理大量小数据时会消耗较多时间。因此可以在MapReduce任务前对数据进行整合,从而提升MapReduce执行效率。Map任务通常来说,最佳运行时间在1min左右比较合适。可以通过设置Map输入数据的大小调解Map运行时间。FileInputFormat会处理每个block后将其作为一个InputSplit。合理调解block块大小也可以提升执行效率。合理设置Map任务数量也可以提升性能
    3. Map和Reduce任务数量。Map/Reduce任务槽是这个集群能同时运行Map/Reduce任务的最大数量。如:一个1200机器集群,每台机器最多同时运行10个map任务,5个reduce任务,这个集群map任务槽为1200,Recue任务槽为600。可以通过设置Reduce任务数量均衡负载,Reduce任务数量提高,资源利用率提高;Reduce任务数量降低,任务响应效率提高。
    4. combine。MapReduce处理后的文件输出在本地。*combine可以在本地将中间数据*合并,可以极大降低网络I/O消耗。job.setCombinerClass(combine.class)
    5. 压缩。计算机处理能力>网络传输效率。可以有效减少网络上数据传输量。
    6. 自定义Comparator.可以二进制比较,省区数据序列化和反序列化时间。

    MapReduce一般用于处理一些较为简单的数据,若处理过程复杂,有必要考虑Pig,Hive或Cascading。

  • 相关阅读:
    移动端HTML5音频与视频问题及解决方案
    git did not exit cleanly
    移动端事件对象touches的误区
    原创:CSS3技术-雪碧图自适应缩放与精灵动画方案
    H5+JS+CSS3 综合应用
    深入理解CSS3 Animation 帧动画
    在 MacOS 中使用 multipass 安装 microk8s 环境
    [译] Design patterns for container-based distributed systems
    Sangmado 公共基础类库
    Redola.Rpc 集成 Consul 服务发现
  • 原文地址:https://www.cnblogs.com/cunchen/p/9464200.html
Copyright © 2011-2022 走看看