大数据3 -Hadoop HDFS-分布式文件系统

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

目录

1.为什么需要分布式存储?

2. HDFS的基础架构

3. HDFS存储原理

4. NameNode是如何管理Block块的

5. HDFS数据的读写流程 



1.为什么需要分布式存储?

数据量太大,单机存储能力有上限,需要靠数量来解决问题
数量的提升带来的是网络传输、磁盘读写、 CPU 、内存等各方面的综合提升。 分布式组合在一起可以达到 1+1>2 的效果

大数据体系中,分布式的调度主要有2类架构模式:

去中心化模式

       中心化模式 

去中心化模式,没有明确的中心。

众多服务器之间基于特定规则进行同步协调。

大数据框架,大多数的基础架构上,都是符合:中心化模式的

即:有一个中心节点(服务器)来统筹其它服务器的工作,统一指挥,统一调派,避免混乱。

这种模式,也被称之为:一主多从模式,简称主从模式(Master And Slaves

主从模式(中心化模式)在现实生活中同样很常见:

公司企业管理
组织管理
行政管理
等等

Hadoop框架,就是一个典型的主从模式(中心化模式)架构的技术框架。

总结:

1. 分布式系统常见的组织形式?

去中心化模式:没有明确中心,大家协调工作
中心化模式:有明确的中心,基于中心节点分配工作

2. 什么是主从模式?

主从模式(Master-Slaves)就是中心化模式,表示有一个主节点来作为管理者,管理协调下属一批从节点工作。

3. Hadoop是哪种模式?

主从模式(中心化模式)的架构

2. HDFS的基础架构

HDFSHadoop三大组件(HDFSMapReduceYARN)之一

全称是: Hadoop Distributed File System Hadoop 分布式文件系统)
Hadoop 技术栈内提供的分布式数据存储解决方案
可以在多台服务器上构建存储集群,存储海量的数据

 HDFS的基础架构:

NameNode

HDFS 系统的主角色,是一个独立的进程
负责管理 HDFS 整个文件系统
负责管理 DataNode

SecondaryNameNode

NameNode 的辅助,是一个独立进程
主要帮助 NameNode 完成元数据整理工作(打杂)

DataNode

HDFS 系统的从角色,是一个独立进程
主要负责数据的存储,即存入数据和取出数据

3. HDFS存储原理

4. NameNode是如何管理Block块的

edits文件

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

答案就在于NameNode

NameNode基于一批edits和一个fsimage文件的配合

完成整个文件系统的管理和维护

edits记录每一次HDFS的操作

逐渐变得越来越大

 

问题在于,当用户想要查看某文件内容

如:/tmp/data/test.txt

就需要在全部的edits中搜索

(还需要按顺序从头到尾,避免后期改名或删除)

效率非常低

需要合并edits文件,得到最终的结果

fsimage文件

NameNode元数据管理维护

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

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

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

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

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

5. 重复123流程

 元数据合并控制参数

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

dfs.namenode.checkpoint.period,默认 3600 (秒)即 1 小时
dfs.namenode.checkpoint.txns,默认 1000000 ,即 100W 次事务

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

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

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

SecondaryNameNode的作用

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

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

SecondaryNameNode会通过httpNameNode拉取数据(editsfsimage

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

1. NameNode基于

edits 记录每次操作
fsimage ,记录某一个时间节点前的当前文件系统全部文件的状态和信息

维护整个文件系统元数据

2. edits文件会被合并到fsimage中,这个合并由:

SecondaryNameNode来操作

3. fsimage记录的内容是

5. HDFS数据的读写流程 

1. 客户端向NameNode发起请求

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

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

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

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

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

 读:

关键信息点:

NameNode 不负责数据写入 ,只负责元数据记录和权限审批
客户端直接 1 DataNode 写数据, 这个DataNode一般是 离客户端最近 (网络距离) 的那一个
数据块副本的复制工作, DataNode 之间自行完成 (构建一个 PipLine ,按顺序复制分发,如图 1 2, 2 3 4

写:

关键点:

1、数据同样不通过NameNode提供

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

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

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

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

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

1、对于客户端读取HDFS数据的流程中,一定要知道

不论读、还是写,NameNode都不经手数据,均是客户端和DataNode直接通讯

不然对NameNode压力太大

2、写入和读取的流程,简单来说就是:

NameNode 做授权判断(是否能写、是否能读)
客户端直连 DataNode 进行写入(由 DataNode 自己完成副本复制)、客户端直连 DataNode 进行 block 读取
写入,客户端会被分配找离自己最近的 DataNode 写数据
读取,客户端拿到的 block 列表,会是网络距离最近的一份

3、网络距离

最近的距离就是在同一台机器
其次就是同一个局域网(交换机)
再其次就是跨越交换机
再其次就是跨越数据中心

HDFS内置网络距离计算算法,可以通过IP地址、路由表来推断网络距离


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

相关文章

Kubernetes部署Nacos集群

一、k8s架构 1master 2node 二、安装nfs 安装nfs-utils和rpcbind nfs客户端和服务端都安装nfs-utils包 yum install nfs-utils rpcbind创建共享目录 mkdir -p /nfsdata chmod 777 /nfsdata编辑/etc/exports文件添加如下内容 vi /etc/exports/nfsdata *(rw,sync,no_root_…

华为OD机试用JS实现 -【硬件产品销售方案】(2023-Q2 押题)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:硬件产品销售方案 题目描述 …

事务是什么?

一、什么是事务? 事务(Transaction)是访问并可能更新数据库中各项数据项的一个程序执行单元。 事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。 事务是…

【C++11】右值引用深度详解

C11 中的右值引用是一种新的引用类型,用于表示一个对象是右值。右值引用的语法是使用 && 符号来声明一个右值引用类型的变量或参数。 右值引用的原理是通过将右值引用绑定到一个右值上,实现对右值的移动语义和完美转发等功能。右值引用可以用于…

梦中情树---二叉树

前言: 今天就来讲树的一种特殊结构---二叉树 当然先来给大家看一张图片 看到这棵树了吗?它从根开始,每个结点都有且仅有两个分支,这个结构就是我们的二叉树。 其实我们上次讲的堆也可以看成一棵二叉树,但是人家的本质…

【快乐手撕LeetCode题解系列】——移除元素

【快乐手撕LeetCode题解系列】——移除元素😎前言🙌移除元素🙌解题思路分析 😍解题思路一 :源代码分享:😍程序输出结果验证:😊总结撒花💞😎博客昵…

PCL 最小二乘法拟合平面(SVD)

文章目录 一、简介1.1最小二乘法拟合平面1.2 SVD角度二、实现代码三、实现效果参考资料一、简介 1.1最小二乘法拟合平面 之前我们使用过最为经典的方式对平面进行了最小二乘拟合(点云最小二乘法拟合平面),其推导过程如下所示: 仔细观察一下可以发现

多个渠道成功销售的秘诀速递

将您的电子商务业务扩展到多个渠道销售似乎是一项艰巨的任务吗?但如果有了正确的多渠道增长战略,这可能是实现快速增长的好方法。当然,您需要考虑借助一些工具与策略,而SaleSmartly(ss客服)可以为您提供。 …