HDFS初认识

news2024/12/24 11:43:10

HDFS初认识


文章目录

  • HDFS初认识
    • HDFS是什么?
    • HDFS的假想和设计目标
    • HDFS的优缺点
      • 优点
      • 缺点
    • HDFS的架构组成
      • 客户端
      • NameNode
      • DataNode
      • Secondary NameNode
        • 职责
        • checkpoint机制
    • 参考


HDFS是什么?

Hadoop分布式文件系统(HDFS)是一个分布式文件系统,HDFS与现有的分布式文件系统有许多相似之处。但是,与其他分布式文件系统的差异是很大的。

  • HDFS全称为Hadoop Distribute File System

  • HDFS解决了海量数据无法单台机器存储的问题,将海量的数据存储在不同的机器中,有HDFS文件系统统一管理和维护, 提供统一的访问目录和API 。

HDFS的假想和设计目标

  • 硬件故障

硬件故障是常态而非例外。一个HDFS实例可能由数百或数千台服务器机器组成,每台机器都存储着文件系统的部分数据。事实上,有大量的组件,而且每个组件都有一个非微不足道的故障概率,这意味着HDFS的某些组件总是不能正常工作。因此,检测故障和快速自动恢复故障是HDFS的一个核心架构目标。

  • 流式数据访问

  • 大数据集
    在HDFS上运行的应用程序有大量的数据集。

  • 简单的一致性模型

  • 移动计算比移动数据更便宜

如果应用程序要求的计算是在它所操作的数据附近执行的,那么它的效率会高很多。当数据集的大小很庞大时,这一点尤其正确。这可以最大限度地减少网络拥堵,增加系统的整体吞吐量。其假设是,将计算迁移到离数据所在地更近的地方,而不是将数据迁移到应用程序运行的地方,这样做往往更好。HDFS为应用程序提供了接口,使其更接近数据所在的位置。

  • 在不同的硬件和软件平台上的可移植性

  • 名称节点和数据节点

HDFS的优缺点

优点

  • HDFS具有高容错性,安全性,并被设计成可以部署在低成本的硬件上。

数据存储在不同的机器中,并且每个数据块默认存储3个副本(存储在不同的机器中),当集群中的某个数据块的副本由于某种原因(宕机,磁盘损坏等)丢失以后,HDFS会自动恢复!

  • 扩展性

HDFS的存储能力可以通过添加机器来扩容,并且极易横向扩容,整个集群中所有机器的存储能力就是HDFS的存储能力

  • 可以存储海量数据

单个很大的文件可以存储在HDFS中,也可以存储百万个以上的文件数据量。

  • HDFS提供了对应用数据的高吞吐量访问,适用于拥有大型数据集的应用。

  • HDFS放宽了一些POSIX要求,以实现对文件系统数据的流式访问

缺点

  • 不适合低延迟的数据访问 , 比如毫秒级的数据访问和数据存储

数据底层存储在不同的机器中,并且大文件会被切块存储在不同的机器中,读取数据极可能需要RPC远程网络请求获取数据,所以数据的访问时间比较长

  • 不适合存储大量的小文件数据

    • 每个数据文件在NameNode中记录元数据信息,存储大量小文件增加NameNode的压力,占用NameNode的内存,影响集群的整体存储能力,这样往往是不可取的。

    • 大量小文件的寻址时间会超过读取时间(读取时间/寻址时间=100/1),这也违背了HDFS起初的设计目标。

  • 不支持并发写随机修改

    • 一个文件仅支持单个线程写,不支持多个线程写

    • 仅支持数据的append(追加)操作,不支持数据的随机写

注意:HDFS文件系统适合一次写入多次读取的数据操作;主要用于存储数据。

HDFS的架构组成

Hadoop官网的HDFS架构图如下所示:

HDFS采用的是主从结构模式 , 主节点[MASTER]NameNode ➕ 从节点[SLAVES] DataNode,HDFS组成架构还包括SecondaryNameNode 客户端,接下来逐个介绍!

客户端

  • HDFS提供了两种客户端操作 Shell命令JAVA接口 都可以和HDFS系统交互!

  • 用户可以通过一些命令来访问HDFS,进行文件的上传,下载,读取,以及追加数据内容,删除,移动等操作

  • 文件切分。文件上传HDFS的时候,Cliet将文件切分成一个一个的Block,然后进行上传;

  • 与NameNode交互,获取文件的位置信息

  • 与DataNode交互,读取或者写入数据

  • Client提供一些命令来管理HDFS。比如NameNode格式化

NameNode

NameNode就是Master节点,是一个主管、管理者。

  • 用于记录文件存储的元数据对象(NameNode将这些数据的元数据信息记录在内存中,并且将这些元数据信息定期的序列化到本地磁盘上),记录用户操作的行为日志、记录用户存储的文件的大小、切分的块数、每一块的副本数和存储在DataNode上的位置

  • 处理客户端的读写请求,给DataNode分配存储任务 , 或者是给客户端请求数据的元信息

  • NameNode可以认为是HDFS的老大 , 维护集群中的节点的数量,接收DataNode的注册, 维护了一个统一的集群版本

  • 维护集群中数据的负载均衡副本个数

  • 接收DataNode的心跳汇报

  • 接收DataNode的数据的汇报 , 更新节点映射(元数据)

DataNode

DataNode节点是HDFS系统正在查处用户数据的节点,即Slave节点。NameNode下达命令,DataNode执行命令实际的操作

  • 存储实际的数据块,将数据以物理切块的形式存储在本地指定的磁盘目录中

  • 处理客户端的请求

  • 接收NameNode分配的任务

  • 接收NameNode的指令完成容错工作,副本的复制与移动

  • 定期地向NameNode心跳响应请求,默认每间隔3s一次

  • 汇报自己存储的数据数据,默认间隔时间为1小时

  • 执行数据块的读/写操作

Secondary NameNode

并不是NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务。

2NN是帮助NameNode管理元数据,具体内容涉及到 chekpoint机制

职责

  • 辅助NameNode,分担NameNode工作量,比如定期合并Fsimage和Eidts,并推送给NameNode;
  • 在紧急情况下,可辅助恢复NameNode。

checkpoint机制

引入Secondary NameNode 用来对存储数据的元数据处理 (checkpoint机制) , 大致如下:

  • 下载 NameNode 的 Fsimage_000000文件(初始化文件,只下载一次),

  • 下载生成好的日志文件,没有_inprocess的日志文件

  • 加载镜像文件生成内存对象

  • 加载日志文件,修改镜像对象

  • 序列化镜像对象

  • 将镜像对象上传到 NameNode 中

  • 清理 NameNode 上没用的日志数据和序列化的镜像文件

  • 定期下载日志文件, 合并镜像对象,并上传到 NameNode 上

参考

https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

全文结束!

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

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

相关文章

Websocket+protobuf怎么与服务器通信

Websocketprotobuf怎么与服务器通信 Websocket:WebSocket是⼀种⽹络传输协议,可在单个TCP连接上进⾏双全⼯通信,位于OSI模型的 应⽤层 实现⼀个简单的客⼾端和服务端 安装websockets pip3 install websockets客户端代码 import asyncio …

记一次异常外联事件应急响应

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 事件背景介绍02 事件分析过程03 事件分析结果04 安全加固建议 01 事件背景介绍 某内部应急演练中,安全部门收到来自业务部门的告警,称应用服务器存在异常外联情况&#xff0…

管理类联考——英语二——技巧篇——阅读理解——taiqi

第一章 翻译技巧概述 一、词汇方面 (一)词义选择 大多数英语词汇是多义的,翻译时必须选择正确的词义。词义选择的方法有三:根据上下文和词的搭配选择根据词类选择、根据专业选择。 (二)词义转换 在理解英文词汇的原始意义基础…

算法刷题-哈希表-三数之和

用哈希表解决了两数之和,那么三数之和呢? 第15题. 三数之和 力扣题目链接 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a b c 0 ?请你找出所有满足条件且…

后台服务守护进程神器pm2介绍及使用

前言 linux的后台服务程序需要在后台一直运行。如果通过ssh访问临时启动的,会话一结束就直接关闭了服务。想让服务在后台一直运行且永远不挂掉,推荐后台服务守护进程神器pm2,强大且适用于各种语言的后台服务程序。 pm2介绍 对于后台进程的管…

(十)异步-什么是异步方法(2)

一、什么是异步方法 异步方法在完成其工作之前即返回到调用方法,然后在调用方法继续执行的时候完成其工作。 特点: 方法头中包含 async 方法修饰符。包含一个或多个 await 表达式,表示可以异步完成的任务。必须具备3种返回类型之一&#x…

使用Gradio Interface构建交互式机器学习演示

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

chatgpt赋能python:Python列表排序方法介绍

Python 列表排序方法介绍 在 Python 中,列表是一种非常常见的数据类型。在处理列表时,有时需要对列表进行排序,以便更方便地对其进行查找、比较、统计等操作。Python 中提供了多种排序方法,本文将介绍这些方法并说明其使用方法。…

chatgpt赋能python:Python中的日期遍历方法详解

Python中的日期遍历方法详解 作为一门非常流行的编程语言,Python中的日期遍历方法备受程序员们喜爱。它可以遍历任意时间段内的日期并进行各种操作,比如日期加减、日期格式转换等等。在本文中,我们将详细介绍Python中的日期遍历方法&#xf…

lazarus:用FpSpreadsheet快速搭建基于电子表格文件的单机程序

目录 1 简介 2 制作简单的电子表格 3 需要几个控件,以及简单属性设置 3.1 TsWorksheetDataset 3.2 DataSource1控件 3.3 DBNavigate控件 3.4 DBGrid 3.5 编译运行,插入一行数据 1 简介 在FpSpreadsheet控件包中,有一个专门把电子表格…

Python3 注释与运算符 | 菜鸟教程(四)

目录 一、Python3 注释 (一)Python 中单行注释以 # 开头 (二)多行注释用三个单引号 或者三个双引号 """ 将注释括起来 1、单引号() 2、双引号("""&#xff…

14.基于XML管理Bean

基于XML管理Bean 配置Springframework 引入依赖 <!-- 基于Maven依赖传递性&#xff0c;导入spring-context依赖即可导入当前所需所有jar包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId&…

(十)异步-使用异步(3)

一、GUI 程序中的异步操作 1、在 GUI 程序中使用异步操作 在 GUI程序中&#xff0c; 首先理解关于 UI 显示变化的概念。 消息&#xff1a; UI 上的行为&#xff0c;如点击按钮、展示标签、移动窗体等。消息队列&#xff1a; 把要触发的所有消息&#xff0c;都按照相关的顺序…

【备战秋招】每日一题:2023.05-B卷-华为OD机试 - 阿里巴巴找黄金宝箱(II)

为了更好的阅读体检&#xff0c;可以查看我的算法学习博客阿里巴巴找宝箱(ll) 题目描述 贫如洗的樵夫阿里巴巴在去砍柴的路上&#xff0c;无意中发现了强盗集团的藏宝地&#xff0c;藏宝地有编号从0-N的箱子&#xff0c;每个箱子上面贴有箱子中藏有金币的数量。 从金币数量中…

【MySQL】索引的数据结构

为什么使用索引 索引是存储引擎用于快速找到数据记录的一种数据结构。进行数据查找时&#xff0c;首先查看查询条件是否命中某条索引&#xff0c;符合则可以通过索引查找相关数据&#xff0c;如果不符合则要全表扫描&#xff0c;即需要一条一条地查找记录&#xff0c;直到找到…

「网络编程」第二讲:网络编程socket套接字(二)_ 简单UDP网络通信程序的实现

「前言」文章是关于网络编程的socket套接字方面的&#xff0c;上一篇是网络编程socket套接字&#xff08;一&#xff09;&#xff0c;下面开始讲解&#xff01; 「归属专栏」网络编程 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先生有点文青病」 「每篇一句」 我认…

chatgpt赋能python:Python遍历文章的SEO指南

Python遍历文章的SEO指南 Python是一种高度灵活的编程语言&#xff0c;因其易于学习和使用而为许多程序员、数据科学家和SEO专业人士所青睐。在这篇文章中&#xff0c;我们将探讨Python如何遍历文章和对SEO优化的最佳实践。 什么是Python遍历文章&#xff1f; 遍历文章是指采…

【论文阅读】Segment Anything(SAM)——可分割一切的CV大模型

【前言】随着ChatGPT席卷自然语言处理&#xff0c;Facebook凭借着Segment Anything在CV圈也算扳回一城。迄今为止&#xff0c;github的star已经超过3万&#xff0c;火的可谓一塌糊涂。作为AI菜鸟&#xff0c;可不得自己爬到巨人肩膀上瞅一瞅~ 论文地址&#xff1a;https://arxi…

NDK编译C++源码生成Android平台so文件(opencv_android)

1.准备CPP文件 编写CMakeLists.txt 编写 mk文件 android-8 is unsupported. Using minimum supported version android-16 APP_PLATFORM android-16 is higher than android:minSdkVersion 1 in ./AndroidManifest.xml 修改Application.mk中的APP_PLATFORM为 android-21 builg…

59、基于51单片机多机 NRF24L01 无线温湿度 DHT11报警系统设计(程序+原理图+PCB源文件+参考论文+开题报告+任务书+元器件清单等)

摘 要 温湿度在工农业生产中占有很重要的地位&#xff0c;是工农业生产的重要组成数据。温湿度过高会造成粮食发霉长芽&#xff0c;还会引起大棚蔬菜一系列的病害。因此对其适时准确的测量就显得尤为重要。而一般的测量过程较为复杂繁琐&#xff0c;误差还大。比如现在所使…