hadoop-InputFormat-Split-任务并行度
首先来看 MapReduce 流程图
一个 map,一个 reduce,中间靠 shuffle 连接,shuffle 左边被划分到 map,右边被划分到 reduce
InputFormat
input 是个文件,进入 mapper 后变成一行一行,如何实现的呢?
在 hadoop 中实现的方法叫 inputFormat;
它先对 原始文件进行 切片 Split,然后把每个 Split 转换成 line;
mapreduce 是个分布式计算框架,它如何实现并行呢?
比如 1G 的数据假设划分 8 份,每份128M,那 1M 的数据呢,也划分 8 份,每份才128K,感觉不靠谱,
到底如何划分,就是我们所说的 InputFormat 中的 Split
Split 与 MapTask 并行度
在 hadoop中,MapTask 并行度是靠 Split 决定的,有多少个 Split,就有多少个 task 并行;
那如何 Split 呢?
首先明确两点:
1. HDFS 上数据文件是以 block 存储的,一个 block 默认 128M
2. Split 是逻辑上的切分,而不会像 block 一样进行物理切分
Split 方式分析
假设 HDFS 上有个文件 300M,分为 3 个 block 存储,两个block 128M,另一个 44M;
假设我们按 100M 进行切分,如图
我们知道 hadoop 任务调度有个原则叫数据本地化,就是说尽量把任务发配到存放所需数据的节点上,从而避免网络传输;
上面的划分方式,仅仅是 300M 的数据,就传输了 28+56=84M, 显然效率不会高
假设我们按 block 进行切分,如图
虽然每个任务 处理的数据量稍微大了点,但是避免了网络传输,效率比较高
总结:
1. MapTask 的并行度由切片数决定
2. 一个 切片对应一个 MapTask
3. 默认情况下,切片大小=BlockSize,这种方式也是比较高效的
4. 切片时不考虑数据集整体,而是针对单个文件进行切片
如一个数据集有3个文件,一个 300M,一个 50M,一个20M,那么第一个文件切3份,第二个文件切1份,第三个文件切1份,彼此独立切分,互不影响
hadoop-InputFormat-Split-任务并行度的更多相关文章
- Hadoop InputFormat浅析
本文转载:http://hi.baidu.com/_kouu/item/dc8d727b530f40346dc37cd1 在执行一个Job的时候,Hadoop会将输入数据划分成N个Split,然后启动 ...
- Hadoop InputFormat
Hadoop可以处理不同数据格式(数据源)的数据,从文本文件到(非)关系型数据库,这很大程度上得益于Hadoop InputFormat的可扩展性设计,InputFormat层次结构图如下:
- Hadoop InputFormat详解
InputFormat是MapReduce编程模型包括5个可编程组件之一,其余4个是Mapper.Partitioner.Reducer和OutputFormat. 新版Hadoop InputFor ...
- Hadoop InputFormat 输入文件分片
1. Mapper 与 Reducer 数量 对于一个默认的MapReduce Job 来说,map任务的数量等于输入文件被划分成的分块数,这个取决于输入文件的大小以及文件块的大小(如果此文件在 HD ...
- hadoop InputFormat 类别
FileInputFormat是所有使用文件作为数据源的InputFormat的积累.它提供两个功能:一个是定义哪些文件包含在一个作业的输入中:一个为输入文件生成分片的实现.自动将作业分块 作业分块大 ...
- Hadoop InputFormat OutputFormat
InputFormat有两个抽象方法: getSplits createRecordReader InputSplits 将数据按照Split进行切分,一个Split分给一个task执行. ...
- hadoop InputFormat getSplits
/** Splits files returned by {@link #listStatus(JobConf)} when * they're too big.*/ public InputSpli ...
- Hadoop学习之路(十四)MapReduce的核心运行机制
概述 一个完整的 MapReduce 程序在分布式运行时有两类实例进程: 1.MRAppMaster:负责整个程序的过程调度及状态协调 2.Yarnchild:负责 map 阶段的整个数据处理流程 3 ...
- Hadoop与Spark比较
先看这篇文章:http://www.huochai.mobi/p/d/3967708/?share_tid=86bc0ba46c64&fmid=0 直接比较Hadoop和Spark有难度,因为 ...
随机推荐
- Django-权限管理与路径导航
1.url权限管理 设计表 1.设计表 系统一共有多少个路径: 有哪些用户使用: 用户在公司的角色: 对角色进行权限分配(什么样的角色可以访问什么样的路径): 2.往表中添加数据,分配角色权限 3.登 ...
- 1.5 JAVA的IO操作
1.5 JAVA的IO操作 参考链接:https://www.runoob.com/java/java-files-io.html 一.JAVA的IO操作 由于JAVA引用外界的数据,或是将自身的数据 ...
- Ubuntu18.04 server安装步骤
Ubuntu18.04 server安装步骤 1. select a language default 2. select your location default 3. configure th ...
- RHEL防火墙命令
firewall-cmd --state 查看防火墙状态 firewall-cmd --reload #重启firewall systemctl stop firewalld.service #停止f ...
- hadoop-job(mapReducer计算单词出现的个数)
1.============map=============== package com.it18zhang.hadoop.mr; import org.apache.hadoop.io.IntWri ...
- CSS3 新特性
~平时喜欢逛博客,看别人的学习总结和遇到的问题解决办法,恰好最近在做书签整理,翻到了之前一个前辈移动前端的总结,所以我就按他的总结模块对自己的知识进行了梳理,不过由于都是手写的,为了方便,下面的都是平 ...
- 【log4j】log4j.properties 文件示例
# 下面的文件内容是写程序长期要用的,放在这里留个底#Output information(higher than INFO) to stdout and file.info/debug/error ...
- P3146 [USACO16OPEN]248
P3146 [USACO16OPEN]248 题解 第一道自己码出的区间DP快庆祝一哈 2048 每次可以合并任意相邻的两个数字,得到的不是翻倍而是+1 dp[L][R] 区间 L~R 合并结果 然后 ...
- UML建模综述
一.概念 UML-Unified Model Language 统一建模语言,又称标准建模语言.是用来对软件密集系统进行可视化建模的一种语言.作为一个支持模型化和软件系统开发的图形化语言,UML为软件 ...
- js内存空间及this关键词详解
http://mp.weixin.qq.com/s/FYFepXmkzzDYNLKhpovYFA