HDFS 组织架构

news2024/9/22 17:22:18

优质博文:IT-BLOG-CN

一、HDFS 概述

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

HDFS 定义: HDFS(Hadoop Distributed File System)分布式文件系统,用于存储文件,通过目录树来定位文件,其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。

HDFS 的使用场景: 适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用。

二、HDFS 优缺点

优点:
【1】容错性: 数据自动保存多个副本。通过增加副本的形式,提高容错性。如下三个副本中其中一个副本挂掉了:
在这里插入图片描述

某一个副本丢失以后,它可以自动恢复
在这里插入图片描述

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

缺点:
【1】不适合低延时数据访问:比如毫秒级的存储数据,是做不到的。
【2】无法高效对大量小文件进行存储:存储大量小文件的话,它会占用 NameNode 大量的内存来存储文件目录和块信息。这样是不可取的,因为 NameNode的内存总是有限的。同时,小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。
【3】不支持并发写入、文件随机修改:一个文件只能有一个写,不允许多个线程同时写。仅支持数据 append(追加),不支持文件的随机修改。

三、HDFS 组成架构

HDFS(Hadoop Distributed File System)的架构概述,易懂版,如图所示。
在这里插入图片描述

HDFS 组成架构(官网)
点击并拖拽以移动​

【1】NameNode(nn): 就是Master,作为管理者:
(1)管理 HDFS 的名称空间;
(2)配置副本策略;
(3)管理数据块(Block)的映射信息;
(4)处理客户端读写请求;

【2】DataNode: 就是 Slave。NameNode 下达命令,DataNode 执行实际操作。
(1)存储实际的数据块;
(2)执行数据块的读/写操作;

【3】Secondary NameNode: 非 NameNode 的热备。当 NameNode 挂掉时,它并不能马上替换 NameNode 并提供服务。
(1)辅助 NameNode,分担其工作量,比如定期合并 Fsimage 和 Edits,并推送给 NameNode;
(2)在紧急情况下,可辅助恢复 NameNode;

【4】Client: 客户端
(1)文件切分。文件上传 HDFS 的时候,Client 将文件切分成一个一个的 Block,然后进行上传;
(2)与 NameNode 交互,获取文件的位置信息;
(3)与 DataNode 交互,读取或者写入数据;
(4)Client 提供一些命令来管理 HDFS,比如 NameNode 格式化;
(5)Client 可以通过一些命令来访问 HDFS,比如对 HDFS 的增删改查操作;

【5】副本的复制策略: 首先 HDFS副本复制策略基于的前提是机架感知,对此首先需要了解网络的带宽是如何计算:
(1)相同机架的不同节点之间的网络传输速度都是2;
(2)不同机架的不同节点之间的网络传输速度是4;

【策略如下】:
第一个副本:如果客户端在当前 DataNode节点上发送请求,第一个副本就保存在客户端所在的节点上(遵循就近原则) 如果客户端不在集群的任意节点上,则随机选择一个节点保存副本;
第二个副本:和第一个副本不同的机架上的随机节点上 (为了保证数据的安全) ;
第三个副本:和第二个副本在同机架的不同节点上(为了副本的复制速度) ;

四、HDFS 文件块大小

HDFS 中的文件在物理上是分块存储(Block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认在 Hadoop2.x版本中是 128M,老版本是 64M。
在这里插入图片描述

HDFS 块大小设置: 为什么块的大小不能设置太小,也不能设置太大
【1】HDFS 块设置太小,会增加寻址时间,程序一直在找块的位置;
【2】如果块设置的太大,从磁盘传输数据的时间会明显大于块定位的时间。导致程序在处理块数据时,会非常慢。

总结: HDFS 块的大小设置取决于磁盘传输速率

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

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

相关文章

蜜罐技术是一种什么防御技术?实现原理是什么?

前言:蜜罐技术的出现改变了这种被动态势,它通过吸引、诱骗攻击者,研究学习攻击者的攻击目的和攻击手段,从而延缓乃至阻止攻击破坏行为的发生,有效保护真实服务资源。 自网络诞生以来,攻击威胁事件层出不穷…

设置虚拟机为静态IP

为什么需要设置静态IP:有时候我们在练习项目的时候,明明已经连接好了虚拟机的ip,某一天突然连接不上了,通过ifconfig命令查看发现虚拟机的ip发生了变化,导致之前做的内容都需要重新布置, 一、设置静态IP …

AI办公自动化:用kimi将子文件夹里面的文件批量重命名

工作任务和目标:一个文件夹下有多个子文件夹 子文件夹中有多个srt文件,需要删除文件名中的english和空格 第一步,在kimi中输入如下提示词: 你是一个Python编程高手,一步步的思考,来编写下面任务的Python脚…

如何使用pycrypt加密工具测试反病毒产品的检测性能

关于pycrypt pycrypt是一款基于Python 3语言开发的加密工具,广大研究人员可以使用该工具来尝试绕过任意类型的反病毒产品,以检测目标反病毒产品的安全性能。 功能介绍 1、目前已知反病毒产品检测率为0/40; 2、支持绕过任意EDR解决方案&#…

【C++】类与对象——继承详解

目录 一、继承的概念 二、继承关系和访问限定符 三、基类和派生类对象赋值转换 四、继承中的作用域 五、派生类的默认成员函数 六、复杂的菱形继承及菱形虚拟继承 一、继承的概念 继承是面向对象程序设计中很重要的一个概念。继承允许我们依据另一个类来定义一个类&#…

python01

一、Python介绍 Python是一个计算编程语言,可以实现计算程序开发,也可以用于数据处理。SQL语言只能用于结构化数据的处理。Python的比SQL应用更广泛。 1990年推广Python,最初是应用于运维开发,随着不断更新迭代Python的功能更加丰…

AWS Elastic Beanstalk 监控可观测最佳实践

一、概述 Amazon Web Services (AWS) 包含一百多种服务,每项服务都针对一个功能领域。服务的多样性可让您灵活地管理 AWS 基础设施,然而,判断应使用哪些服务以及如何进行预配置可能会非常困难。借助 Elastic Beanstalk,可以在 AW…

仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码

码名称:仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码 开发环境:帝国cms7.5 空间支持:phpmysql 仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码自动采集 - 我爱模板网源码名称:仿《Q极速体育》NBACBA体育直…

【机器学习与大模型】驱动下的应用图像识别与处理

摘要: 本文深入探讨了机器学习在图像识别与处理领域的应用,特别是在大模型的推动下所取得的巨大进展。详细阐述了图像识别与处理的基本原理、关键技术,以及机器学习算法和大模型如何提升其性能和准确性。通过实际案例分析了其在多个领域的广泛…

大模型分布式训练并行技术分享

目前业内解决大模型问题,基本以多节点、分布式方案为主。分布式方案具体的实施时,又分为数据并行、参数并行、流水线并行等,针对具体的业务场景采取合适的并行方案方可带来更高的效率。 后续结合业内主流的分布式框架,具体介绍各种…

网络编程的基础知识(适合新手)

网络编程 在Java中,网络编程是指使用Java语言进行网络通信的编程技术。这种技术使得位于不同地理位置的计算机能够通过网络进行通信,实现资源共享和信息传递。 一、定义 Java网络编程是Java语言在网络通信方面的应用,它利用Java提供的网络…

[图解]产品经理-竞赛题解析:阿布思考法和EA

1 00:00:00,410 --> 00:00:02,330 今天我们来说一道 2 00:00:02,610 --> 00:00:04,690 前些天出的一道竞赛题 3 00:00:07,250 --> 00:00:09,310 怎么样用阿布思考法 4 00:00:09,320 --> 00:00:10,540 来改进EA 5 00:00:11,690 --> 00:00:12,620 题目是这样的…

APP安全测试汇总【网络安全】

APP安全测试汇总 一.安装包签名和证书 1.问题说明 检测 APP 移动客户端是否经过了正确签名,通过检测签名,可以检测出安装包在签名后是否被修改过。如 果 APP 使⽤了 debug 进⾏证书签名,那么 APP 中⼀部分 signature 级别的权限控制就会失效…

MTK下载AP

只升级选Firemare Upgrade ,点下载后,关机下插入USB

刷代码随想录有感(79):回溯算法——N皇后问题

题干: 代码&#xff1a; class Solution { public:vector<vector<string>> res;void backtracking(vector<string>& chessboard, int n, int row){if(row n){res.push_back(chessboard);return;}for(int col 0; col < n; col){if(isvalid(chessboa…

从0开始学统计-卡方检验

1.什么是卡方检验&#xff1f; 卡方检验是一种用于检验观察频数与期望频数之间差异的统计方法。它通常用于分析分类变量之间的关联性或独立性。在卡方检验中&#xff0c;我们将观察到的频数与期望频数进行比较&#xff0c;从而确定它们之间的差异是否显著。 卡方检验的基本思…

【Linux】-Redis安装部署[15]

目录 简介 安装 1、配置EPEL仓库 2、安装redis 3、启动redis 4、放行防火墙&#xff0c;redis使用端口6379 5、进入redis服务 简介 redis是一个开源、使用C语言编写的、支持网络互交的、可基于内存也可持久化的Key-Value数据库。redis的特点就是&#xff1a;快&#xf…

IDEA快速生成类注释和方法注释的方法

1.生成类、接口、枚举、注解等文件的注释&#xff0c;不仅仅是class 2.生成方法注释的 可在方法上方空行输入/** 按enter键快速生成。生成的样式如下&#xff1a; PS:生成的返回值带一堆英文文字说明&#xff0c;感觉没必要 如果想生成比较全面的方法注释&#xff0c;如作者&…

【Codesys】-执行第三方程序,或Windows脚本

该记录旨在解决RTE作为第一个Windows的一个exe程序不能调用其他程序的问题。 可以实现:在PLC界面打开第三方程序、在PLC界面关闭本机Windows操作系统 首先添加依赖库-SysProcess,3.5.17.0 然后在程序里执行相应的指令&#xff0c;该指令可以被Windows识别为类似于执行Bat文件…

听说京东618裁员?所以日常准备很重要呀

文末有最少必要的面试题&#xff0c;还准备了离线 PDF 版本。 京东也要向市场输送人才了? 这几天看到技术群里不少朋友在讨论京东裁员相关的信息。 我去看了下京东近期的操作&#xff0c;京东内部考勤调整和午休时间缩短&#xff0c;以及强化打卡机制等管理调整&#xff1b;有…