MapReduce处理流程一
我试图着搞明白MapReduce的处理流程--或者叫运行流程。
1、先从单机的角度 粗粒度的看
数据处理程序 读入数据,进而进行数据处理,处理完成后写数据。
整体上看很简单,就三步:从源头读入数据、处理数据、写数据到目的地。
2、更细化的图
从1中的图我们大体能明白总体的流程,这是最简单模型。实际运行中并不是单机运行的,而是在分布式的多台机器上并行执行的。
2.1 多个机器并行执行: 问题就来了,分布式环境下多个机器如何访问共享文件。当然我们已经知道
Hadoop下是使用 HDFS处理的。所以我们看到 2 中的图的左边画出了 HDFS
的一个框。多个机器读取的源数据都是存在于 HDFS上的。
2.2 并行执行之切分 :并行执行 肯定要切分任务--- 把源数据切分为多个小块--也就是图中画的 data split
这个切分是由 InputFormat完成的。
2.3 并行执行的多个map: 这里的多个map处理--是多个进程。
Hadoop采用都是多进程模型。spark采用的是多线程模型。
多进程更容易控制资源占用,而多线程不太容易控制资源占用。
2.4 shuffle & sort : 多map产生的多个 中间结果进行进一步的处理。shuffle 意思为 洗牌---很形象。
2.5 进行reduce处理:对map的结果进行汇总操作。根据key 使用哈希算法 ,把不同的key的数据发送给
不同的reduce进行处理。
2.6 上面图中的一个问题: 应当是一个 split 对应一个 map 的。
3、显示更多细节
3.1 每个map处理时 都有自己的 内存缓冲区,默认大小是100M ,就是上图画的buffer in memory
部分。buffer--缓冲,缓冲一般是临时存储的,快要满时是要写到磁盘上的。占用的80%时会把
这占用的80%的数据写入磁盘。
3.2 map一直运行 就会一直往 buffer写放数据,buffer就会写到磁盘多个小文件。就是上面buffer
后面 画出来的 一摞三个框的 东西。我们看 每个框好像还有自己的结构。一个框中被竖线分
割成了多个 “区”。这里的区就是partition。相对于数钱的例子的话,这里的 一个partition就一
一沓相同面值的钱--10块的一沓 50 的一沓 100 的一沓,这三沓摞一块就是图中的一个小文
件。 为什么他们会整齐的分沓摞起来呢?--- 原来 buffer在向磁盘写文件时 并不是简单的原
样的把内容的中数据写入磁盘文件,而是写的时候有一个排序的过程。正式这个排序的处理
才是10块的汇聚到一沓里。
3.3 产生的多个 小文件并不会直接发送给 reduce处理,而是要再合并处理。同样这次合并也不是
原样的append。而是有一个归并排序的处理。把 各个一小沓10块的 汇聚成一大沓。
然后合并后产生的文件就是一个大的有序的文件。
3.4 多个map最终会产生多个merge后的文件。然后从 这多个merge后的文件中 取出相同 一沓10
块的发送( 实际上就是copy到reduce节点机器上)给 处理10块的钱的 reduce。
相关推荐
大数据学习笔记 本资源摘要信息涵盖了大数据领域中的多个方面,包括Hadoop、HBase、Sqoop、Spark和Hive等技术栈。下面将对这些技术栈进行详细的解释和分析。 一、HDFS架构详尽分析 HDFS(Hadoop Distributed File...
本笔记将深入探讨大数据的基本概念,包括Hadoop、Hive、离线计算、实时计算、数据库、数据仓库、维度建模以及大规模并行处理MPP,还将介绍阿里云的一些大数据产品,如MaxCompute、DataWorks、数据集成、机器学习PAI...
这份“大数据学习笔记汇总指南”涵盖了大数据技术栈中的关键组件,包括Hadoop、Hive、Spark、Storm、Flink以及HBase。让我们逐一深入探讨这些技术及其在大数据生态系统中的作用。 一、Hadoop Hadoop是Apache基金会...
本资料包“大数据学习笔记,学习路线,技术案例整理”是一个全面的大数据学习资源,旨在帮助初学者和进阶者系统地掌握大数据的核心技术和应用实践。 首先,我们来了解一下大数据的关键概念和技术栈。大数据通常有四...
第一部分 Spark学习 ....................................................................................................................... 6 第1章 Spark介绍 ..............................................
1. **大数据基础**:面试可能涉及到Hadoop、Spark等大数据处理框架的基础知识,如HDFS(Hadoop分布式文件系统)的工作原理,MapReduce编程模型,以及Spark的RDD(弹性分布式数据集)和DAG(有向无环图)执行模型。...
1. **大数据概念**:大数据是指数据量巨大、类型繁多、增长快速且处理难度高的数据集。它包括结构化、半结构化和非结构化数据。 2. **大数据特征**:通常用4V来描述大数据,即Volume(大量)、Velocity(高速)、...
六、hadoop学习笔记之一:初识Hadoop 这篇笔记介绍了Hadoop的基本概念,包括Hadoop的诞生背景、核心组件以及Hadoop的优势。初学者可以从这里了解Hadoop的基本架构和工作原理,为后续的学习打下基础。 总结,Hadoop...
"大数据学习资料全排序二次排序"这个主题,显然关注的是如何有效地对大规模数据进行排序,尤其是涉及到二次排序的概念。二次排序通常是指在第一次排序的基础上,根据另一个或多个字段进行第二次排序,以满足更复杂的...
总的来说,Java大数据课程核心笔记提供了一个全面的平台,帮助你掌握Java的基础知识,并将其应用于大数据的处理和分析。通过深入学习这些内容,你将能够开发出能够高效处理海量数据的应用程序,为你的职业生涯打开新...
在大数据领域,Hadoop是一个至关重要的工具,它为海量数据的存储和处理提供了高效、可靠的解决方案。本笔记将深入探讨Hadoop集群及其核心组件,帮助读者理解大数据平台的基础与精髓。 第一章介绍了大数据的基本概念...
这个压缩文件可能是一个全面的大数据学习和求职准备资源集合。 在大数据领域,有以下几个关键知识点: 1. **大数据概念**:大数据是指数据量巨大、增长快速、类型多样、价值密度低的数据集合。它通常涉及到四个V,...
五、大数据学习笔记 学习大数据,你需要掌握编程语言如Java或Python,理解分布式计算原理,熟悉Hadoop和Spark等工具,以及数据分析和机器学习的基础知识。同时,实战项目经验也是提升技能的关键,可以参与开源项目...
Hive将SQL查询转换为一系列MapReduce任务,简化了大数据分析的复杂性,使非程序员也能方便地处理大数据。Hive还支持数据的离线处理,适合批量分析,但不适合实时或低延迟的查询需求。 Flink则是另一种流处理框架,...
通过学习,学生应能掌握大数据处理的关键技术和方法,理解大数据分析的流程,并具备初步的大数据项目实施能力。 大数据是指那些传统数据处理工具无法有效管理的海量、高增长速度和多样性的数据资源。它涉及到多个...
找工作流程是大数据面试宝典的开篇,包括学习技能、编写简历、投递简历、预约面试时间、面试、等待回复、拿到offer、入职以及准备必备资料和签订合同九个步骤。这个流程帮助求职者了解从开始求职到成功入职整个过程...
【尚硅谷大数据技术之Hadoop】是一门深入探讨大数据处理技术的课程,主要聚焦于开源框架Hadoop。Hadoop是Apache软件基金会开发的一个分布式计算项目,它为大规模数据集(大于1TB)提供了高容错性的分布式存储和计算...
总之,"最新201808达内Java大数据web阶段商城Easymall项目学习笔记和代码"是一个综合性的学习资源,涵盖了Java Web开发和大数据处理的多个方面,适合希望提升技能或准备从事相关领域工作的学习者深入研究。...
3. MapReduce:处理数据的计算框架。 4. Oozie:工作流调度系统,用于管理Hadoop作业和其他计算框架(如Pig、Hive等)的作业流程。 5. ZooKeeper:分布式协调服务,确保集群中的节点间通信和一致性。 6. Hive:...