华为云大数据存储的冗余方式是三副本_大数据入门:HDFS数据副本存放策略

news/2024/7/7 22:00:24

大数据处理当中,数据储存始终是一个重要的环节,从现阶段的市场现状来说,以Hadoop为首的大数据技术框架,仍然占据主流地位,而Hadoop的HDFS,在数据存储方面,仍然得到重用。今天的大数据入门分享,我们就来讲讲HDFS数据副本存放策略。

HDFS 是 Hadoop 分布式文件系统,基于廉价的PC集群,就能支持大规模数据集的存储,并且可以通过增加机器来提升存储容量,对于企业而言,提供了低成本的灵活性选择。

5d5300b3a0818c896a6030ca608e81a1.png

HDFS数据副本存放策略

通常来说,HDFS整体的副本冗余策略,是默认保存3个副本的策略。

大型 HDFS 实例通常分布运行在由许多机架组成的集群中,一个机房中有很多机架,一个机架上有多个服务器,不同机架的机器通信需要经过交换机,受带宽等因素的影响,需要更高的网络通信成本。

4d1a0a4f6b6d0443526f6fad6fb0a258.png

在默认 3 个副本的情况下,HDFS采用如下的放置策略:

在机架 1 上放置第一个副本;

在另一个机架 2 上放置第二副本;

副本三与副本二放置在同一个机架上;

如果有更多的副本,则随机选择机架,每个机架的副本数量有个上限值,计算方式通常是:(replicas - 1) / racks + 2

这样放置的好处:

避免一个机架出故障,导致所有数据丢失;

同一个机架上的节点通信网络会比不同机架节点通信更好,副本二与副本三放置在同一个机架能够节省带宽;

从单个文件看来,考虑带宽似乎没有多大意义,但是对于大规模数据的情况下,请求并发量大时,网络是非常重要的一个因素,特别是对于写请求,这里要了解 HDFS 写的流程。

因为写副本的过程类似于流水线,先写副本一,但这里写完后就将写成功的结果返回给客户端了。之后由副本一将内容写到副本二,接着由副本二将内容写到副本三。

假设副本三和副本一放置在一个机架上,那么就会产生两次不同机架间的写操作。而目前的情况是副本二和副本三在同一个机架,机架间的写操作只会发生在副本一到副本二之间,副本二和副本三的写操作是在同一个机架,节省了网络流量。

eb5656574a0fca1ea81eee9664f0fa95.png

那么HDFS在读取时如何选择副本呢?

为了最大的减少带宽和延迟,HDFS 读取文件采用就近原则,如果与客户端在同一机架上的 DataNode 上存有副本,则直接读取该副本。如果 HDFS 是跨数据中心的,则优先选择同一数据中心的副本。

关于大数据入门,HDFS数据副本存放策略,以上就为大家做了简单的介绍了。HDFS的副本策略,很大程度上来说,保证了其存储的高可靠性,也为后续的数据处理环节,提供更加稳固的支持。


http://lihuaxi.xjx100.cn/news/242808.html

相关文章

琐碎的知识库

禁止当前 Activity截图 <pre> Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); setContentView(R.layout.activity_main); } </pre> 获取当前…

k均值聚类算法考试例题_一文读懂K-means聚类算法

1、引言什么是聚类&#xff1f;我们通常说&#xff0c;机器学习任务可以分为两类&#xff0c;一类是监督学习&#xff0c;一类是无监督学习。监督学习&#xff1a;训练集有明确标签&#xff0c;监督学习就是寻找问题&#xff08;又称输入、特征、自变量&#xff09;与标签&…

JAVA工资高吗

JAVA工资高吗?很多人都是非常关注这个问题的&#xff0c;近几年&#xff0c;java技术在互联网行业有了自己的一席之地&#xff0c;越来越多的人都投身到java技术行业&#xff0c;下面我们来看看详细的介绍。 JAVA工资高吗? 近年来,在美国、加拿大、澳大利亚、新加坡等发达国家…

http

http请求由3个部分组成 1.请求行&#xff1a; 请求行包括 方法符号&#xff0c;请求的URI和协议的版本    请求 URL: http://www.cnblogs.com/ 请求方法: GET 版本HTTP/1.1 2.请求头 Host: www.cnblogs.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x…

VS Code - Debugger for Chrome调试JavaScript的两种方式

VS Code - Debugger for Chrome调试JavaScript的两种方式 最近由于出差的缘故&#xff0c;博客写的不是很多&#xff0c;一直想写一篇VS Code - Debugger for Chrome相关的文章&#xff0c;没想到一直拖到了今天。VS Code 开源以后确实在社区得到了很多人的支持&#xff0c;当中…

SQLDataSet中执行DDL语句

在SQLDataSet中执行我们输入的DDL语句&#xff0c;并观察执行结果。 这里为了省输入的时间&#xff0c;从先输好的记事本中复制的SQL语句。效果图: ************************************************************************************** 具体操作: **********************…

邀请参加活动的邀请函_圣诞节活动策划邀请函在线制作

2020年就要过去了&#xff0c;许多人说这一年很难&#xff0c;难上加南。莎士比亚说凡是过去&#xff0c;皆为序章。无论好的还是坏的终究会成为过往&#xff0c;向前看吧。圣诞节快要到来&#xff0c;商场开始布置精致的橱窗&#xff0c;电商巨头也在忙着做促销&#xff0c;幼…

如何开发属于自己的第一个Java程序

学习java技术都是循序渐进的&#xff0c;搭建好了Java开发环境之后&#xff0c;下面就来学习一下如何开发Java程序。为了让初学者更好地完成第一个Java程序&#xff0c;接下来小编通过几个步骤进行逐一讲解。 1.编写Java源文件 在D盘根目录下新建一个test文件夹&#xff0c;并在…