hadoop block数据块

block数据块是HDFS文件系统基本的存储单位
block(块)128M 小于一个块的文件,不会占据整个块的空间

block数据块大小设置较大的原因:
1)减少文件寻址时间
2)减少管理块的数据开销,每个块都需要在NameNode上有对应的记录

3)对数据块进行读写,减少建立网络的连接成本

一个文件可以划分成多个块进行存储,并保存三个副本以block块落地到文件系统中的。

也可以通过在hdfs-site.xml中对这个值进行修改
    <property>
        <name>dfs.block.size</name>
        <value>块大小 以KB为单位</value>//只写数值就可以
    </property>

查看文件所占用的块的信息
    hadoop fsck /xxxxx -files -locations -blocks
    查看HDFS文件系统上xxxxx这个文件的属性信息,名字,文件存储位置,文件的block数    

抽象成数据块的好处

  1. 一个文件有可能大于集群中任意一个磁盘
    10T*3/128 = xxx块 2T,2T,2T 文件方式存—–>多个block块,这些block块属于一个文件
  2. 使用块抽象而不是文件可以简化存储子系统
  3. 块非常适合用于数据备份进而提供数据容错能力和可用性

块缓存

通常DataNode从磁盘中读取块,但对于访问频繁的文件,其对应的块可能被显示的缓存在DataNode的内存中,以堆外块缓存的形式存在。默认情况下,一个块仅缓存在一个DataNode的内存中,当然可以针对每个文件配置DataNode的数量。作业调度器通过在缓存块的DataNode上运行任务,可以利用块缓存的优势提高读操作的性能。

例如:
连接(join)操作中使用的一个小的查询表就是块缓存的一个很好的候选。
用户或应用通过在缓存池中增加一个cache directive来告诉namenode需要缓存哪些文件及存多久。缓存池(cache pool)是一个拥有管理缓存权限和资源使用的管理性分组。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/StarskyBoy/article/details/80852700

猜你喜欢

转载自blog.csdn.net/starskyboy/article/details/80852700