大数据HDFS凭啥能存下百亿数据?

news2024/11/19 9:38:26

前言

大家平时经常用的百度网盘存放电影、照片、文档等,那有想过百度网盘是如何存下那么多文件的呢?难到是用一台计算机器存的吗?那得多大磁盘啊?显然不是的,那本文就带大家揭秘。

分布式存储思想

既然一台机器的存储所需的磁盘有上限瓶颈,那么我们能否利用多台机器形成一个整体用来存储呢?这就是我们所说的分布式存储。

  • 单机纵向扩展:磁盘不够加磁盘,有上限瓶颈限制
  • 多机横向扩展:机器不够加机器,理论上无限扩展

Hadoop就是采用了这样的一个思想,设计出了分布式存储系统HDFS。

HDFS介绍和使用

HDFS(Hadoop Distributed File System ),意为:Hadoop分布式文件系统。它是Apache Hadoop核心组件之一,作为大数据生态圈最底层的分布式存储服务而存在。也可以说大数据首先要解决的问题就是海量数据的存储问题。

  • HDFS主要是解决大数据如何存储问题的。分布式意味着是HDFS是横跨在多台计算机上的存储系统。
  • HDFS是一种能够在普通硬件上运行的分布式文件系统,它是高度容错的,适应于具有大数据集的应用程序,它非常适于存储大型数据 (比如 TB 和 PB)。
  • HDFS使用多台计算机存储文件, 并且提供统一的访问接口, 像是访问一个普通文件系统一样使用分布式文件系统。

HDFS使用

HDFS安装好了,具体是如何使用呢,如何上传和下载文件呢?一共有两种方式,通过shell命令和web页面。

  1. shell命令操作HDFS

类似linux命令,可以直接通过在命令行界面操作。Hadoop提供了文件系统的shell命令行客户端: hadoop fs [generic options]

  • 创建文件夹

hadoop fs -mkdir [-p] <path> ...

path 为待创建的目录

-p 选项的行为与Unix mkdir -p非常相似,它会沿着路径创建父目录。

  • 查看指定目录下内容

hadoop fs -ls [-h] [-R] [<path> ...]

path 指定目录路径

-h 人性化显示文件size

-R 递归查看指定目录及其子目录

  • 上传文件到HDFS指定目录下

hadoop fs -put [-f] [-p] <localsrc> ... <dst>

-f 覆盖目标文件(已存在下)

-p 保留访问和修改时间,所有权和权限。

localsrc 本地文件系统(客户端所在机器)

dst 目标文件系统(HDFS)

hadoop fs -put zookeeper.out /alvin
hadoop fs -put file:///etc/profile hdfs://node1:8020/alvin
  • 查看HDFS文件内容

hadoop fs -cat <src> ...

读取指定文件全部内容,显示在标准输出控制台。

注意:对于大文件内容读取,慎重。

  • 下载HDFS文件

hadoop fs -get [-f] [-p] <src> ... <localdst>

下载文件到本地文件系统指定目录,localdst必须是目录

-f 覆盖目标文件(已存在下)

-p 保留访问和修改时间,所有权和权限。

更多命令可以查看官方文档

https://hadoop.apache.org/docs/r3.3.0/hadoop-project-dist/hadoop-common/FileSystemShell.html

2.web界面操作HDFS

另外一种更简单直观的方式是通过web界面操作HDFS,默认是50070端口,如下图所示:

HDFS的架构

HFDS采用分布式的架构,可能有成百上千的服务器组成,每一个组件都有可能出现故障。因此故障检测和自动快速恢复是HDFS的核心架构目标,下面是HDFS的官方架构图:

主从架构

HDFS集群是标准的master/slave主从架构集群,一般一个HDFS集群是有一个Namenode和一定数目的DataNode组成。

主角色:NameNode

  • NameNode是Hadoop分布式文件系统的核心,架构中的主角色。 
  • NameNode维护和管理文件系统元数据,包括名称空间目录树结构、文件和块的位置信息、访问权限等信息。 
  • 基于此,NameNode成为了访问HDFS的唯一入口。

从角色:DataNode

  • DataNode是Hadoop HDFS中的从角色,负责具体的数据块存储。 
  • DataNode的数量决定了HDFS集群的整体数据存储能力,通过和NameNode配合维护着数据块。

主角色辅助角色: SecondaryNameNode

此外,HDFS中还有一个SecondaryNameNode,虽然途中没有画出,那它有什么用呢?

  • Secondary NameNode充当NameNode的辅助节点,但不能替代NameNode。 
  • 主要是帮助主角色进行元数据文件的合并动作。可以通俗的理解为主角色的“秘书”。

分块存储

由于有的文件很大,一台机器也存不下,于是HDFS会对我们的文件做一个物理上的切割,也就是分块存储。

HDFS中的文件在物理上是分块存储(block)的,默认大小是128M(134217728),不足128M则本身就是一块。

副本机制

既然分布式存储海量数据,那么肯定需要成千上百的机器,这样很有可能其中一台机器宕机,出故障了怎么办呢?

当然HDFS也想到了解决方案,文件的所有block都会有副本。副本系数可以在文件创建的时候指定,也可以在之后通过命令改变。副本数由参数dfs.replication控制,默认值是3,也就是会额外再复制2份,连同本身总共3份副本,而且这个副本尽量会分散在不同的机架上,规避风险。

NameNode高可用

既然DataNode有副本,出现数据丢失可能性很小,那NameNode挂了不是照样凉凉?

不用担心,那我在启动一个NameNode备在那里不就行了吗。

存在两个 NameNode,一个是活动的 NameNode,称为 Active,另外一个是备用的 NameNode,称为 Standby。Active节点的数据通过JournalNode节点同步给Standby节点。 当 Active 节点出现问题时,需要将 Standby 节点切换为 Active 节点来为客户端提供服务,这样就保证了高可用。

元数据管理

前面提到NameNode中包含元数据,那么究竟具体是哪些内容呢?

在HDFS中,Namenode管理的元数据具有两种类型:

  • 文件自身属性信息

文件名称、权限,修改时间,文件大小,复制因子,数据块大小。

  • 文件块位置映射信息

记录文件块和DataNode之间的映射信息,即哪个块位于哪个节点上。

总结

现在你终于知道为什么百度网盘可以存下海量的数据了吧,主要采用的是分布式的存储,将数据分块多副本的方式存储到多个数据节点DataNode, 然后由唯一的NameNode节点去管理这个文件的信息,比如说它是在那些DataNode节点上,大小是多少等等,注意这里是DataNode主动告诉NameNode它这里有哪些文件块。

如果本文对你有帮助的话,请留下一个赞吧
欢迎关注个人公众号——JAVA旭阳
更多学习资料请移步:程序员成神之路

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77404.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring 核心与设计思想 · Spring IoC容器 · 控制反转式程序开发 · DI概念

Spring 是什么&#xff1f;一、什么是容器&#xff1f;二、什么是 IoC&#xff1f;2.1 传统程序开发2.2 控制反转式程序开发2.3 对比总结规律三、理解 Spring IoC四、DI 概念说明Spring 是什么&#xff1f; 我们通常说的 Spring 是指 Spring Framework&#xff08;Spring 框架…

【Mysql】知识体系结构构建以及常见考题汇总

【Mysql】知识体系结构构建以及常见考题汇总1、基本SQL知识1.1、D_L语法以及表中常用约束1.2、mysql表列常用数据结构1.3、事务&#xff08;此处展示并发事务问题以及解决方案、实现原理见2.3&#xff09;read uncommitted有脏读问题read committed解决脏读、有不可重复读问题r…

Android基础学习(二十)—— 线程安全

1、Android中线程的常见用法 &#xff08;1&#xff09;继承 Thread class MyThread extends Thread{Overridepublic void run(){//处理具体的逻辑} } new MyThread().start(); //启动此线程//使用匿名类 new Thread(){Overridepublic void run(){//处理具体的逻辑} }.star…

【加油站会员管理小程序】03 创建应用

我们上一篇介绍了数据源的创建&#xff0c;本篇我们介绍应用的创建。 微搭低代码中一共有两类应用&#xff0c;一类是数据模型应用&#xff0c;一类是自定义应用。数据模型应用往往对应着PC端的管理后台&#xff0c;例如我们的小程序通常需要一个管理后台来录入数据。 自定义…

【linux】2022年还能用,网易真的是良心啊,网易云音乐linux版本现在还是可以使用的超赞!!官方网的下载地址还可以使用,音乐使用的是qt5进行开发的。

目录前言1&#xff0c;关于网易云音乐2&#xff0c;可以正常使用&#xff0c;可以登录前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/128261513 未经博主允许不得转载。 博主CSDN地址是&#xff1a;https://blog.csdn.net/freewebsys 博主掘金地址…

vue.js:父子组件的实训案例

作业需求 需求1&#xff1a;定义两个输入框&#xff0c;通过输入框输输入的值改变页面显示的值需求2&#xff1a;改变第一个输入框的值的同时使得第二个输入框的值变为100倍并显示需求3&#xff1a;改变第二个输入框的值的同时使得第一个输入框的值变为1/100并显示 实训代码实…

CentOS搭建基于ZIPKIN的数据追踪系统

ZipKin入门介绍 Zipkin是一款开源的分布式实时数据追踪系统&#xff08;Distributed Tracking System&#xff09;&#xff0c;基于 Google Dapper的论文设计而来&#xff0c;由 Twitter 公司开发贡献。其主要功能是聚集来自各个异构系统的实时监控数据。分布式跟踪系统还有其…

TinUI4.0发布

引言 TinUI4登场~~~ 更新一览&#xff1a; 优化radiobox效果修复listview返回元素不全的问题新增树状图 treeview使用TinUI LOGO.ico新增普通图片 image随包发布 TinUI帮助手册 实用程序&#xff0c;在\test目录下 修复 这是常规更新&#xff0c;修复了listview创建过程中…

ChatGPT怎么用

最开始了解ChatGPT居然是抖音上看到的&#xff0c;之前了解过GPT-3&#xff0c;最开始认为可能类似的语言模型&#xff0c;上手以后才发现&#xff0c;这玩意挺有意思&#xff0c;某些方面&#xff0c;比百度强&#xff0c;但是比人还差十万八千里&#xff0c;智力不好说&#…

【Proteus仿真】【STM32单片机】智能浴室水温调控仪设计

文章目录一、功能简介二、软件设计三、实验现象联系作者一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用LCD1602、DS18B20、继电器加热、电机模块等。 系统运行后&#xff0c;LCD1602显示DS18B20采集温度值、温度上限阈值。 开启加水&#xff0c;一段…

PostgreSQL实战之物理复制和逻辑复制(四)

目录 PostgreSQL实战之物理复制和逻辑复制&#xff08;四&#xff09; 4 流复制监控 4.1 pg_stat_replication 4.2 监控主备延迟 4.3 pg_stat_wal_receiver PostgreSQL实战之物理复制和逻辑复制&#xff08;四&#xff09; 4 流复制监控 4.1 pg_stat_replication 主库上主…

Dual-Path Fusion:遥感融合

DPFN: A Dual-Path Fusion Network for Pan-Sharpening &#xff08;一种用于泛锐化的双路径融合网络&#xff09; 大多数现有深上用于pan-sharpening方法的几个公认的问题&#xff0c;如光谱失真和足够的空间纹理增强。针对这些问题&#xff0c;提出了一种新的双路径融合网络…

浙大全日制英文MBA项目申请的五大关键词

2023级开始&#xff0c;浙大全日制英文MBA项目全面登场&#xff01;对于这个项目的了解&#xff0c;大多数考生还不是特别清楚&#xff0c;因为很多考生更加关注的是“全日制”而非英文MBA本身的情况&#xff0c;如果还是带着以往对中文全日制MBA项目的理解来申请这个项目&…

《Linux运维实战:使用Percona Server for MongoDB物理备份与恢复Mongodb数据》

一、备份与恢复方案 Percona Server for MongoDB 是一个免费的、增强的、完全兼容的、源代码可用的、带有企业级功能的MongoDB Community Edition的替代品。它不需要对MongoDB应用程序或代码进行更改。Percona Server for MongoDB支持版本 > 3.6 。 说明&#xff1a;当前环…

【通知】《生成对抗网络GAN原理与实践》代码开源,勘误汇总!

有三上个月出版了新书《生成对抗网络GAN&#xff1a;原理与实践》&#xff0c;Generative Adversarial Networks&#xff08;中文名生成对抗网络&#xff0c;简称GAN&#xff09;自从被提出来后&#xff0c;其发展就非常迅猛&#xff0c;几乎已经被应用于所有CNN可以使用的领域…

Js逆向教程21-vscode无环境联调

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; Js逆向教程21-vscode无环境联调 一、环境安装 电脑安装visual code 电脑安装node.js 二、nodejs环境调试 vscode打开一个文件夹并创…

valet-windows

现在win可以用valet了&#xff0c;安装开始 环境参考 1》安装PHP 版本7.4.32 2》安装composer 2.4 安装valet 1》composer global require cretueusebiu/valet-windows 2》valet install 3》这里有2中方法&#xff0c;本人选择link valet link [name] 浏览器中输入 name.te…

[附源码]计算机毕业设计健身房预约平台Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

20221210英语学习

今日新词&#xff1a; authorize v.授权, 批准 layoff n.临时解雇, 操作停止, 活动停止期间 jazz adj.爵士音乐的, 不调和的, (色彩等)花哨恶俗的 overlap v.&#xff08;与…&#xff09;交叠&#xff0c;部分重叠&#xff1b;时间交叠&#xff1b;有共同之处 subject n.…

Matlab中的数据类型

数据类型 MATLAB中的数据类型主要包括数值类型、逻辑类型、字符串、函数句柄、结构体和
单元数组类型。这6种基本的数据类型都是按照数组形式存储和操作的。另外&#xff0c;MATLAB
中还有两种用于高级交叉编程的数据类型&#xff0c;分别是用户自定义的面向对象的用户类类型…