Hadoop3.x 分块机制和块大小(block size)

分块机制

HDFS中的文件在物理上是分块存储(block)的,块的大小可以通过配置参数来规定

通过 hdfs-default.xml 中的 dfs.blocksize 配置。默认大小是128M(134217728)

块大小

2.7.3版本开始默认大小为 128M
之前默认值是 64M

目的

有利于 数据并行处理 和 数据容灾恢复

作用

假设当前为 hadoop 2.7.3版本

  • 把一个 100M 的文件 上传 hdfs 中,文件不会分割,就是100M

  • 把一个 300M 的文件 上传 hdfs 中,文件会按 128M 来分割,共分割 3 块:第一块 128M,第二块 128M,第三块 44M ,然后保存到 不同的 datanode 上

块大小(block size)设置

与磁盘速度有关

磁盘传输速率为 200MB/s 时,一般设定 block大小为 256MB
磁盘传输速率为 400MB/s 时,一般设定 block大小为 512MB

寻址时间

HDFS中找到目标文件block块所花费的时间

block 过大、过小 的问题

block 过大的问题

  • 从磁盘传输数据的时间会明显大于寻址时间,导致程序在处理这块数据时,变得非常慢;

  • MapReduce中的map任务通常一次只处理一个块中的数据,如果块过大运行速度也会很慢。

block 过小的问题

  • 存放大量小文件会占用NameNode中大量内存来存储元数据,而 NameNode的内存是有限的,不可取;

  • 块过小,寻址时间增长,导致程序一直在找block的开始位置。

总结

块适当设置大一些,减少寻址时间,传输一个有多个块组成的文件的时间主要取决于 磁盘的传输速度

感谢:
https://www.cnblogs.com/sheng-sjk/p/10624958.html


原文出处:/show_1IXYvBc7ftw.html