大数据技术之Hadoop:HDFS存储原理篇(五)

目录

一、原理介绍

1.1 Block块

1.2 副本机制

二、fsck命令

2.1 设置默认副本数量

2.2 临时设置文件副本大小

2.3 fsck命令检查文件的副本数

2.4 block块大小的配置

三、NameNode元数据

3.1 NameNode作用

3.2 edits文件

3.3 FSImage文件

3.4 元素据合并控制参数

3.5 SecondaryNameNode的作用

四、HDFS的读写流程

4.1 写入流程

4.2 读取流程


一、原理介绍

1.1 Block块

HDFS分布式文件存储,通常是将1个文件拆分成多个部分,然后分别发送到不同服务器节点上。

 

问题:不同的文件大小不一,粗暴的拆分然后放到服务器不同节点,会导致各个部分的大小也不一样,不利于统一管理。

解决办法:设定统一的管理单位,block块。

  •  Block块,HDFS最小存储单位
  • 每个256MB(可以修改)

这样可以将文件分成多个Block块,不同的Block块存入对应服务器。

举例说明

某个文件大小1G,那么理论上可以分为4个Block块。

如果集群有三台服务器,那么某台服务器放2个Block块,然后其他两台服务器各1个Block块。

1.2 副本机制

如果不备份,假如某个块损坏了,那么就会导致整个文件不可用。

所以,副本机制是保障数据安全的非常重要的机制。

二、fsck命令

2.1 设置默认副本数量

默认的HDFS文件的副本数量就是3个。

当然这个值可以修改,具体可以在hdfs-site.xml中配置如下属性

<property><name>dfs.replication</name><value>3</value>
</property>

这个属性默认是3,一般情况下,我们无需主动配置(除非需要设置非3的数值)

如果需要自定义这个属性,请修改每一台服务器的hdfs-site.xml文件,并设置此属性。

2.2 临时设置文件副本大小

如果不加限制,我们创建的文件或者上传的文件,默认副本数就是上面设置的值。

但是单次文件上传,我们也可以指定某个文件拥有多少个副本。

hadoop fs -D dfs.replication=2 -put test.txt /tmp/

对于已经存在HDFS的文件,修改dfs.replication属性不会生效,如果要修改已存在文件可以通过命令

hadoop fs -setrep [-R] 2 path

如上命令,指定path的内容将会被修改为2个副本存储。

-R选项可选,使用-R表示对子目录也生效。

2.3 fsck命令检查文件的副本数

我们要查看详细的文件副本数信息,可以通过如下命令:

hdfs fsck path [-files [-blocks [-locations]]]

fsck可以检查指定路径是否正常

        -files可以列出路径内的文件状态

        -files -blocks  输出文件块报告(有几个块,多少副本)

        -files -blocks -locations 输出每一个block的详情

2.4 block块大小的配置

默认情况下,block块的大小是256MB,当然我们也可以修改。

  <property><name>dfs.blocksize</name><value>268435456</value><description>设置HDFS块大小,单位是b</description></property>

三、NameNode元数据

3.1 NameNode作用

NameNode作用:管理Block块。

hdfs中,文件是被划分了一堆堆的block块,那如果文件很大、以及文件很多,Hadoop是如何记录和整理文件和block块的关系呢?

答案就在于NameNode。

NameNode基于一批edits和一个fsimage文件的配合完成整个文件系统的管理和维护。

3.2 edits文件

edits文件,是一个流水账文件,记录了hdfs中的每一次操作,以及本次操作影响的文件其对应的block。

 

3.3 FSImage文件

将全部的edits文件,合并为最终结果,即可得到一个FSImage文件

小结

NameNode基于editsFSImage的配合,完成整个文件系统文件的管理。

1. 每次对HDFS的操作,均被edits文件记录

2. edits达到大小上线后,开启新的edits记录

3. 定期进行edits的合并操作

  • 如当前没有fsimage文件,  将全部edits合并为第一个fsimage
  • 如当前已存在fsimage文件,将全部edits和已存在的fsimage进行合并,形成新的fsimage

4. 重复123流程

3.4 元素据合并控制参数

对于元数据的合并,是一个定时过程,基于:

dfs.namenode.checkpoint.period,默认3600(秒)即1小时

dfs.namenode.checkpoint.txns,默认1000000,即100W次事务

只要有一个达到条件就执行。

检查是否达到条件,默认60秒检查一次,基于:

dfs.namenode.checkpoint.check.period,默认60(秒),来决定。

3.5 SecondaryNameNode的作用

对于元数据的合并,还记得HDFS集群有一个辅助角色:SecondaryNameNode吗?

没错,合并元数据的事情就是它干的

SecondaryNameNode会通过httpNameNode拉取数据(editsfsimage

然后合并完成后提供给NameNode使用。

四、HDFS的读写流程

4.1 写入流程

1. 客户端向NameNode发起请求

2. NameNode审核权限、剩余空间后,满足条件允许写入,并告知客户端写入的DataNode地址

3. 客户端向指定的DataNode发送数据包

4. 被写入数据的DataNode同时完成数据副本的复制工作,将其接收的数据分发给其它DataNode

5. 如上图,DataNode1复制给DataNode2,然后基于DataNode2复制给Datanode3DataNode4

6. 写入完成客户端通知NameNodeNameNode做元数据记录工作

关键信息点:

NameNode不负责数据写入,只负责元数据记录和权限审批

客户端直接1DataNode写数据,这个DataNode一般是离客户端最近(网络距离)的那一个

数据块副本的复制工作,DataNode之间自行完成(构建一个PipLine,按顺序复制分发,如图12, 234

4.2 读取流程

1、客户端向NameNode申请读取某文件

2 NameNode判断客户端权限等细节后,允许读取,并返回此文件的block列表

3、客户端拿到block列表后自行寻找DataNode读取即可

关键点:

数据同样不通过NameNode提供

NameNode提供的block列表,会基于网络距离计算尽量提供离客户端最近的

这是因为1block3份,会尽量找离客户端最近的那一份让其读取。

最难不过坚持,继续下一关~

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文笔记:一分类及其在大数据中的潜在应用综述

0 概述 论文&#xff1a;A literature review on one‑class classification and its potential applications in big data 发表&#xff1a;Journal of Big Data 在严重不平衡的数据集中&#xff0c;使用传统的二分类或多分类通常会导致对具有大量实例的类的偏见。在这种情况…

小白备战大厂算法笔试(三)——栈、队列、双向队列

文章目录 栈栈常用操作栈的实现基于链表的实现基于数组的实现 两种实现对比栈典型应用 队列队列常用操作队列实现基于链表的实现基于数组的实现 队列典型应用 双向队列双向队列常用操作双向队列实现基于双向链表的实现基于数组的实现 双向队列应用 栈 栈是一种遵循先入后出的逻…

CVE-2017-12149

春秋云镜 CVE-2017-12149 JBoss反序列化漏洞 靶标介绍 2017年8月30日&#xff0c;厂商Redhat发布了一个JBOSSAS 5.x 的反序列化远程代码执行漏洞通告。该漏洞位于JBoss的HttpInvoker组件中的 ReadOnlyAccessFilter 过滤器中&#xff0c;其doFilter方法在没有进行任何安全检查…

算法通关村第十三关——溢出问题处理模板

前言 溢出问题是面试当中输出涉及到数字的一个需要特别注意的地方&#xff0c;典型的题目有三个&#xff1a;数字反转&#xff0c;将字符串转成数字和回文数。 1.整数反转 力扣7题&#xff0c;给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。…

rk3399 linux 5.10 usb 2.0设备上电概率性注册失败

多次开关机&#xff0c;发现usb hub和4G都通信失败了&#xff0c;这就有点奇怪了&#xff0c;按理说usb驱动是没啥问题的 先查看usb log rootlinaro-alip:/# dmesg | grep usb [ 1.723797] usbcore: registered new interface driver usbfs [ 1.723828] usbcore: regis…

在很多公司里面会使用打tag的方式保留版本

&#xff1a;git tag|grep "xxx-dev“等分支来查看 2&#xff1a;git cherry-pick XXXXX 然后就是查看有冲突这些 git status 会出现相关的异常 然后解决相关的冲突 git add . git cherry-pick --continue git push XXX HEAD:refs/for/XXX 第一&#xff1a;git ta…

【LeetCode-中等题】17. 电话号码的字母组合

文章目录 题目方法一&#xff1a;递归回溯 题目 方法一&#xff1a;递归回溯 参考讲解&#xff1a;还得用回溯算法&#xff01;| LeetCode&#xff1a;17.电话号码的字母组合 首先可以画出树图&#xff1a; 先将数字对应的字符集合 加入到一个map集合 这里需要一个index来控…

伪静态web.config常见规则写法与参数介绍说明

伪静态web.config常见规则写法与参数介绍说明. 示例1&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <configuration><system.webServer><rewrite><rules><rule name"规则 1" stopProcessing"tru…

【AI理论学习】语言模型:从Word Embedding到ELMo

语言模型&#xff1a;从Word Embedding到ELMo ELMo原理Bi-LM总结参考资料 本文主要介绍一种建立在LSTM基础上的ELMo预训练模型。2013年的Word2Vec及2014年的GloVe的工作中&#xff0c;每个词对应一个vector&#xff0c;对于多义词无能为力。ELMo的工作对于此&#xff0c;提出了…

Go 接口和多态

在讲解具体的接口之前&#xff0c;先看如下问题。 使用面向对象的方式&#xff0c;设计一个加减的计算器 代码如下&#xff1a; package mainimport "fmt"//父类&#xff0c;这是结构体 type Operate struct {num1 intnum2 int }//加法子类&#xff0c;这是结构体…

MySQL——数据库以及数据表的创建

创建数据库 回到刚才创建数据库的问题&#xff0c;我们在创建数据库的时候可以通过添加一个参数&#xff0c;这个参数的意义在于当我们创建的数据库已经存在的时候则不会创建&#xff0c;也不会报错&#xff0c;如果不使用这个参数&#xff0c;则我们在重复创建一个已经存在的…

数据结构--- 树

(一)知识补充 定义 树是一种数据结构,它是由n(n≥0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。​ 它具有以下的特点: 每个节点有零个或多个子节点; 没有父节点的节点称为根节点;每一个非根…

2023高教社杯 国赛数学建模E题思路 - 黄河水沙监测数据分析

1 赛题 E 题 黄河水沙监测数据分析 黄河是中华民族的母亲河。研究黄河水沙通量的变化规律对沿黄流域的环境治理、气候变 化和人民生活的影响&#xff0c; 以及对优化黄河流域水资源分配、协调人地关系、调水调沙、防洪减灾 等方面都具有重要的理论指导意义。 附件 1 给出了位…

vue2笔记

Vue笔记 视频: https://www.bilibili.com/video/BV1Zy4y1K7SH?p1 vue是渐进式JavaScript框架 用到什么功能&#xff0c;只需要引入什么功能模块 ; vue的特点:易用,灵活,高效; 组件化 , 一个vue文件包括了(html css js)声明式编程(不直接操作DOM) ;虚拟DOM diff算法(虚拟dom…

C# 基础面试题(万字)

1.选择题 1. 简述下面选项能够捕获运算溢出的异常类型的有 &#xff1f; A)Exception B)SystemException C)ArithmeticException D)OverflowException 试题回答&#xff1a;AD 2. 程序员可使用&#xff08;&#xff09;语句以程序方式引发异常 &#xff1f; A)run B)try C)th…

LAMP搭建WordPress

L linux A apache hhtpd M mysql/maridb P PHP1、 安装php yum -y install php php-fpm php-server php-mysql1.1、 启动php-fpm并自启 systemctl enable php-fpm --now[rootecs-1cee ~]# systemctl status php-fpm ● php-fpm.service - The PHP FastCGI Process ManagerLoa…

VR农学虚拟仿真情景实训教学演示

首先&#xff0c;VR农学虚拟仿真情景实训教学提供了更为真实的实践环境。传统的农学实训往往受制于时间、空间和资源的限制&#xff0c;学生只能通过观察或简单的模拟来学习农业知识和技能。而借助虚拟现实技术&#xff0c;学生可以进入虚拟农场&#xff0c;与各种农作物、工具…

【运维日常】infiniband网络架构,容器间跨机器不同网段通信

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

PY32F003F18按键输入

一、PY32F003F18的GPIO介绍 1、PY32F003F18的18个I/O&#xff0c;均可作为外部中断&#xff1b; 2、每个GPIO都可以由软件配置为输出&#xff1a; 1)、推挽输出(push-pull) 2)、开漏极输出(open drain) 注意:驱动电流为8mA; 3、每个GPIO都可以由软件配置为输入&#xff1a; 1)、…

c语言初阶指针

目录 何为指针 地址大小 野指针 成因 如何规避 有效性 指针计算 -整数 ​编辑 指针比较运算 指针-指针 ​编辑 数组与指针关系 二级指针 指针数组 应用 何为指针 指针就是指针变量&#xff0c;用来存放内存空间的一个编号&#xff0c;将指针比作我们宾馆的客人&a…