MapReduce 不仅仅是一个工具,更是一个框架。我们必须拿问题解决方案去适配框架的 map 和 reduce 过程
  很多情况下,需要关注 MapReduce 作业所需要的系统资源,尤其是集群内部网络资源的使用情况。这是MapReduce 框架在设计上的取舍,是在需要考虑并发、容错、扩展性以及其他挑战与只关注数据的分布式处理之间的平衡。但是,独特的系统加上独特的问题使解决方案产生了独特的设计模式。
  我们不仅要关注代码的简洁和可维护性,同时还要考虑到任务会在数百台机器的共享集群上处理 TB 级甚至 PB 级的数据,任务性能也需要格外地重视。同时,该作业与共享集群的机器上数以百计的任务存在竞争关系。 一个好的设计可以带来几个数量级的性能提升,因此选择正确的设计来实现 MapReduce 算法就显得尤为重要。
 
随着 pig、hive 的发展,他们更将能解决 90% 以上的业务场景。 但是那10% 将是他们无法解决的。 这种情况编写MR 就是最好的解决方案。    就像有些时候依然必须用 汇编语言一样。

HDFS 分块  - MapReduce 分析
    HDFS 数据划分        : 文件上传之后,第一件事就是数据划分,是按照配置文件的块大小进行的物理分块。 
    Hadoop 数据划分    : 现在版本是 JobClient  去进行划分分析 split.file 写入 HDFS 中,到时候 JobTracker 端读这个文件。计算一个文件 有多少个 Block是由 getSplits这个函数计算的单位是Block个数. 
   MapTask任务分配    : map 的个数是由 splits 长度决定。 一个 splits 不会包含两个 File 的块,不会跨越 File 边界。 splits 和 Block 关系式一对多关系,默认是一对一。
   Reduce 任务        : Shuffle, 也是 Copy 阶段,Reduce Task 从各个 MapTask 上远程拷贝数据,并针对某一片数据,如果其大小超过一定阈值,则写到磁盘上,否则直接放在内存中。
很多情况下 Reduce 执行时需要跨节点拉取其他节点的 map task 结果。 如果集群正在运行的 job 有很多, 那么 task 的正常执行对集群内部的网络资源消耗会很严重。 这种网络小号是正常的。 不能加以限制,能做的就是最大化的减少不必要的消耗。还有在节点内,相比于内存,磁盘 IO 对 job 完成任务影响是很客观的。 
   Shuffer            : 完整的拉取 map 节点数据。 减少对带宽不必要的消耗。 减少磁盘IO对 task 的执行影响。(主要是尽量使用内存而非磁盘。)
FileSplit 类:

(1)数据切分:按照某个策略将输入数据切分成若干个split,以便确定MapTask个数以及对应的split;

(2)为Mapper提供输入数据:读取给定的split的数据,解析成一个个的key/value对,供mapper使用。

InputFormat有两个比较重要的方法:(1)List<InputSplit> getSplits(JobContext job);(2)RecordReader<LongWritable, Text> createRecordReader(InputSplit split,TaskAttemptContext context)。

 
 
来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/rocky24/p/4b10037c7d315b3b2591ac0dcadc3f08.html

一 梳理 从 HDFS 到 MR。相关推荐

  1. HDFS、MR、Kafka、Storm、Spark、Hbase、Redis原理图

    1.大数据分析阶段图 2.大数据分析平台总体架构 3.大数据分析平台技术栈 4.HDFS分布式存储原理图 5.MR计算原理图 6.Kafka分布式消息队列原理图 7.Storm分布式流式计算原理图 8 ...

  2. hdfs HA + MR HA

    Hodoop1.x 到 Hadoop2.x 1.Hadoop 1.x 存在的问题: – HDFS存在的问题 • NameNode单点故障,难以应用于在线场景 • NameNode压力过大,且内存受限, ...

  3. 唯品会HDFS性能挑战和优化实践

    本文以唯品会HDFS实际应用场景和问题导向触发,介绍了优化方案的局限性,分享了这些局限性的解决和实施经验.这对于技术运营较大规模的HDFS集群有一定借鉴意义. 1. 性能挑战 HDFS 是一个分布式系 ...

  4. Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解

    编者按:HDFS和MapReduce是Hadoop的两大核心,除此之外Hbase.Hive这两个核心工具也随着Hadoop发展变得越来越重要.本文作者张震的博文<Thinking in BigD ...

  5. 日跑几十万作业,唯品会HDFS是如何优化的

    本文以唯品会HDFS实际应用场景和问题导向触发,介绍了优化方案的局限性,分享了这些局限性的解决和实施经验.这对于技术运营较大规模的HDFS集群有一定借鉴意义. 性能挑战 01 HDFS 是一个分布式系 ...

  6. HDFS、Ceph文件系统以及Hbase、Cassendra、TiDB比较

    文章目录 HDFS.Ceph差异对比 HDFS设计目标 HDFS文件目录 Ceph设计目标 Ceph数据结构 HDFS文件导出 Ceph文件导出 暂时的结论 其它FS选型 其它思路 总结 Hbase. ...

  7. 详解Hadoop核心架构HDFS+MapReduce+Hbase+Hive

    通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS.MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心. 通 ...

  8. Thinking in BigData(八)大数据Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解

          纯干货:Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解. 通过这一阶段的调研总结,从内部机理的角度详细分析,HDFS.MapReduce.Hbase.H ...

  9. HIVE MR知识巩固

    概念 Hive 将 HQL 转换成MapReduce 执行 ,可以说Hive 是基于 hadoop的一个数据仓库工具,实质就是一款基于 HDFS的 MapReduce 计算框架 我的大白话解释 其实H ...

最新文章

  1. 中国联通与阿里宣布相互开放云计算资源
  2. Java中设计模式之工厂模式-4
  3. 鸿蒙手机系统开发大会,鸿蒙OS+EMUI10,华为开发者大会的创新与看点
  4. onRetainNonConfigurationInstance和getLastNonConfigurationInstance
  5. mysql编码转换工具_mysql编码转换搞定
  6. AMD总裁兼CEO苏姿丰再添要职 已被选为公司董事长
  7. 阿里腾讯决战ToB“操作系统”
  8. Android WebView中那些不得不解决的坑~~
  9. linux forge服务器,linux下搭建我的世界spongeforge 服务器 (海绵端)
  10. [Chrome插件开发]监听网页请求和响应
  11. WinZip 6 for Mac(压缩压解工具)附注册码 v6.5.4149破解版
  12. 安卓项目迁移androidX(为何需要迁移,迁移遇到的问题及解决),必须迁移,早动早省事
  13. 栈与队列篇:347. 前 K 个高频元素(难度 中等)
  14. 繁花盛开的夏天读后感
  15. 视频和图片的相互转换
  16. oracle 关键词大全,Oracle 常见关键词
  17. #边学边记 必修4 高项:对事的管理 第5章 项目成本管理 之 项目成本估算
  18. SolidWorks综合教程
  19. ¥12.00 To 拾贰圆整
  20. ESP8266-Arduino网络编程实例-ESP-MESH多设备节点通信

热门文章

  1. C#中的委托和事件(续)
  2. iis上实现虚拟目录
  3. 虚拟化如何做实?详解戴尔2.0版解决方案
  4. 2021年中国工业互联网安全大赛核能行业赛道writeup之机房密码
  5. 地图测量面积工具app_全站仪的使用面积测量
  6. 区块链还能赚钱吗 区块链挖矿赚钱吗
  7. 如何在C ++中从容器中删除元素
  8. 自行车车把会吧车刮坏吗_花10分钟即可开始使用车把
  9. 数据通信技术(四:链路聚合)
  10. Python内置数据结构之双向队列