Hadoop分块与分片介绍及分片和分块大小相同的原因
来源:互联网 发布:网络大电影受众人群 编辑:程序博客网 时间:2024/05/20 16:32
概念介绍
分块
在HDFS系统中,为了便于文件的管理和备份,引入分块概念(block)。这里的 块 是HDFS存储系统当中的最小单位,HDFS默认定义一个块的大小为64MB。当有文件上传到HDFS上时,若文件大小大于设置的块大小,则该文件会被切分存储为多个块,多个块可以存放在不同的DataNode上,整个过程中 HDFS系统会保证一个块存储在一个datanode上 。但值得注意的是 如果某文件大小没有到达64MB,该文件并不会占据整个块空间 。
HDFS中的NameNode会记录在上述文件分块中文件的各个块都存放在哪个dataNode上,这些信息一般也称为 元信息(MetaInfo) 。元信息的存储位置由dfs.name.dir
指定。
分片
当一个作业提交到Hadoop运行的时候,其中的核心步骤是MapReduce,在这个过程中传输的数据可能会很多,Hadoop会将MapReduce的输入数据划分为等长的小数据块,称为输入分片或者分片。hadoop为每个分片构建一个map任务,分片的默认实现由InputSplitFormat 类的 getSplits() 方法指定:
long splitSize = computeSplitSize(goalSize, minSize, blockSize); //computeSplitSize方法中省略其他代码,核心计算规则如下 Math.max(minSize, Math.min(goalSize, blockSize));
其中goalSize的值为:(InputFile的大小)/(配置文件中定义的mapred.map.tasks的值)
minsize的值为:配置文件mapred.min.split.size的值
blockSize的值为:64(默认情况)
可以通过上述计算了解到,hadoop计算的分片大小不小于blockSize,并且不小于mapred.min.split.size。默认情况下,以HDFS的一个块的大小(默认为64M)为一个分片,即分片大小等于分块大小。当某个分块分成均等的若干分片时,会有最后一个分片大小小于定义的分片大小,则该分片独立成为一个分片。
默认分片大小与分块大小是相同的原因
hadoop在存储有输入数据(HDFS中的数据)的节点上运行map任务,可以获得高性能,这就是所谓的数据本地化。所以最佳分片的大小应该与HDFS上的块大小一样,因为如果分片跨越2个数据块,对于任何一个HDFS节点(基本不肯能同时存储这2个数据块),分片中的另外一块数据就需要通过网络传输到map任务节点,与使用本地数据运行map任务相比,效率则更低!
- Hadoop分块与分片介绍及分片和分块大小相同的原因
- Hadoop分块与分片
- Hadoop分块与分片
- Hadoop分块和分片
- hadoop 分片与分块,map task和reduce task的理解
- hadoop 分片与分块,map task和reduce task的理解
- hadoop分片大小
- TCP和UDP分片大小
- IP分片和TCP分片的区别
- IP分片和TCP分片的区别
- IP分片和TCP分片的区别
- mapreduce 分片大小的计算
- 关于PPP multilink的负载均衡和分片大小
- Hadoop是怎么分块的
- Hadoop是怎么分块的
- Hadoop是怎么分块的
- Hadoop是怎么分块的
- Hadoop是怎么分块的
- Unity多线程
- 常用权限+依赖包
- HDU1570-A C
- java集合
- Java环境变量问题
- Hadoop分块与分片介绍及分片和分块大小相同的原因
- Educational Codeforces Round 34 (Rated for Div. 2) A-C 题解
- 菜鸟学python(04) —— 基础笔记整理
- SSL P1520 牛的RP 题目
- java--jvm--目录
- 171218---LAMP介绍之php安装
- python字符串
- 硬件体系优化及IO优化核心优化原理(学习老男孩视频23期)体会
- SqlServer XML 类型数据操作