文档章节

MapReduce - Map输入的分片

止静
 止静
发布于 2014/11/18 21:18
字数 549
阅读 195
收藏 0

回顾:


在一个电话面试之中,对方提到了:Map阶段的分片处理。由于在沟通之中有些许紧张,在对方问及:Map分片的算法过程能否简单的描述?这个问题,由于对方选取了 Map算法的用词,一时间思路被诱导了,想到的只有shuffle,以及hash分区,和boolean过滤器等。

而事实上,一个 输入的分片,在MapReduce之中被称为”split“就是单个Map处理的块,每一个Map的操作都只是处理一个输入分片。每个分片被划分为若干个记录,并且,每条记录就是一个键值对。Map一个一个的来处理这些数据。事实上,如果单纯在是否数据一条条来被处理意外,这和Storm是没有多大的区别的。而这里的Split 也就是通常数据处理之中的segment,  一个输入的分片可以对应于同一个表上的若干行。 而一条数据对于与一行。

输入分片被包装称为了一个java 的interface

public interface InputSplit extends Writable
{

    long getLength() throws IOException;
    String[] getLocation() throws IOException

}


通常你也不需要自己来处理这个分片 ,分片是由于 InputFormat来创建的,InputFormat负责产生输入的分片并将他们分割为记录。

另外一个关键的地方是 RecordReader。 RecorderReader 也就是我们所说的记录迭代器。Map任务会用一个记录的迭代器来生产键值队。



而 InputFormat 才是我们真正的的使用类。


Java 代码如下:

public interface IntputFormat<k,v>
{

    InputSplit[] getSplit(JobConf,int numSplits) throws IOException;
    
    RecordReader<k,v> getRecordReader(InputSplit split,JobConf conf,Reporter reporter)
    throws IOExcetion
}


    第一个方法,你可以指定NumSplits,当然很多时候指定是无效的。

    第二个方法,你一句getRecordReader来拿到RecordReader;


    面试的感触:很多时候,技术驱动的公司往往没有产品的思维。更不用说是市场化的逻辑了。


    一个即将被淘汰的组件,却成了面试的重点。


© 著作权归作者所有

共有 人打赏支持
止静
粉丝 121
博文 134
码字总数 125762
作品 0
东城
技术主管
私信 提问
Hadoop 版本 生态圈 MapReduce模型

一 Hadoop版本 和 生态圈 1. Hadoop版本 (1) Apache Hadoop版本介绍 Apache的开源项目开发流程 : -- 主干分支 : 新功能都是在 主干分支(trunk)上开发; -- 特性独有分支 : 很多新特性稳定性很...

日拱一卒
2014/05/17
0
0
《Hadoop权威指南》书摘-MapReduce概述

转载请注明出处:http://wangnan.tech 简书:http://www.jianshu.com/u/244399b1d776 MapReduce是一种可用于数据处理的编程模型,MapReduce程序本质上是并行运行的,因此可以将大规模数据分析...

GhostStories
2018/07/23
0
0
--Hadoop相关零散知识点

Hadoop学习笔记: 1、Hadoop三种安装模式 本地模式:本地模式是Hadoop默认的模式,只有Hadoop被配置成以非分布式模式运行的一个独立Java进程。默认模式下所有3个XML文件均为空,此时,Hadoo...

hiqj
2014/08/30
0
0
深入浅出Hadoop数据流(1)

首先是一些术语的说明。MapReduce作业(job)是客户端执行的单位:它包括输入数据、MapReduce程序和配置信息。Hadoop通过把作业分成若干个小任务(task)来工作,其包括两种类型的任务:map任务和...

超人学院
2015/03/30
0
0
Hadoop上路_12-MapReduce流程演示

MapReduce是单个jobstracker和多个tasktracker的组合。一般jobstracker和HDFS中的namenode在同一个节点,也可配置为单独节点;tasktracker和datanode必须是同一个节点。jobstracker是整个Map...

vigiles
2013/08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一文说尽MySQL事务及ACID特性的实现原理

本文将首先介绍 MySQL 事务相关的基础概念,然后介绍事务的 ACID 特性,并分析其实现原理。MySQL 博大精深,文章疏漏之处在所难免,欢迎批评指正。 MySQL 事务基础概念 事务(Transaction)是访...

架构师springboot
37分钟前
7
0
Vue +Element UI后台管理模板搭建示例

一、蓝色主题 Element ui 后台管理 Demo https://github.com/taylorchen709/vueAdmin https://taylorchen709.github.io/vueAdmin/#/user Element ui 文档 http://element.eleme.io/#/zh-CN/......

tianma3798
今天
2
0
小白学习大数据的最详细的学习路线图就在这里

现如今大数据已经上升到国家战略层面,企业对于大数据的关注和重视程度也在不断提升。想要成为大数据工程师,大需要很多种基础理论知识与编程框架、分布式服务器等来支撑,这也是使得一个大数...

董黎明
今天
9
0
2019Java学习规划

重要性 虚拟机 > 并发 > 数据库 > 设计模式 > 算法 读书 深入理解Java虚拟机 Java并发编程实战 剑指offer

2change
今天
3
0
聊聊flink JobManager的High Availability

序 本文主要研究一下flink JobManager的High Availability 配置 flink-conf.yaml high-availability: zookeeperhigh-availability.zookeeper.quorum: zookeeper:2181high-availability.zo......

go4it
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部