当前位置 博文首页 > 瘦风:HDFS 02 - HDFS 的机制:副本机制、机架感知机制、负载均

    瘦风:HDFS 02 - HDFS 的机制:副本机制、机架感知机制、负载均

    作者:瘦风 时间:2021-02-20 10:33

    HDFS 的副本机制是什么?它的机架感知机制(策略)又是什么?还有负载均衡机制呢? 这几个机制都是面试都常见问题,一定要知道哦??

    目录
    • 1 - HDFS 的副本机制
    • 2 - HDFS 的机架感知机制
    • 3 - HDFS 的负载均衡机制
    • 参考资料
    • 版权声明

    1 - HDFS 的副本机制

    HDFS 中的文件,在物理上都是以分块(block)存储的,块大小可以通过 hdfs-site.xml 文件中的参数 dfs.block.size 进行设置:

    <!-- 块大小,单位:Byte -->
    <property>
        <name>dfs.block.size</name>
        <value>134217728</value>
    </property> 
    

    分块存储的好处有:

    1)一个文件有可能大于集群中的所有磁盘,块机制可以很好地解决这个问题;

    2) 使用块作为文件存储的逻辑单位,可以简化存储子系统;

    3)块非常适合用于数据备份(冗余的数据副本),进而提供数据容错能力。

    文件块的副本存储示例图:

    在 Hadoop 1.x 版本中,block 大小默认是 64M,Hadoop 2.x 版本默认是 128M。

    块大小的设置是否合理,对系统性能影响很大:

    设置太小,会增加寻址时间。

    设置太大,从磁盘传输数据的时间会明显大于定位该 block 起始位置所需的时间,进而导致程序在处理此 block 数据时速度很慢。

    2 - HDFS 的机架感知机制

    HDFS 的机架感知,又叫机架策略,用来决定副本存放位置的策略。

    以默认的副本数=3为例:

    1)第一个副本块保存在客户端所在的 DataNode 上;

    2)第二个副本块保存在客户端所在 DataNode 同机架内的其他 DataNode 上;

    3)第三个副本块保存不同机架的某个 DataNode 上。

    生产环境中,需要手动配置机架策略。

    3 - HDFS 的负载均衡机制

    HDFS 的负载均衡机制,可以做到让每个 DataNode 上存储的数据的百分比相差不那么大。

    HDFS 有一个自动的负载均衡操作,传输速度相对较慢,在集群规模较小的时候是可行的:

    <!-- 集群空闲情况下,1M/s -->
     <property>
          <name>dfs.datanode.balance.bandwidthPerSec</name>
          <value>1048576</value>
     </property>
    

    如果集群规模较大,为了防止负载均衡对正常的业务读写造成影响,应当在集群空闲的时候,手动执行负载均衡。

    手动命令如下:

    # 任意两个节点之间的存储百分比不超过10%
    sbin/start-balancer.sh -t 10%
    

    参考资料

    HDFS组成架构及四大机制

    版权声明

    作者:瘦风(https://healchow.com)

    出处:博客园-瘦风的南墙(https://www.cnblogs.com/shoufeng)

    感谢阅读,公众号 「瘦风的南墙」 ,手机端阅读更佳,还有其他福利和心得输出,欢迎扫码关注??

    本文版权归博主所有,欢迎转载,但 [必须在页面明显位置标明原文链接],否则博主保留追究相关人士法律责任的权利。

    bk