推荐大象教程,介绍Hadoop、HDFS、MapReduce架构和工作原理相对来说非常的清晰。其内容是与《Hadoop the Definitive Guide》基本一致的。讲解的很细致、细节,又带了一些个人的理解和举例子,比较易懂,是比Hadoop官网更值得一看的入门教程。
Hadoop 教程 | Hadoop 教程
HDFS 教程 | HDFS 教程
MapReduce 教程 | MapReduce 教程
或者 51CTO的这个Hadoop专题系列文章:
https://blog.51cto.com/u_12279910/category14/p_1
中文名称/问题 | 基本概念理解/名词解释/个人理解和举例 | 备注 |
MapReduce 键值对,什么时候需要自己来定义和处理? 平时拉取数据的时候并没有定义key | 使用 Hadoop 的时候,键和值并非是数据的固有属性,它只是在对数据做分析时人为选择的一种策略。MapReduce 把处理过程分成两个阶段:Map 阶段和 Reduce 阶段。每个阶段的输入数据和输出数据都是以键值对的形式出现。 1、当模式是静态的时候,我们可以直接使用模式的列,比如Hive表。 2、如果模式是非静态的,就不能用列的,因为没有列的概念了,只能使用键和值来处理数据。比如自己写MapReduce处理方法。 | 参考博文:https://blog.51cto.com/u_12279910/category14/p_2 |
MapReduce 框架是怎么生成键值对的?? InputSplit(拆分键值对) 和RecordReader(存储的就是键值对)相互交互,将数据转成键值对的形式。 | MapReduce 过程中,在数据传输给 mapper 之前,数据首先被转换成键值对,因为 mapper 只能处理键值对形式的数据。 Hadoop MapReduce 生成键值对的过程如下: (1)InputSplit:这个是数据的逻辑表示形式。单个独立的 Mapper 处理的数据就是由 InputSplit 提供的。 (2)RecordReader:它和 InputSplit 交互,并且把数据分片转换成适合 Mapper 读取的记录,这里的记录其实就是数据的键值对形式。默认情况下,RecordReader 使用 TextInputFormat 把数据转换成键值对。RecordReader 和 InputSplit 的交互直到文件读取完成才停止。 在 MapReduce 框架里面,map 函数处理某个键值对并发出一定数量的键值对,Reduce 函数处理按相同键分组的值,并发出另一组键值对作为输出。map 的输出类型应该和 reduce 的输入类型一致。比如: Map: (K1, V1) -> list (K2, V2) Reduce: {(K2, list (V2 }) -> list (K3, V3) K2,V2 数据类型是要保持一致的。 | ![]() |
Hadoop 中生成键值对需要依赖什么? | Hadoop 中键值对的生成取决于数据集和所需的输出。通常,键值对在4个位置指定:Map 输入、Map 输出、Reduce 输入和 Reduce 输出。 1、Map 输入 map 输入默认把数据文件的行数作为键(key),数据行对应的内容作为值。可以对 InputFormat 进行定制化开发,可以修改这个默认设置。 2、Map 输出 Map 主要负责过滤数据,并为数据基于键分组提供基础。 Key:它可能是字段、文本、对象,Reducer 端会根据 Key 对数据做分组和聚合。 Value:它可能是字段、文本、对象。它会被单独的 reduce 函数处理。 3、Reduce 输入:Map 的输出作为 Reduce的输入,也就是说,Reduce 的输入数据和 Map 输出数据是一样的。 4、Reduce 输出: 这个取决于所需要的输出是怎么样的。 | MapReduce 键值对举例 假如有个存储在 HDFS 的文件的内容如下: John is Mark Joey is John 1.利用 InputFormat,我们就可以知道这个文件是怎么被分片和读取的。默认情况下,RecordReader 使用 TextInputFormat 把这个文件转换成键值对数据。 Key:这个是键值对的键,它是数据行的偏移量(行号)。 Value:值就是数据行具体内容,不包含行终止符。 根据上文件的内容,具体的 Key 和 Value 的内容如下: Key 是 0 Value 是 John is Mark Joey is John |
Hadoop工作原理 | Hadoop系列之Hadoop工作原理(2)_51CTO博客_hadoop【 | |
Hadoop MapReduce计算框架中,有多少个工种? 各自负责的职责功能是什么? 把这些默默工作的工种都列出来,理解其工作内容,表示敬意 | 生产设备工具(生产资源): CPU、内存、磁盘、网络 生产资料:数据 生产人员:Yarn、ResourceManager、ApplicationMaster、NodeManager、Job/Job-DAG、 生产人员的工作和管理技能: | 模拟现实世界的项目管理、团队组成、工作岗位和职责。 拟人化来理解Hadoop这个团队是如何完成 来自需求方(我)的一个数据计算任务的。 模拟一次Hadoop工作间的现场参观。了解其团队人员组成、岗位职责划分、生产资料的调度/分发/加工/存储、生产工具管理、项目管理、突发状况/风险管理、结果交付等。 |
它的职责是什么? 它的直接下属是谁? 为什么这个团队里需要有这么个角色? 它的工作或管理技能手段是什么? | Yarn 一个资源管理系统,其作用就是把资源管理和任务调度/监控功分割成不同的进程。Yarn 有一个全局的资源管理器叫 ResourceManager,每个 application 都有一个 ApplicationMaster 进程。一个 application 可能是一个单独的 job 或者是 job 的 DAG (有向无环图)。 在 Yarn 内部有两个守护进程,分别是 ResourceManager 和 NodeManager。ResourceManager 负责给 application 分配资源,而 NodeManager 负责监控容器使用资源情况,并把资源使用情况报告给 ResourceManager。这里所说的资源一般是指CPU、内存、磁盘、网络等。 |