Hadoop之HDFS概述

news2024/12/24 20:15:48

Hadoop概述之HDFS

    • HDFS架构概述
      • 优缺点
      • HDFS架构
      • HDFS文件块大小
      • HDFS的shell命令
      • HDFS读写流程
        • 写数据流程
      • HDFS读数据流程
      • NameNode 和 SecondaryNameNode工作机制
      • DataNode工作机制
        • DataNode数据完整性如何保证

端口名称Hadoop2.xHadoop3.x
NameNode内部通信端口8020/9000
NameNode HTTP UI500709870
MapReduce查看执行任务端口80888088
历史服务器通信端口1988819888

HDFS架构概述

Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。

随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种。

HDFS的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。

优缺点

优点
1)高容错性

数据自动保存多个副本。它通过增加副本的形式,提高容错性。
2)适合处理大数据

数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据;
文件规模:能够处理百万规模以上的文件数量,数量相当之大。
3)可构建在廉价机器上,通过多副本机制,提高可靠性。

缺点
1)不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。

2)无法高效的对大量小文件进行存储。

存储大量小文件的话,它会占用NameNode大量的内存来存储文件目录和块信息。这样是不可取的,因为NameNode的内存总是有限的;
小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。
3)不支持并发写入、文件随机修改。

一个文件只能有一个写,不允许多个线程同时写;
仅支持数据append(追加),不支持文件的随机修改。

HDFS架构

在这里插入图片描述

包含以下三个组件:

1)NameNode(nn):就是Master,它是一个主管、管理者。

(1)管理HDFS的名称空间;

(2)配置副本策略;

(3)管理数据块(Block)映射信息;

(4)处理客户端读写请求。

2)DataNode:就是Slave。NameNode下达命令,DataNode执行实际的操作。

(1)存储实际的数据块;

(2)执行数据块的读/写操作。

3)Client:就是客户端。

(1)文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行上传;

(2)与NameNode交互,获取文件的位置信息;

(3)与DataNode交互,读取或者写入数据;

(4)Client提供一些命令来管理HDFS,比如NameNode格式化;

(5)Client可以通过一些命令来访问HDFS,比如对HDFS增删查改操作;

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

(1)辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode ;

(2)在紧急情况下,可辅助恢复NameNode。

HDFS文件块大小

HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在Hadoop2.x/3.x版本中是128M,1.x版本中是64M。

思考:为什么块的大小不能设置太小,也不能设置太大?
(1)HDFS的块设置太小,会增加寻址时间,程序一直在找块的开始位置;(2)如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。导致程序在处理这块数据时,会非常慢。
总结:HDFS块的大小设置主要取决于磁盘传输速率。

HDFS的shell命令

HDFS shell命令基本以hadoop fs开头,输入hadoop fs会看到对应指令和说明

hadoop fs #查看指令说明

下面几个例子可以看出,基本和linux上的命令相似

hadoop fs -mkdir /mydir #创建文件夹
hadoop fs -ls /mydir #查看目录信息
hadoop fs -put ./demo.txt /mydir #上传文件到hdfs上
hadoop fs -get /mydir /demo.txt ./demo.txt #下载hdfs文件到本地
hadoop fs  -chmod 666  /mydir /demo.txt #修改文件权限

HDFS读写流程

写数据流程

在这里插入图片描述
(1)客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。

(2)NameNode返回是否可以上传。

(3)客户端请求第一个 Block上传到哪几个DataNode服务器上。

(4)NameNode返回3个DataNode节点,分别为dn1、dn2、dn3。

(5)客户端通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成。

(6)dn1、dn2、dn3逐级应答客户端。

(7)客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答。

(8)当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务器。(重复执行3-7步)。

在HDFS写数据的过程中,NameNode会选择距离待上传数据最近距离的DataNode接收数据。那么这个最近距离怎么计算呢?

依据节点距离,及待上传数据所在节点和DataNode所在节点距离。
不同数据中心节点距离=6;
同数据中心不同机架=4;
同机架不同节点=2;
相同节点=0;
在这里插入图片描述

HDFS读数据流程

在这里插入图片描述
(1)客户端通过DistributedFileSystem向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址。

(2)挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。

(3)DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验)。

(4)客户端以Packet为单位接收,先在本地缓存,然后写入目标文件。

NameNode 和 SecondaryNameNode工作机制

思考:NameNode中的元数据是存储在哪里的?

首先,我们做个假设,如果存储在NameNode节点的磁盘中,因为经常需要进行随机访问,还有响应客户请求,必然是效率过低。因此,元数据需要存放在内存中。但如果只存在内存中,一旦断电,元数据丢失,整个集群就无法工作了。因此产生在磁盘中备份元数据的FsImage。

这样又会带来新的问题,当在内存中的元数据更新时,如果同时更新FsImage,就会导致效率过低,但如果不更新,就会发生一致性问题,一旦NameNode节点断电,就会产生数据丢失。因此,引入Edits文件(只进行追加操作,效率很高)。每当元数据有更新或者添加元数据时,修改内存中的元数据并追加到Edits中。这样,一旦NameNode节点断电,可以通过FsImage和Edits的合并,合成元数据。

但是,如果长时间添加数据到Edits中,会导致该文件数据过大,效率降低,而且一旦断电,恢复元数据需要的时间过长。因此,需要定期进行FsImage和Edits的合并,如果这个操作由NameNode节点完成,又会效率过低。因此,引入一个新的节点SecondaryNamenode,专门用于FsImage和Edits的合并。

在这里插入图片描述
1)第一阶段:NameNode启动

(1)第一次启动NameNode格式化后,创建Fsimage和Edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。

(2)客户端对元数据进行增删改的请求。

(3)NameNode记录操作日志,更新滚动日志。

(4)NameNode在内存中对元数据进行增删改。

2)第二阶段:Secondary NameNode工作

(1)Secondary NameNode询问NameNode是否需要CheckPoint。直接带回NameNode是否检查结果。

(2)Secondary NameNode请求执行CheckPoint。

(3)NameNode滚动正在写的Edits日志。

(4)将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode。

(5)Secondary NameNode加载编辑日志和镜像文件到内存,并合并。

(6)生成新的镜像文件fsimage.chkpoint。

(7)拷贝fsimage.chkpoint到NameNode。

(8)NameNode将fsimage.chkpoint重新命名成fsimage。

DataNode工作机制

在这里插入图片描述
(1)一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。

(2)DataNode启动后向NameNode注册,通过后,周期性(6小时)的向NameNode上报所有的块信息。

(3)心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。

(4)集群运行中可以安全加入和退出一些机器。

DataNode数据完整性如何保证

如下是DataNode节点保证数据完整性的方法。

(1)当DataNode读取Block的时候,它会计算CheckSum。

(2)如果计算后的CheckSum,与Block创建时值不一样,说明Block已经损坏。

(3)Client读取其他DataNode上的Block。

(4)常见的校验算法crc(32),md5(128),sha1(160)

(5)DataNode在其文件创建后周期验证CheckSum。

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

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

相关文章

两天搞定计算机专业毕业设计,附源码

两天搞定计算机专业毕业设计,附源码 适用者毕设专业 使用要求具备基本Unity 基本操作小白即可,无需编码 博主诉求快乐毕业 点赞 关注 收藏 资源说明Free资源太多了,看截图目录就知道了 适用者 毕设专业 鄙人也是计算机狗一只,会…

软考A计划-电子商务设计师-复习要点

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

Ampere 又放大招,推出自研192 核AmpereOne 系列处理器,已投产

作者 | 伍杏玲 近日,Ampere Computing 发布2023年度战略和产品路线图,并推出全新的AmpereOne系列处理器,拥有多达 192 个单线程 Ampere 核,内核数量为业界最高。这是第一款基于 Ampere 新自研核的产品,由 Ampere 自有…

java--正则表达式

一、作用 作用一:校验字符串是否满足规则 作用二:在一段文本中查找满足要求的内容 二、符号含义 1、字符类(只匹配一个字符) 符号含义[abc]只能是a,b或c中一个[^abc]除了a,b,c之外的任何字符[a-zA-Z]a到z A到Z[a-d[m-p]]a到d&…

弱网测试,Network Link Conditioner你知多少

网络环境的好坏,有时会让你的产品带给用户完全不同的体验,作为开发者,在开发项目过程中,我们需要进行对于网络环境的调试。Mac环境下模拟慢速网络可以使用苹果官方提供的工具: Network Link Conditioner 具体操作步骤…

数字化时代,公司如何成为数据驱动组织

当前,数据要素和数字经济提出了数据在生产过程中发挥的重要作用。其中最热点的话题包括数据资产、数据价值、数据驱动和数字化转型。如果数据是一种资产,那么它应该为公司及其利益相关者创造价值。那么如何获从数据中获得得不同类型的价值以维持公司的竞…

Python获取当当平台商品数据信息可视化效果展示

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 环境使用: 版 本&#xff1a; python 3.8 编辑器&#xff1a;pycharm 2021.2 jupyter notebook 模块使用: 采集 requests >>> pip install requests 数据请求 csv <表格文件> 内置模块 保存数据 …

图书购物商城 图书后台管理系统

图书购物商城 图书后台管理系统 这个图书购物商城系统是一个基于JSP、Servlet和MySQL技术开发的综合性系统&#xff0c;它包括前台和后台功能。该系统旨在为用户提供一个便捷的购书平台&#xff0c;同时为管理员提供管理图书和订单的功能。 前台部分是用户使用的界面&#xf…

MQTT与EMQ

文章目录 1 MQTT协议与EMQ中间件1.1 物联网消息协议MQTT1.1.1 什么是MQTT1.1.2 MQTT相关概念1.1.3 消息服务质量QoS——信息的可靠投递1.1.3.1 QoS0——消息服务质量为0&#xff0c;消息发送至多一次1.1.3.2 QoS1——消息发送至少一次1.1.3.3 QoS2——消息发送仅一次1.1.3.4 不…

app渗透-常见问题及绕过

app渗透-常见问题及绕过 6.app常见问题和绕过前言6.1反代理操作前言6.1.1判断6.1.2实例演示-探探6.1.3绕过1-r0capture6.1.4绕过2-proxifier6.1.5绕过3-小黄鸟 6.2证书校验前言6.2.1判断6.2.2浏览器校验和解决6.2.3桡过证书单项校验-xp框架6.2.3绕过证书双向校验 6.app常见问题…

TongWeb8适配JakartaEE应用

历史&#xff1a; 2017年 Oracle将Java EE&#xff08;Java SE还自己保留&#xff09;交给开源组织&#xff0c;Eclipse基金会接手。但Oracle不允许开源组织使用Java名号&#xff0c;所以Jakarta EE名称于2018.02.26应运而生。 版本 发布日期 焦点说明 Java EE 8 2017.08 …

30天网络安全从入门到精通?

前言 毫无疑问&#xff0c;网络安全是当下最具潜力的编程方向之一。对于许多未曾涉足计算机编程的领域「小白」来说&#xff0c;深入地掌握网络安全看似是一件十分困难的事。至于一个月能不能学会网络安全&#xff0c;这个要看个人&#xff0c;对于时间管理不是很高的&#xf…

花3个月面过阿里测开岗,拿个25K不过分吧?

计算机专业&#xff0c;代码能力一般&#xff0c;之前有过两段实习以及一个学校项目经历。第一份实习是大二暑期在深圳的一家互联网公司做前端开发&#xff0c;第二份实习由于大三暑假回国的时间比较短&#xff08;小于两个月&#xff09;&#xff0c;于是找的实习是在一家初创…

南山村又一个旧改项目即将开工建设,桂庙新村城市更新单元。

5月22日&#xff0c;深圳市南山区城市更新和土地整备局发布关于粤海街道桂庙新村城市更新单元项目实施主体确认的公示。 根据公告&#xff0c;该项目实施方式为与权利主体签订搬迁补偿协议&#xff0c;补偿方式为产权置换和货币补偿相结合&#xff0c;已完成100%签约&#xff0…

【Linux】Nginx编译安装及系统服务添加

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Nginx 一、关于 NginxNginx和Apache的差异Apache的优势Nginx的优势 二. 编译安装Nginx服务1.关闭防火墙2.安装依赖包3.创建运行用户、组4.编译安装Nginx5.检查、启动、重启、…

mac电脑git clone项目时报错证书过期和权限被拒绝

mac电脑使用git clone命令克隆项目时&#xff0c;一开始一直提示证书过期 SSL certificate problem: certificate has expired 执行以下代码关掉验证后&#xff0c;解决了这个问题 找到git目录 Git\git-cmd输入命令跳转到bin目录&#xff0c;cd bin输入命令运行git.exe执行关…

2023网安164道面试题(附答案)

最近有不少小伙伴跑来咨询&#xff1a; 想找网络安全工作&#xff0c;应该要怎么进行技术面试准备&#xff1f;工作不到 2 年&#xff0c;想跳槽看下机会&#xff0c;有没有相关的面试题呢&#xff1f; 为了更好地帮助大家高薪就业&#xff0c;今天就给大家分享两份网络安全工…

回归模型评价指标R2_score

搞清楚R2_score计算之前&#xff0c;我们还需要了解几个统计学概念。 若用 y i y_i yi​表示真实的观测值&#xff0c;用 y ˉ \bar{y} yˉ​表示真实观测值的平均值&#xff0c;用 y i ^ \hat{y_i} yi​^​表示预测值,则&#xff1a; 回归平方和&#xff1a;SSR 即估计值与…

chatgpt赋能python:Python后退对SEO的影响

Python后退对SEO的影响 Python作为一种流行的编程语言&#xff0c;在各种应用场景中都有着广泛的应用。但是&#xff0c;对于一些需要考虑SEO优化的网站来说&#xff0c;Python后退往往被认为是一个不利因素。那么&#xff0c;Python后退对SEO究竟有什么影响&#xff0c;我们来…

GS2972(3G-SDI)视频输出驱动调试

GS2972视频输出调试 GS2972的硬件初始化GS2972的驱动时序GS2972的驱动RTL代码GS2972输出彩条GS2972驱动易出bug GS2972的硬件初始化 GS2972是HD-SDI/3G-SDI视频、音频串化器。其使用非常简单&#xff0c;但是要想把该芯片驱动起来&#xff0c;真心不容易。需要了解相关视频标准…