当前位置: 首页 > news >正文

大数据技术之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份,会尽量找离客户端最近的那一份让其读取。

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

相关文章:

大数据技术之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 元素据合并控制参数 …...

用C语言实现牛顿摆控制台动画

题目 用C语言实现牛顿摆动画&#xff0c;模拟小球的运动&#xff0c;如图所示 拆解 通过控制台API定位输出小球运动的只是2边小球&#xff0c;中间小球不运动&#xff0c;只需要固定位置输出左边小球上升下降时&#xff0c;X、Y轴增量一致。右边小球上升下降时&#xff0c;X、…...

如何自己开发一个前端监控SDK

最近在负责团队前端监控系统搭建的任务。因为我们公司有统一的日志存储平台、日志清洗平台和基于 Grafana 搭建的可视化看板&#xff0c;就剩日志的采集和上报需要自己实现了&#xff0c;所以决定封装一个前端监控 SDK 来完成日志的采集和上报。 架构设计 因为想着以后有机会…...

node.js笔记

首先&#xff1a;浏览器能执行 JS 代码&#xff0c;依靠的是内核中的 V8 引擎&#xff08;C 程序&#xff09; 其次&#xff1a;Node.js 是基于 Chrome V8 引擎进行封装&#xff08;运行环境&#xff09; 区别&#xff1a;都支持 ECMAScript 标准语法&#xff0c;Node.js 有独立…...

mysql 增量备份与恢复使用详解

目录 一、前言 二、数据备份策略 2.1 全备 2.2 增量备份 2.3 差异备份 三、mysql 增量备份概述 3.1 增量备份实现原理 3.1.1 基于日志的增量备份 3.1.2 基于时间戳的增量备份 3.2 增量备份常用实现方式 3.2.1 基于mysqldump增量备份 3.2.2 基于第三方备份工具进行增…...

9月5日上课内容 第一章 NoSQL之Redis配置与优化

本章结构 关系型数据库和非关系型数据库 概念介绍 ●关系型数据库&#xff1a; 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。 SQL 语句&#xff08;标准数据查询语言&#xff09;就是…...

QT 第四天

一、设置一个闹钟 .pro QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend…...

nrf52832 GPIO输入输出设置

LED_GPIO #define LED_START 17 #define LED_0 17 #define LED_1 18 #define LED_2 19 #define LED_3 20 #define LED_STOP 20设置位输出模式&#xff1a; nrf_gpio_cfg_output(LED_0); 输出高电平:nrf_gpio_pin_set(LED_0); 输…...

MyBatis 动态 SQL 实践教程

一、MyBatis动态 sql 是什么 动态 SQL 是 MyBatis 的强大特性之一。在 JDBC 或其它类似的框架中&#xff0c;开发人员通常需要手动拼接 SQL 语句。根据不同的条件拼接 SQL 语句是一件极其痛苦的工作。例如&#xff0c;拼接时要确保添加了必要的空格&#xff0c;还要注意去掉列…...

CSS 斜条纹进度条

效果&#xff1a; 代码&#xff1a; html: <div class"active-line flex"><!-- lineWidth&#xff1a;灰色背景 --><div class"bg-line"><div v-for"n in 30" class"gray"></div></div><div…...

JavaScript(1)每天10个小知识点

​ 目录 1. JavaScript 有哪些数据类型&#xff0c;它们的区别&#xff1f;**2. 数据类型检测的方式有哪些**3. null 和 undefined 区别**4. intanceof 操作符的实现原理及实现**5. 如何获取安全的 undefined 值&#xff1f;**6. Object.is() 与比较操作符 “”、“” 的区别*…...

scanf和scanf_s函数详解

目录 引言&#xff1a; 1.scanf函数的用法&#xff1a; 2.scanf_s函数的用法&#xff1a; 3.scanf和scanf_s的区别&#xff1a; 结论&#xff1a; 引言&#xff1a; 在C语言中&#xff0c;输入函数scanf是非常常用的函数之一&#xff0c;它可以从标准输入流中读取数据并将其…...

基于SSM的在线购物系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…...

认识JVM的内存模型

从上一节了解到整个JVM大的内存区域&#xff0c;分为线程共享的heap&#xff08;堆&#xff09;&#xff0c;MethodArea&#xff08;方法区&#xff09;&#xff0c;和线程独享的 The pc Register&#xff08;程序计数器&#xff09;、Java Virtual Machine Stacks&#xff08;…...

Java8实战-总结19

Java8实战-总结19 使用流映射对流中每一个元素应用函数流的扁平化 使用流 映射 一个非常常见的数据处理套路就是从某些对象中选择信息。比如在SQL里&#xff0c;你可以从表中选择一列。Stream API也通过map和flatMap方法提供了类似的工具。 对流中每一个元素应用函数 流支持…...

论文浅尝 | 训练语言模型遵循人类反馈的指令

笔记整理&#xff1a;吴亦珂&#xff0c;东南大学硕士&#xff0c;研究方向为大语言模型、知识图谱 链接&#xff1a;https://arxiv.org/abs/2203.02155 1. 动机 大型语言模型&#xff08;large language model, LLM&#xff09;可以根据提示完成各种自然语言处理任务。然而&am…...

【云计算网络安全】解析DDoS攻击:工作原理、识别和防御策略 | 文末送书

文章目录 一、前言二、什么是 DDoS 攻击&#xff1f;三、DDoS 攻击的工作原理四、如何识别 DDoS 攻击五、常见的 DDoS 攻击有哪几类&#xff1f;5.1 应用程序层攻击5.1.1 攻击目标5.1.2 应用程序层攻击示例5.1.3 HTTP 洪水 5.2 协议攻击5.2.1 攻击目标5.2.2 协议攻击示例5.2.3 …...

64位Linux系统上安装64位Oracle10gR2及Oracle11g所需的依赖包

在64位Linux系统上安装64位Oracle 10gR2,到底需要装哪些包? 这不是一个完整的安装教程,仅仅探讨在64位CentOS 5.8系统上安装64位Oracle 10gR2,到底需要装哪些RPM包. 实验环境VMWare Workstation 8.0 Linux发行版: CentOS 5.8 x86_64 Kernel版本: 2.6.18-308.el5 Oracle Dat…...

Unity InputSystem 基础使用之鼠标交互

资料 官方文档 导入InputSystem包 Package Manager 搜索Input System进行下载启用该包&#xff0c;会重启Unity Editor 注意 InputSystem可以和旧版输入系统一起使用 设置&#xff1a;Project Settings->Player->Other Settings->Configuration->Active Input…...

《算法竞赛·快冲300题》每日一题:“二进制数独”

《算法竞赛快冲300题》将于2024年出版&#xff0c;是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码&#xff0c;以中低档题为主&#xff0c;适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 二…...

CnosDB 签约京清能源,助力分布式光伏发电解决监测系统难题。

近日&#xff0c;京清能源采购CnosDB&#xff0c;升级其“太阳能光伏电站一体化监控平台”。该平台可以实现电站设备统一运行监控&#xff0c;数据集中管理&#xff0c;为操作人员、维护人员、管理人员提供全面、便捷、差异化的数据和服务。 京清能源集团有限公司&#xff08;…...

汇编:lea 需要注意的一点

lea和mov的效用上不一样&#xff0c;如果当前%rsi的值是0&#xff0c; lea 0x28(%rsi),%rax &#xff0c;这个只是计算一个地址&#xff0c;而不是去做地址访问。 mov 0x8(%rsi),%rsi&#xff0c;而这个mov&#xff0c;在计算完地址&#xff0c;还要访问内存地址。如果rsi是0&a…...

SQL语言的分类:DDL(数据库、表的增、删、改)、DML(数据的增、删、改)

数据库管理系统&#xff08;数据库软件&#xff09;功能非常多&#xff0c;不仅仅是存储数据&#xff0c;还要包含&#xff1a;数据的管理、表的管理、库的管理、账户管理、权限管理等。 操作数据库的SQL语言&#xff0c;基于功能&#xff0c;划分为4类&#xff1a; 1、数据定…...

微信小程序精准扶贫数据收集小程序平台设计与实现

摘 要 近些年以来&#xff0c;随着我国的互联网技术的不断进步&#xff0c;计算机科学技术的发展也在不断的快速发展。在当下“互联网”的带动下&#xff0c;我国的各行各业&#xff0c;上到政府机关下到小微企业都通过互联网的发展带动取得了很好的发展势头。我国这两年来通过…...

PostgreSQL 流复制搭建

文章目录 前言1. 配置环境1.1 环境介绍1.2 主库白名单1.3 主库参数配置 2. 流复制搭建2.1 备份恢复2.2 创建复制用户2.3 参数修改2.4 启动并检查2.5 同步流复制2.6 同步复制级别 3. 流复制监控3.1 角色判断3.2 主库查看流复制3.3 延迟监控3.4 备库查询复制信息 前言 PostgreSQ…...

机器学习笔记之最优化理论与方法(十)无约束优化问题——共轭梯度法背景介绍

机器学习笔记之最优化理论与方法——共轭梯度法背景介绍 引言背景&#xff1a;共轭梯度法线性共轭梯度法共轭方向共轭VS正交共轭方向法共轭方向法的几何解释 引言 本节将介绍共轭梯度法&#xff0c;并重点介绍共轭方向法的逻辑与几何意义。 背景&#xff1a;共轭梯度法 关于…...

Mybatis核心对象及工作流程

目录 一、mybatis核心对象 &#xff08;1&#xff09;SqlSession对象直接操作数据库 &#xff08;2&#xff09;SqlSession对象通过代理对象操作数据库 二、mybatis工作流程 一、mybatis核心对象 &#xff08;1&#xff09;SqlSessionFactoryBuilder SqlSession工厂构建者对…...

无swing,高级javaSE毕业之贪吃蛇游戏(含模块构建,多线程监听服务),已录制视频

JavaSE&#xff0c;无框架实现贪吃蛇 B站已发视频&#xff1a;无swing&#xff0c;纯JavaSE贪吃蛇游戏设计构建 文章目录 JavaSE&#xff0c;无框架实现贪吃蛇1.整体思考2.可能的难点思考2.1 如何表示游戏界面2.2 如何渲染游戏界面2.3 如何让游戏动起来2.4 蛇如何移动 3.流程图…...

Kafka3.0.0版本——消费者(消费者组详细消费流程图解及消费者重要参数)

目录 一、消费者组详细消费流程图解二、消费者的重要参数 一、消费者组详细消费流程图解 创建一个消费者网络连接客户端&#xff0c;主要用于与kafka集群进行交互&#xff0c;如下图所示&#xff1a; 调用sendFetches发送消费请求&#xff0c;如下图所示&#xff1a; (1)、Fet…...

算法通关村-----位运算在海量元素中查找重复元素的妙用

用4KB内存寻找重复元素 问题描述 给定一个数组&#xff0c;包含从1到N的整数&#xff0c;N最大为32000&#xff0c;数组可能还有重复值&#xff0c;且N的取值不定&#xff0c;若只有4KB内存可用&#xff0c;如何打印数组中所有的重复元素。 问题分析 Java中存储整数使用int…...

上海网站建设免费推/sem是什么的英文缩写

待写&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c;...

建行官方网站/网站关键词搜索排名

1、文件系统&#xff1a; 在Linux中支持许多的文件系统&#xff0c;我们不必要全部掌握&#xff1a; ext2&#xff1a;最常用的Linux文件系统&#xff0c;支持256个字节的长文件名&#xff1b; ext3&#xff1a;ext2的升级版&#xff0c;兼容ext2&#xff0c;带日志功能&#x…...

服饰网站新闻建设/5118站长工具

一、创建文件夹 1.点击"Collections"TAB进入&#xff0c;再次点击【New Collection】按钮创建文件夹。 示例图文&#xff1a; 二、定义变量及调用执行测试&#xff0c;方便灵活调用 1.定义全局变量&#xff0c;用于全局使用&#xff1b;操作步骤为&#xff1a;点击…...

=> wordpress 翻译 不显示/网络培训课程

仅作为记录&#xff0c;大佬请跳过。 原因是命名重复 展示&#xff1a; 参考&#xff1a; 感谢大佬博主文章传送门...

seo搜索引擎优化总结报告/seo全网优化推广

问题描述 轮盘游戏来自赌场&#xff0c;轮盘上面平均分成若干个小的扇形&#xff0c;每个扇形上都有一个数字&#xff0c;流传较广的轮盘数字布局有“欧式规则”和“美式规则”两种。当 2 < n < 36时&#xff0c;求连续 n 个数字的和最大值的数字排列情况&#xff0c;以…...

magento做预订类网站/关键词排名优化易下拉软件

【015-3 Sum&#xff08;三个数的和&#xff09;】 【LeetCode-面试算法经典-Java实现】【全部题目文件夹索引】 原题 Given an array S of n integers, are there elements a, b, c in S such that a b c 0? Find all unique triplets in the array which gives the sum o…...