大数据 - Hadoop系列《三》- HDFS(分布式文件系统)概述

🐶5.1 hdfs的概念

HDFS分布式文件系统,全称为:Hadoop Distributed File System。

它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。

HDFS的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。

我一共三台linux服务器,每台机器内存60G,所以HDFS文件系统之和为180G

🐶5.2 为什么要用hdfs:

因为随着数据量越来越大,一台机器已经不能满足当前数据的存储,如果使用多台计算机进行存储,虽然解决了数据的存储问题,但是后期的管理和维护成本比较高,因为我们不能精准的知道哪台机器上存储了什么样的数据,所以我们迫切的需要一个能够帮助我们管理多台机器上的文件的一套管理系统,这就是分布式文件系统的作用,而hdfs就是这样的一套管理系统,而且他也只是其中的一种.

 

🐶5.3 hdfs的优缺点

5.3.1 优点:

🥙1. 高容错性:

数据自动保存多个副本。它通过增加副本的形式,提高容错性。

 某一个副本丢失以后,它可以自动恢复。

 

🥙2. 高扩展性:

当HDFS系统的存储空间不够时,我们只需要添加一台新的机器到当前集群中即可完成扩容,这就是我们所说的横向扩容,而集群的存储能力,是按照整个集群中的所有的机器的存储能力来计算的,这也就是我们所说的高扩容性

🥙3. 适合处理大数据:
  • 数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据

  • 文件规模:能够处理百万规模以上的文件数量,数量相当之大。

 

5.3.2 缺点:

🥙1. 不适合低延时数据访问;
  • 比如毫秒级的来存储数据,这是不行的,它做不到。

  • 它适合高吞吐率的场景,就是在某一时间内写入大量的数据。但是它在低延时的情况 下是不行的,比如毫秒级以内读取数据,这样它是很难做到的。

🥙2. 无法高效的对大量小文件进行存储
  • 存储大量小文件的话,它会占用NameNode大量的内存来存储文件、目录和块信息。这样是不可取的,因为NameNode的内存总是有限的。

  • 小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。

🥙3. 不支持并发写入、文件随机修改
  • 一个文件只能有一个写,不允许多个线程同时写。

  • 仅支持数据 append(追加),不支持文件的随机修改。

 

🐶5.4 HDFS架构

HDFS是一个主/从(Master/Slave)体系结构,架构中有三个角色:一个叫NameNode,一个叫DataNode,还有一个叫secondaryNameNode

主从架构示例图:

所以我们在搭建hdfs架构时,需要一台NameNode,三台DataNode,一台SecondaryNameNode.

1. NameNode

主要负责存储文件的元数据,比如集群id,文件存储所在的目录名称,文件的副本数,以及每个文件被切割成块以后的块列表和块列表所在的DataNode。

1)管理HDFS的名称空间。

2)配置副本策略

3)管理数据块(Block)映射信息。

2. DataNode

负责管理用户的文件数据块,每一个数据块都可以在多个 DataNode 上存储多个副本,默认为3个。

1)存储实际的数据块

2)执行数据块的读/写操作

NameNode

DataNode

存储元数据

存储文件内容

元数据保存在内存中

文件内容保存在磁盘

保存文件、block、DataNode之间的映射关系

维护了block id到DataNode本地文件的映射关系

 

3. SecondaryNameNode

并非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.5 HDFS文件块大小(面试题)

HDFS中的文件在物理上是分块存储(Block), 块的大小可以通过配置参数(dfs blocksize)来规定,默认大小在Hadoop2x/3x版本中是128M,1x版本中是64M.

问题:能不能将块设置的小一些? 理论上是可以的,但是如果设置的块大小过小,会占用大量的namenode的元数据空间,而且在读写操作时,加大了寻址时间,所以不建议设置的过小 问题:不能过小,那能不能过大? 不建议,因为设置的过大,传输时间会远远大于寻址时间,增加了网络资源的消耗,而且如果在读写的过程中出现故障,恢复起来也很麻烦,所以不建议

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年【高压电工】找解析及高压电工考试技巧

题库来源:安全生产模拟考试一点通公众号小程序 高压电工找解析根据新高压电工考试大纲要求,安全生产模拟考试一点通将高压电工模拟考试试题进行汇编,组成一套高压电工全真模拟考试试题,学员可通过高压电工考试技巧全真模拟&#…

Android 反编译处理Dex

前言 当我们将Android项目打包上架的时候,为了提高被人反编译代码的可能性可以提取 dex 文件对代码进一步做混淆处理。 本文不对相关工具做过多的解释,不了解的可以先熟悉相关工具的使用。 相关工具(点击直接下载) jadx-gui&a…

IIS服务器发布PHP网站

IIS服务器,相信开发者都不会陌生,它的英文全称是Internet Information Services,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务,常用于Windows系统的Web项目部署,本篇以PHP项目为例,讲解如…

使用 extract + TextMapAdapter 实现了自定义 traceId

前言 某些特定的场景,需要我们通过代码的方式实现自定义 traceId。 实现思路:通过 tracer.extract 能够构造出 SpanContext ,将构造出来的 SpanContext 作为上层节点信息,通过 asChildOf(SpanContext) 能够构造出当前的 span。 …

SpringBoot + Vue 抖音全平台项目

简介 本项目是一个短视频平台,拥有热度排行榜,热门视频,兴趣推送,关注推送,内容审核等功能。 源码下载 网盘 (访问密码: 8418) 登录/注册 首页 创作中心 架构设计 上传视频业务流程 视频推送流程 1.用户订阅分类后…

Java实现树结构(为前端实现级联菜单或者是下拉菜单接口)

Java实现树结构(为前端实现级联菜单或者是下拉菜单接口) 我们常常会遇到这样一个问题,就是前端要实现的样式是一个级联菜单或者是下拉树,如图 这样的数据接口是怎么实现的呢,是什么样子的呢? 我们可以看看 …

NodeJs - Chrome内存分析工具使用

NodeJs - Chrome内存分析工具使用 一. 前期准备二. Chrome 内存分析工具使用2.1 查看快照2.2 使用案例 一. 前期准备 我们下载好相关依赖: npm i v8-profiler-next测试代码: const v8Profiler require(v8-profiler-next) const fs require(fs)funct…

Intellij建议用String替换StringBuilder

文章目录 前言String 和 StringBuilder 性能对比String 和 StringBuilder 使用的字节码对比总结 本文收发地址 https://blog.csdn.net/CSqingchen/article/details/135324313 最新更新地址 https://gitee.com/chenjim/chenjimblog 前言 最近编码时看到 Intellij 建议使用 Stri…

2023-12-15 LeetCode每日一题(反转二叉树的奇数层)

2023-12-15每日一题 一、题目编号 2415. 反转二叉树的奇数层二、题目链接 点击跳转到题目位置 三、题目描述 给你一棵 完美 二叉树的根节点 root ,请你反转这棵树中每个 奇数 层的节点值。 例如,假设第 3 层的节点值是 [2,1,3,4,7,11,29,18] &…

认识数据挖掘

随着数据库技术的迅速发展及数据库管理系统的广泛应用,人们积累的数据越来越多。激增的数据背后隐藏着许多重要的信息,人们希望能够对其进行更高层次的分析,以便更好地利用这些数据。目前的数据库系统可以高效地实现数据的录入、查询、统计等…

操作系统(Operator System)

这里写目录标题 1. 什么是操作系统2. 主要功能3. 计算机的层状结构4. 什么叫做管理5. 总结6. 为什么要有操作系统7. 最后 1. 什么是操作系统 操作系统(英语:Operating System,缩写:OS)是一组主管并控制计算机操作、运…

Debezium日常分享系列之:向 Debezium 连接器发送信号

Debezium日常分享系列之:向 Debezium 连接器发送信号 一、概述二、激活源信号通道三、信令数据集合的结构四、创建信令数据集合五、激活kafka信号通道六、数据格式七、激活JMX信号通道八、自定义信令通道九、Debezium 核心模块依赖项十、部署自定义信令通道十一、信…

【理论】STM32定时器时间计算公式 +【实践】TIM中断1s计时一次

前言:定时器TIM的详细知识点见我的博文:11.TIM定时中断-CSDN博客 STM32定时器时间计算公式 公式解释: ARR(TIM_Period):自动重装载值,是定时器溢出前的计数值 PSC(TIM_Prescaler&…

初始SpringBoot:详解特性和结构

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java项目分享》 《RabbitMQ》《Spring》《SpringMVC》 🛸学无止境,不骄不躁,知行合一 文章目录 前言一、SpringBoot…

骑砍MOD天芒传奇-前言

基于少年包青天3-天芒传奇开发的MOD,故事发生在北宋仁宗年间,玩家需要代替包拯寻找天芒,最终完成统一大业.开局可尝试使用暴雨梨花针神器. MOD下载地址:霸王•吕布 / pellets of legend GitCodehttps://gitcode.net/qq_35829452/1-mod 效果演示:骑砍1战团mod天芒传奇-重出江湖…

车载电子电器架构 —— 电子电气系统功能开发

车载电子电器架构 —— 电子电气系统功能开发 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何…

js遍历后端返回的集合将条件相同的放入同一个数组内

项目场景: echarts折线图需要根据条件动态展示多条不同曲线 解决方案: 后端直接将使用sql将数据查询出来返回即可,因为我这里不是Java使用的C#不是很熟练后台不好写逻辑,所以在前端js完成的 代码如下: function createline(villagename, buildingname…

微服务篇之Nacos快速入门

Nacos 简介 Nacos 起源 Nacos 起源于阿里巴巴 2008 年的五彩石项目(完成微服务拆分和业务中台建设),经历了阿里十年双十⼀的洪峰流量的考验,沉淀了简单易用、稳定可靠、性能卓越等核心特性。随着云计算的兴起和受到开源软件行业…

ThinkPad产品如何升级BIOS程序

操作步骤: 重要提示: 更新BIOS存在风险!如果您的电脑在此过程中出现死机,系统崩溃或断电,则BIOS或UEFI固件程序可能会损坏,这将使您的电脑无法启动。 由于BIOS的版本或者在升级过程中出错,可能会造成不可…

009、引用

1. 引用与借用 下面的示例重新定义了一个新的 calculate_length 函数。与之前不同的是,新的函数签名使用了 String 的引用作为参数而没有直接转移值的所有权: fn main() { let s1 String::from("hello"); let len calculate_length(&s1…