大数据|HDFS分布式文件系统

news/2024/5/20 4:09:24 标签: 大数据, hadoop, hdfs

前文回顾:Hadoop系统

目录

📚HDFS概述

📚HDFS设计目标

📚HDFS的架构

📚HDFS的副本机制


📚HDFS概述

在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在集群上的文件系统统称为分布式文件系统

HDFS(Hadoop Distributed File System)是Apache Hadoop项目的一个子项目。082b88ba06bf4a1cbcbcdef79fc20520.jpg

 Hadoop存储大型数据就是使用HDFS作为存储系统,HDFS使用多台计算机存储文件,并且提供统一的访问接口,像是访问一个普通文件系统一样使用分布式文件系统。换句话说,HDFS解决的问题就是大数据存储。

📚HDFS设计目标

1.故障检测和自动快速恢复:硬件故障是常态,HDFS将有成百上千的服务器组成,每一个组成部分都有可能出现故障,因此故障的检测和自动快速恢复是HDFS的核心架构目标

2.注重数据访问的高吞吐量:HDFS上的应用与一般的应用不同,HDFS被设计成批量处理,而不是用户交互式的。相较于数据访问的反应时间,更注重数据的高吞吐量

3.提供很高的聚合数据带宽:HDFS应被调整成支持大文件,它应该提供很高的聚合数据带宽,一个集群中支持数百个节点,一个集群中还应该支持千万级别的问题。

4.write-one-read-many:大部分HDFS应用对文件要求的是write-one-read-many访问模型。一个文件一旦创建、写入、关闭之后就不需要修改了。这一假设简化了数据一致性问题,使高吞吐量的数据访问成为可能。

5.把计算移动到数据附近一个应用请求的计算,离它操作的数据越近越高效,这在数据达到海量级别的时候更是如此。将计算移动到数据附近,比将数据移动到应用所在显然更好。

6.在异构的硬件和软件平台上的可移植性:这将推动需要大数据集的应用更广泛地采用HDFS作为平台。

HDFS关键特点

  1. 高吞吐量,对延时没有要求(可能牺牲延时)。
  2. 一次写入,多次读取且一般是顺序读。
  3. 高容错性,且不需要太昂贵的机器,可以相对节约成本。

正因为如此,HDFS适合用来做大数据分析的底层存储服务,并不适合用来做网盘等应用。因为它修改不方便,延迟大,网络开销大,成本高(和做网盘应用的那些相比)。

📚HDFS的架构

HDFS采用M/S架构,一个HDFS集群有两个重要角色,分别是NameNode和DataNode

297c30259c764b37979a5df320943887.jpg四个基本组件:HDFS Client、NameNode、DataNode和Secondary NameNode。

e627919d2604439ba712854f9e242b69.png

Client就是客户端

  • 文件切分。文件上传 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储。
  • 与 NameNode 交互,获取文件的位置信息。
  • 与 DataNode 交互,读取或者写入数据。
  • Client 提供一些命令来管理 和访问HDFS,比如启动或者关闭HDFS。

Secondary NameNode并非 NameNode 的热备。当NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务

  • 辅助 NameNode,分担其工作量。
  • 定期合并 fsimage和fsedits,并推送给NameNode。
  • 在紧急情况下,可辅助恢复 NameNode。

📚HDFS的副本机制

HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件。它将每个文件存储成一系列的数据块,这个数据块被称为block,除了最后一个,所有的数据块都是同样大小的。

1.为了容错,文件的所有block都会有副本

2.每个文件的数据块大小和副本系数都是可配置的。

3.所有的文件都是以 block 块的方式存放在 HDFS 文件系统当中,作用如下:

  • 一个文件有可能大于集群中任意一个磁盘,引入块机制可以很好的解决这个问题。
  • 使用块作为文件存储的逻辑单位可以简化存储子系统。
  • 块非常适合用于数据备份进而提供数据容错能力。
  • 副本优点是安全,缺点是占空间。

hadoop当中, 文件的 block 块大小默认是 128M,默认的副本数为3,也就是每个block会存三份。

  • 假设文件大小是100GB,从字节位置0开始,每128MB字节划分为一个block,依此类推,可以划分出很多的block。每个block就是128MB大小。
  • 注意当一个文件的大小不足128M时,比如为2M,那么这个文件也占用一个block,但是这个block实际只占2M的空间,所以从某种意义上来讲,block只是一个逻辑单位

block块的大小可以通过 hdfs-site.xml 当中的配置文件进行指定。

<property>
    <name>dfs.block.size</name>
    <value>块大小以字节为单位</value>
</property>

HDFS分布式文件系统的内部有一个副本存放策略,默认副本数为3,在这里以副本数为3为例:

  • 第一副本优先放置到离写入客户端最近的DataNode点,如果上传节点就是DataNode,则直接上传到该节点,如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。
  • 第二个副本放置在于第一个副本不同的机架的节点上(随机选择)
  • 第三个副本与第二个副本相同机架的不同节点中。

2a7c006eb08e4685a032b6c9d24431ec.png


学习博客来源:Lansonli大佬hadoop专栏


最近在发一些panda疯,好可爱好可爱好可爱————

 


http://www.niftyadmin.cn/n/130308.html

相关文章

【PyTorch】教程:torch.nn.LeakyReLU

torch.nn.LeakyReLU 原型 CLASS torch.nn.LeakyReLU(negative_slope0.01, inplaceFalse) 参数 negative_slope (float) – 控制负值斜率&#xff0c;默认为 1e-2inplace (bool) – in-place 操作&#xff0c;默认为 False 定义 LeakyReLU(x)max⁡(0,x)negative_slope∗min⁡…

力扣第99场双周赛题目记录(复盘)

第一题 2578.最小和分割 给你一个正整数 num &#xff0c;请你将它分割成两个非负整数 num1 和 num2 &#xff0c;满足&#xff1a; num1 和 num2 直接连起来&#xff0c;得到 num 各数位的一个排列。 换句话说&#xff0c;num1 和 num2 中所有数字出现的次数之和等于 num 中所…

低代码开发的优势是什么?

低代码开发的优势是什么?低代码开发这个概念这两年来经常出现在人们的视野中&#xff0c;市场对于低代码的需求也越来越庞大。 Gartner预测&#xff0c;到2025年&#xff0c;75%的大型企业将使用至少四种低代码/无代码开发工具&#xff0c;用于IT应用开发和公民开发计划。 可…

Linux:环境变量

目录一、环境变量的理解&#xff08;1&#xff09;什么是环境变量&#xff1f;&#xff08;2&#xff09;Linux中的环境变量二、环境变量的使用&#xff08;1&#xff09;PATH环境变量&#xff08;2&#xff09;和变量相关的指令三、环境变量与普通变量的区别在平时使用电脑的时…

【100个 Unity实用技能】 | Scene视图选择对象是否边缘高亮、显示网格线

Unity 小科普 老规矩&#xff0c;先介绍一下 Unity 的科普小知识&#xff1a; Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者&#xff0c;借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案&#xff…

Mysql8.0的特性

Mysql8.0的特性 建议使用8.0.17及之后的版本&#xff0c;更新的内容比较多。 新增降序索引 -- 如下所示&#xff0c;我们可以在创建索引时 在字段名后面指定desc进行降序排序 create table t1(c1 int,c2 int,index idx_c1_c2(c1,c2 desc));group by 不再隐式排序 mysql5.7的版…

AM5728(AM5708)开发实战之USB网络共享

一 编译USB/IP组件 USB/IP组件包含两部分&#xff1a;USB/IP协议栈和USB/IP驱动模块 USB/IP协议栈源码位于linux_kernel/tools/usb/usbip USB/IP驱动模块位于linux_kernel/drivers/usb/usbip 1.1 编译USB/IP协议栈 1 进入USB/IP协议栈目录 cd linux_kernel/tools/usb/usbip …

ARM架构下使用Docker安装Nacos

大家好&#xff0c;我是中国码农摘星人。 欢迎分享/收藏/赞/在看&#xff01; 注意&#xff1a;以下内容仅适用于 ARM 架构&#xff0c;X86 及 AMD 架构理论类似&#xff0c;只需要修改配置即可。 构建 MySQL 8.x 镜像 MySQL 5.x 版本没有 ARM 架构的镜像 FROM mysql:8.0.32 A…