美文网首页
大数据--MapReduce总结

大数据--MapReduce总结

作者: 泡泡坪 | 来源:发表于2018-12-18 12:05 被阅读2次

一、本质

MapReduce是一个基于分治思想,用于处理海量数据的分布式计算框架。

二、mapreduce解决了什么问题

1.数据分布式存储-HDFS

2.作业调度

3.容错

4.机器间通信等复杂问题

三、分布式计算vs单机计算

四、MapReduce执行流程

1.四个阶段

  1. Input到map:

①file:HDFS中,每个文件切分成多个一定大小(默认64M)的Block

②inputformat:经过数据分割(Data Splits)成记录

③split:多条记录的集合构成split,每个split包含后一个Block中开头部分(解决记录跨block的问题)

④Record Reader:每读取一条记录,调用一次map函数,直到split的尾部

     2) map:

    每条记录调用执行一次map()函数,就会在内存中增加数据

     3) map到reduce (shuffle):

            ①Partitioner:决定数据由哪个Reducer处理,从而分区

        如:{key, value}经过hash得到{partition, key, value}

   ②MemoryBuffer:每个map的结果和partition处理的结果都保存在缓存中

    缓冲区大小:默认100M,溢写阈值:100M * 0.8 = 80M

   ③Spill:内存缓冲区达到阈值时,溢写spill线程锁住这80M的缓冲区,开始将

    数据写出到本地磁盘中,然后释放内存。

   ④Sort:缓冲区数据按照key进行排序

   ⑤Combiner:预聚合,相同的key的数据,value值合并,减少输出传输量
  1. reduce:

    多个reduce任务输出的数据都属于不同的partition,因此结果数据的key不会重复,合并reduce的输出文件即可得到最终的结果。

2.map和reduce的设置

    1) map

– map任务总数不超过平台可用的任务槽位

– map个数为split的份数,split几乎对应一个block,dfs.block.size决定block大小

  1. reduce

– mapred.reduce.task,默认为1

• reduce个数太少

单次执行慢,出错再试成本高

• reduce个数太多

shuffle开销大,输出大量小文件

  1. 集群控制

• 对单个MapReduce

Map个数最好为集群slot的倍数

Reduce个数最好为集群slot的个数、倍数

• 多个MapReduce

节奏控制

五、Hadoop Streaming

1.Strieaming的优点:

  1. 开发效率高

– 只需按照一定的格式从标准输入读取数据、向标准输出写数据就可以

– 容易单机调试:cat input | mapper | sort | reducer > output

  1. 程序运行效率高

– 对于CPU密集的计算,有些语言如C/C++编写的程序可能比用Java效率更高一些

  1. 便于平台进行资源控制

– Streaming框架中通过limit等方式可以灵活地限制应用程序使用的内存等资源

2.Streaming的局限:

     1) Streaming默认只能处理文本数据

     2) 两次数据拷贝和解析(分割),带来一定的开销

3.Streaming的开发要点:

  1. input:

指定输入文件的HDFS路径,支持使用*通配符和指定多个文件或目录,可多次使用

  1. output:

指定输出文件的HDFS路径,路径必须不存在,且具备创建该目录的权限,只能使用一次

  1. mapper:

用户自己写的mapper程序

  1. reduer:

用户自己写的reduce程序

  1. file:

打包文件到提交的作业中,

(1)map和reduce的执行文件,如run.sh

(2)map和reduce要用输入的文件,如配置文件

另外,还有-cacheFile, -cacheArchive分别用于向计算节点分发HDFS文件和HDFS压缩文件

  1. jobconf:

提交作业的一些配置属性,常见配置:

(1)mapred.map.tasks:map task数目

(2)mapred.reduce.tasks:reduce task数目

(3)stream.num.map.output.key.fields:指定map task输出记录中key所占的域数目

(4)num.key.fields.for.partition:指定对key分出来的前几部分做partition,而非整个key

(5)mapred.compress.map.output:map的输出是否压缩

(6)mapred.map.output.compression.codec:map的输出压缩方式

(7)mapred.output.compress:reduce的输出是否压缩

(8)mapred.output.compression.codec:reduce的输出压缩方式

相关文章

  • 数据仓库工具Hive

    数据仓库工具Hive Hive产生背景 直接使用MapReduce处理大数据,问题: MapReduce开放难度大...

  • MapReduce 大总结

    快结课了,该写个总结了。 mapreduce是两个操作步骤,即映射和规约 也是这个分布式计算的思想 主要过程是这样...

  • 好程序员大数据培训分享MapReduce全流程总结

    好程序员大数据培训分享MapReduce全流程总结,首先,MapReduce是什么?干什么用的? MapReduc...

  • 大数据--MapReduce总结

    一、本质 MapReduce是一个基于分治思想,用于处理海量数据的分布式计算框架。 二、mapreduce解决了什...

  • 大数据学习day_5

    思考问题 MapReduce总结 MapReduce MapReduce的定义MapReduce是一种编程模型, ...

  • Hive

    HadoopHDFS 存储数据YARN 资源管理MapReduce 处理数据Mapreduce is hard...

  • Hadoop 【基础】| MapReduce简介

    MapReduce,并行计算框架,用于处理大规模的数据集 一、MapReduce原理 采用分而治之的思想,将一个大...

  • 大数据基础架构总结

    本文是对大数据领域的基础论文的阅读总结,相关论文包括GFS,MapReduce、BigTable、Chubby、S...

  • 分布式处理框架MapReduce

    MapReduce概述 MapReduce源自于谷歌的论文,是谷歌MapReduce的克隆版 优点:海量数据离线处...

  • Hadoop基本知识点总结

    内容参考链接:慕课网--Hadoop大数据平台架构基础篇Google大数据技术(3大):MapReduce、Big...

网友评论

      本文标题:大数据--MapReduce总结

      本文链接:https://www.haomeiwen.com/subject/ezwkkqtx.html