大数据框架之Hadoop:HDFS(一)HDFS概述

news2024/9/27 10:21:41

1.1HDFS产出背景及定义

  • HDFS 产生背景

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

  • HDFS 定义

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

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

1.2HDFS优缺点

1.2.1优点

1)高容错性

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

image-20230115230938321

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

5c745dd9-7355-4509-86da-ae14c31650d0

2)适合处理大数据

  • 数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据

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

3)可构建在廉价机器上,通过多副本机制,提高可靠性

1.2.2缺点

1)不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。

2)无法高效的对大量小文件进行存储

  • 存储大量小文件的话,它会占用NameNode大量的内存来存储文件目录和块信息。这样是不可取的,因为NameNode的内存总是有限的;

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

3)不支持并发写入、文件随机修改

  • 一个文件只能有一个写,不允许多个线程同时写;

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

1.3HDFS组成架构

hdfsarchitecture

1)NameNode (nn) :就是Master,它是一个主管、管理者。

  • 管理HDFS的名称空间;

  • 配置副本策略;

  • 管理数据块(Block)映射信息;

  • 处理客户端读写请求。

2)DataNode: 就是Slave。NameNode下达命令,DataNode执行实际的操作。

  • 存储实际的据块

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

3)Client: 就是客户端

  • 文件切分。文件上传HDFS的时候,client将文件切分成一个一个的Block,然后进行上传;
  • 与NameNode交互,获取文件的位置信息;
  • 与DataNode交互,读取或者写入数据
  • Client提供一些命今来管理HDFS,比如NameNode格式化;
  • Client可以通过一些命今来访问HDFS,比如对HDFS增删查改操作

4)SecondaryNameNode: 并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务.

  • 辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode;

  • 在紧急情况下,可辅助恢复NameNode。

1.4HDFS文件块大小(面试重点)

1.4.1HDFS文件块大小

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

2ec88d43-6e49-4d8c-8a79-2fe7c8bfc898

1.4.2HDFS文件块大小设置原理

HDFS文件块大小设置主要取决于磁盘传输速率,目前通过Namenode对HDFS元数据进行寻址的时间约为10ms,即查找到目标block的时间为10ms。

寻址时间为传输时间的1%时,则为最佳状态

因此,传输时间为10ms/0.01=1000ms=1s

目前磁盘的传输速率普遍为100MB/s

因此,block大小为1s*100MB/s=100MB

因为电脑底层数据采用二进制存储,所以目前的block块官方大小设置为128MB。

总结:HDFS文件块大小设置主要取决于磁盘传输速率,生产中采用高速磁盘作为存储介质的可以考虑在HDFS的配置文件中设置dfs.blocksize参数调整block块大小。

1.4.3块大小要设置合理

HDFS的块设置太小,会增加寻址时间,程序一直在找块的开始位置;

如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。导致程序在处理这块数据时,会非常慢。

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

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

相关文章

查缺补漏三:事务隔离级别

什么是事务? 事务就是一组操作的集合,事务将整组操作作为一个整体,共同提交或者共同撤销 这些操作只能同时成功或者同时失败,成功即可提交事务,失败就执行事务回滚 MySQL的事务默认是自动提交的,一条语句执…

【LeetCode第 332 场周赛】

传送门 文章目录6354. 找出数组的串联值6355. 统计公平数对的数目6356. 子字符串异或查询6357. 最少得分子序列6354. 找出数组的串联值 题目 思路 前后指针 代码 class Solution { public:long long findTheArrayConcVal(vector<int>& nums) {long long res 0;i…

多线程相关面试题

讲解下你自己理解的 CAS 机制 ? 全称 Compare and swap, 即 “比较并交换”. 相当于通过一个原子的操作, 同时完成 “读取内存, 比较是否相等, 修改内存” 这三个步骤. 本质上需要 CPU 指令的支撑. ABA问题怎么解决&#xff1f; 给要修改的数据引入版本号. 在 CAS 比较数据…

微搭低代码从入门到精通06-代码编辑器

有初学的同学一直有个疑问&#xff0c;什么叫低代码。低代码的特点是提供了大量的前端组件&#xff0c;我们在开发小程序的时候可以直接拖拽就完成了界面的开发。 但是一款APP的开发只有界面是不够的&#xff0c;还需要有交互逻辑&#xff0c;比如我们在会员小程序里充值的时候…

Linux服务器部署xxl-job

Linux服务器部署xxl-job Linux服务器部署xxl-jobLinux服务器部署xxl-jobxxl-job文档文档中要求的环境Maven下载&#xff1a;JDK下载&#xff1a;MySQL下载&#xff1a;部署MySQL上传MySQL安装包到服务器解压&#xff0c;安装配置文件启动MySQL查看初始密码使用初始密码登录MySQ…

分享一个可用的ChatGPT网页及备选方案

本文本来是在咱公众号分享&#xff0c;被一些跳蚤、苍蝇、蚊子和老鼠给搞臭了&#xff0c;故在此重新分享&#xff0c;欢迎那些跳蚤、苍蝇、蚊子和老鼠继续来战&#xff01; 近来ChatGPT可谓是火得不可开交&#xff01;各路牛鬼蛇神不管懂与不懂都借这阵ChatGPT风勇占流量高地…

c++11 标准模板(STL)(std::multimap)(四)

定义于头文件 <map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class multimap;(1)namespace pmr { template <class Key, class T…

【JVM】7种经典的垃圾收集器

文章目录1. 垃圾收集器概述2. Serial 收集器3. ParNew 收集器4. Paraller Scavenge 收集器5. Serial Old收集器6. Parller Old收集器7. CMS 收集器8. Garbage First 收集器本文参考&#xff1a;深入理解Java虚拟机&#xff1a;JVM高级特性与最佳实践&#xff08;第3版&#xff…

Ubuntu安装配置Cuda和Pytorch gpu

前言 在Ubuntu中操作系统中,通过Anconda安装对应的虚拟环境以及软件包,一般都需要适配Cuda、Pytorch版本等 以下安装配置都是在Ubuntu操作系统下 1. 安装Cuda 通过Ubuntu操作系统查看cuda适配的版本:nvidia-smi 截图如下: 查看Ubuntu版本可如下方式 (1)cat /proc/ver…

QT QOpenGLWidget使用说明(一)OpenGL 类的添加

文章目录一.Qt项目中添加OpenGL库二.添加OpenGL类Qt官网关于 QOpenGLWidget的说明: https://doc.qt.io/qt-6.2/qopenglwidget.html一.Qt项目中添加OpenGL库 cmakeList.txt中添加OpenGL库 find_package(Qt6 COMPONENTS OpenGLWidgets REQUIRED) target_link_libraries(mytarget …

Shader(向量)

单位向量向量加法向量的模向量点乘&#xff08;夹角>0则在前方&#xff0c;反之后方&#xff09;5.向量的投影6.向量的减法7.向量的叉乘&#xff08;可以判断点是否在三角形内&#xff09;满足AB*AP,BC*BP,CA*CP都大于0或者都小于0则P点在三角形内

STM32单片机蓝牙APP可烘干升降晾衣架带照明灯

实践制作DIY- GC0123-蓝牙APP可烘干升降晾衣架 一、功能说明&#xff1a; 基于STM32单片机设计-蓝牙APP可烘干升降晾衣架 功能介绍&#xff1a; 硬件组成&#xff1a; STM32F103C系列最小系统单片机1个uln2003步进电机&#xff08;模拟升降&#xff09;1个uln2003步进电机&a…

刘润:五维思考,让你站得更高、看得更远

原标题&#xff1a;刘润&#xff1a;五维思考&#xff0c;让你站得更高、看得更远 前言&#xff1a;遇到问题时&#xff0c;有的人很快就能想明白&#xff0c;有的人需要很久才能想明白&#xff0c;还有的人始终都想不明白。 而且&#xff0c;那些很快就能想明白的人&#xff0…

大数据之Hadoop

文章目录一、大数据概论1、大数据概念2、大数据的特点3、大数据应用场景4、大数据部门的业务流程分析5、大数据部门组织结构&#xff08;重点&#xff09;二、从Hadoop框架讨论大数据生态1、什么是Hadoop2、Hadoop发展历史3、Hadoop三大发行版本1.Apache Hadoop2.Cloudera Hado…

Rust学习入门--【6】Rust 基础语法

Rust 基础语法 变量&#xff0c;数据类型&#xff0c;注释&#xff0c;函数和控制流&#xff0c;这些是大部分编程语言都具有的编程概念。 本节将学习理解这些概念。 变量 Rust 是强类型语言&#xff0c;但具有自动判断变量类型的能力。这很容易让人与弱类型语言产生混淆。…

Sentinel源码解析-ProcessorSlot具体

前言 上篇文章中我们已经讲到了构造完处理链&#xff0c;然后会调用对应slot的entry方法&#xff0c;我们根据配置文件中Slot的具体顺序来逐一讲解Slot的具体实现。 一、NodeSelectorSlot 这个 slot 主要负责收集资源的路径&#xff0c;并将这些资源的调用路径&#xff0c;以…

ssm学生在线选课成绩教案管理系统java

基于JSP技术、SSM框架、B/S机构、Mysql数据库设计并实现了教案管理系统。系统主要包括个人中心、学生管理、教师管理、公告信息管理、科目管理、课程信息管理、选课记录管理、学生成绩管理、系统管理等功能模块。结合实际项日的功能需求&#xff0c;从研究背景、国内发展的现状…

C++ 基础

命名空间 在 C/C 中&#xff0c;变量、函数和类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化&#xff0c;以避免命名冲突或名字污染&#xff0c;namespace 关键字的…

就现在!为元宇宙和Web3对互联网的改造做准备!

欢迎来到Hubbleverse &#x1f30d; 关注我们 关注宇宙新鲜事 &#x1f4cc; 预计阅读时长&#xff1a;8分钟 本文仅代表作者个人观点&#xff0c;不代表平台意见&#xff0c;不构成投资建议。 如今&#xff0c;互联网是各种不同的网站、应用程序和平台的集合。由于彼此分离…

微信小程序Springboot 校园拼车自助服务系统java

系统管理员&#xff1a; 管理员账户管理&#xff1a;在线对管理员的账户信息进行管理&#xff0c;包括对管理员信息的增加修改以及密码的修改等。 站内新闻管理&#xff1a;在后台对站内新闻信息进行发布&#xff0c;并能够对站内新闻信息进行删除修改等。 论坛版块管理&#x…