HDFS 集群的机架感知
背景
Hadoop 的设计目的:解决海量大文件的处理问题,主要指大数据的存储和计算问题,其中,HDFS 解决数据的存储问题;MapReduce解决数据的计算问题。
Hadoop 的设计考虑:设计分布式的存储和计算解决方案架构在廉价的集群之上,所以,服务器节点出现宕机的情况是常态。数据的安全是重要考虑点。HDFS 的核心设计思路就是对 用户存进 HDFS里的所有数据都做冗余备份,以此保证数据的安全。
那么 Hadoop 在设计时考虑到数据的安全,数据文件默认在 HDFS 上存放三份。显然,这三份副本肯定不能存储在同一个服务器节点。那怎么样的存储策略能保证数据既安全也能保证数据的存取高效呢?
HDFS 分布式文件系统的内部有一个副本存放策略:以默认的副本数=3 为例:
1、第一个副本块存本机
2、第二个副本块存跟本机同机架内的其他服务器节点
3、第三个副本块存不同机架的一个服务器节点上
好处:
1、如果本机数据损坏或者丢失,那么客户端可以从同机架的相邻节点获取数据,速度肯定要比跨机架获取数据要快。
2、如果本机所在的机架出现问题,那么之前在存储的时候没有把所有副本都放在一个机架内,这就能保证数据的安全性,此种情况出现,就能保证客户端也能取到数据。
HDFS 为了降低整体的网络带宽消耗和数据读取延时,HDFS 集群一定会让客户端尽量去读取近的副本,那么按照以上头解释的副本存放策略的结果:
<

本文介绍了Hadoop HDFS集群中机架感知的重要性,解释了默认情况下无机架感知导致的网络带宽消耗问题,并详细阐述了如何配置机架感知,包括编写shell脚本来确定节点的机架ID,以及如何验证配置效果。通过机架感知,可以优化数据存放策略,提升数据读取效率和网络资源利用率。
最低0.47元/天 解锁文章
458

被折叠的 条评论
为什么被折叠?



