当前位置: 首页 > news >正文

Hadoop3教程(二):HDFS的定义及概述

文章目录

  • (40)HDFS产生的背景和定义
  • (41)HDFS的优缺点
  • (42)HDFS组成架构
  • (43)HDFS文件块大小(面试重点)
  • 参考文献

(40)HDFS产生的背景和定义

随着实际生产环境中的数据越来越大,在一台服务器上无法存储下所有的数据,那么就要把数据分散到多台服务器的磁盘里存放。但是像这样做跨服务器的数据管理和维护是很难的,所以就迫切需要一种方式,来协调管理多台机器上的文件,这就是分布式文件管理系统。

HDFS就是最有名气的一种分布式文件管理系统,除此之外还有Google的GFS、淘宝自研的TFS等。

HDFS(Hadoop Distributed File System),就是分布式文件管理系统的一种,它本质上是一个文件系统。

它可以分布式的(在多台服务器节点上),以目录树的形式来存储和定位文件。

跟windows的NTFS文件系统是一样的。

HDFS的使用场景:适合一次写入,多次读出的场景。如果是需要频繁update的场景,其实是不适合HDFS。当然,只是不适合,不是不能用,完全可以用delete + 重新insert的方式,来实现update。

(41)HDFS的优缺点

HDFS的优点:

1) 高容错性

  • 自动保存多个副本(多个节点保存多个副本)
  • 副本丢失后,可以自动恢复

2) 适合处理大数据(只要资源够,处理上限很高)

  • 能够处理PB级别的数据;
  • 文件数量,百万级以上;

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

HDFS的缺点:

1) 低延时数据访问不合适,毫秒级存储数据,那是不可能的;

2)无法高效的存储大量的小文件:

  • 小文件会占用NameNode大量的内存来存储文件目录和块信息。每个文件都要在NameNode中创建一个保存元数据的地方(索引),这个大小是固定的,150byte,即使是小文件也是,所以大量小文件很容易就把NameNode占满。
  • 小文件过多的话,寻址时间会超过读取时间,违反HDFS的设计目标;

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

  • 一个文件只能有一个写,不允许多线程一起写;
  • 仅支持数据的追加,不支持随机修改;

(42)HDFS组成架构

HDFS里主要涉及4个组件:

  • NameNode
  • DataNode
  • Client
  • SecondaryNameNode

1)NameNode(NN),是HDFS里的Master,管理者,主要作用:

  • 管理HDFS的名称空间
  • 配置副本策略
  • 管理数据块(block)的映射信息(可以理解成目录),默认情况下,一个文件块是128M,一条目录信息(一个文件块的元数据)是150Byte;
  • 处理客户端读写请求;

2)DataNode,就是Slave。NameNode负责下命令,DataNode负责实际执行。

  • 存储实际的数据块;
  • 执行数据块的读写操作;

3)Client,就是客户端

  • 文件切分。文件在上传HDFS的时候,Client将文件切分成一个一个的块。这个块的大小,是由NameNode规定的,默认情况下,NN规定一个文件块是128M,企业中通常使用128M或者256M。
  • 与NameNode交互,获取文件位置信息;
  • 与DataNode交互,读写数据;
  • 可以提供一些命令来管理HDFS,比如NN格式化;
  • 可以提供命令来访问HDFS,执行增删改查;

4)Secondary NameNode,即2NN,并非是NameNode的热备份,当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务。所以实际工作中,一般不会用2NN来做容灾,而是采用NameNode的高可用模式。

  • 辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode;
  • 在紧急情况下,可以辅助恢复NameNode,但并不完全一致,NN始终保留有2NN所不知道的信息(非实时同步);

这里的紧急恢复,其实就是把2NN里保存的Fsimage和Edits复制到NameNode下,但毕竟有版本差。

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

HDFS中的文件在物理上是分块(Block)储存的,块的大小可以通过参数dfs.blocksize来规定,可以在hdfs-default.xml中查看这个参数。

Hadoop1.x中块的默认大小是64M,而2.x和3.x版本中是128M。

这个blocksize代表着块的最大大小,如果数据只有1KB,那形成的块也只有1KB。

有几个时间的概念需要介绍下:

  • 寻址时间:即查找到目标block的时间;

  • 传输时间:数据拷贝或者写入的时间。

一般来讲,寻址时间为传输时间的1%时,整个过程是最佳状态。至于为什么,不知道,教程说是专家说的

比如说,寻址时间为10ms,则传输时间为1s时,整个过程处于最佳状态。

传输时间主要依赖于磁盘的传输速率,目前普通磁盘的传输速率普遍为100MB/s,固态的话,可能能达到200M~300M。

所以这里有个讲究,磁盘的传输速率,对块大小的设置其实是有影响的,比如说这里,普通磁盘是100MB/s,为了实现1s左右的传输时间,blocksize一般设置为128M;如果是固态磁盘200M~300M,blocksize一般设置为256M。

据教程里介绍,128M和256M是目前企业中的主流块大小,一般中小型企业用128M,大型企业会采用256M。

那为什么块的大小,不能设置的太小,也不能设置的太大呢?

在源数据大小一定的情况下

  • 如果HDFS的块设置的太小:

会增加寻址时间,程序会花很长的时间在找块的开始位置上。

  • 如果块大小设置的太大:

极端点,比如说所有数据都在一个块里,定位块的时间是降低了,但是针对这块数据的磁盘IO会明显变大,极大影响数据处理的速度。因为这样子失去了并行处理的优势,改成串行处理了。

按我理解就是,以前可以多个进程读多个块,现在是只有一个块,只能一个进程,肯定很慢,hdfs的分块也失去了意义。

总结:HDFS块的大小主要取决于磁盘的传输速率。所以说磁盘IO才是制约速度的那块短板。

参考文献

  1. 【尚硅谷大数据Hadoop教程,hadoop3.x搭建到集群调优,百万播放】

相关文章:

Hadoop3教程(二):HDFS的定义及概述

文章目录 (40)HDFS产生的背景和定义(41)HDFS的优缺点(42)HDFS组成架构(43)HDFS文件块大小(面试重点)参考文献 (40)HDFS产生的背景和定…...

【物联网+JAVA 】智慧工地源码

一、什么是智慧工地? 工地本身不拥有智慧,工地的运作是依赖于人的智慧。工地信息化技术,能够减少对人的依赖,使工地拥有智慧。 智慧工地,就是立足于“智慧城市”和“互联网”,采用云计算、大数据和物联网…...

001数据安全传输-多端协议传输平台:Openssl安装和配置 - EVP代码测试

001数据安全传输-多端协议传输平台:Openssl安装和配置 - EVP代码测试 文章目录 001数据安全传输-多端协议传输平台:Openssl安装和配置 - EVP代码测试1. 安装1.1 windows下安装openssl1.2 Linux下安装OpenSSL 2. VS中使用openssl3. 测试 1. 安装 1.1 win…...

关于小编入坑第512天

​机缘 最初成为创作者的初心:总结记录整个学习前端的历程 日常学习过程中的记录: 先思考,整个程序逻辑流程是否出现问题 再文档,根据相关文档了解源头,学会看懂文档,是一个锻炼自学前端能力的关键一步 …...

VS2015编译Qt工程发生MSB4018错误完整解决过程

一、错误产生环境 操作系统:Windows10 开发工具:VS2015企业版 Qt版本:Qt5.7.1 64位 二、错误内容 MSB4018 “VCMessage”任务意外失败。 System.FormatException: 索引(从零开始)必须大于或等于零,且小于参数列表的大小。 …...

如何使用JMeter测试导入接口/导出接口

今天一上班,被开发问了一个问题:JMeter调试接口,文件导入接口怎么老是不通?还有导出文件接口,不知道文件导到哪里去了? 我一听,这不是JMeter做接口测试经常遇到的嘛,但是一时半会又…...

[入门一]C# webApi创建、与发布、部署、api调用

一.创建web api项目 1.1、项目创建 MVC架构的话,它会有view-model-control三层,在web api中它的前端和后端是分离的,所以只在项目中存在model-control两层 1.2、修改路由 打开App_Start文件夹下,WebApiConfig.cs ,修改路由&…...

关于Vue+webpack使用unocss编写CSS,打包后CSS没加前缀

关于Vuewebpack使用unocss编写CSS,打包后CSS没加前缀,封装了一个插件去解决了这个问题 unocss-postcss-webpack-plugin unocss在vite中使用配置,关于unocss在vite中使用,自行查阅官网 https://unocss.dev/integrations/vite ,vi…...

软件工程与计算总结(十一)人机交互设计

目录 ​编辑 一.引例 二.目标 三.人类因素 1.精神模型 2.差异性 四.计算机因素 1.可视化设计 2.常见界面类型 五.人机交互设计的交互性 1.导航 2.反馈 3.设计原则 六.设计过程 1.基本过程 2.界面原型化 一.引例 无论软件功能多么出色,亦或内部的构造…...

Jmeter组件执行顺序与作用域

一、Jmeter重要组件: 1)配置元件---Config Element: 用于初始化默认值和变量,以便后续采样器使用。配置元件大其作用域的初始阶段处理,配置元件仅对其所在的测试树分支有效,如,在同一个作用域的…...

第一天商城项目

复盘 1.maven高级部分聚合和继承 maven聚合工程(深度剖析)_一宿君的博客-CSDN博客 2.yml配置文件 mybatis mybatis: mapper-locations: classpath:mappers/*mapper.xml mapper-locations:这是一个子键,用于指定MyBatis映射文件(Mapper XML…...

C++笔记之通用多态函数包装器std::function

C笔记之通用多态函数包装器std::function code review! 文章目录 C笔记之通用多态函数包装器std::function1.存储自由函数,lambda,std::bind 调用的结果2.存储到成员的调用3.存储到函数对象四.基本语法五.使用std::function定义函数对象六.使用std::fu…...

Linux命令(92)之passwd

linux命令之passwd 1.passwd介绍 linux命令passwd是用来设置/更改用户密码 2.passwd用法 passwd [参数] username passwd常用参数 参数说明--stdin非交互式密码设置-l停止用户使用-u启用停止的用户-d删除密码 [rootcentos79-3 ~]# passwd ztj Changing password for user …...

光电柴微电网日前调度报告

摘要 微电网是目前国内外应用较为广泛的一种绿色可再生能源,近几年我国微电网产业的发展十分迅速。然后,越来越多的微电网系统建立并网,微电网产生的电能受外界因素影响较大,具有一定的随机性和波动性,给并网后的电力系…...

Godot 单元测试

前言 单元测试是我们常用的功能,Godot作为一个游戏,单元测试和热重载是我们常用的功能。这里我们讲解最简单的单元测试的情况。 Godot 配置 我们添加一个最简单的节点,挂载一个最简单的脚本。 添加测试方法(只能是静态方法&…...

2.9 深入GPU硬件架构及运行机制

五、GPU技术要点 1.SMID和SIMT SIMD(Single Instruction Multiple Data)是单指令多数据,在GPU的ALU(在Core内)单元内,一条指令可以处理多维向量(一般是4D)的数据。比如&#xff0c…...

【苍穹外卖 | 项目日记】第四天

前言: 今天状态还可以,既有自己实战独立写接口,又听了课,学习了新的知识 目录 前言: 今日完结任务: 今日收获: 实现店铺状态接口 杂项知识点: 总结: 今日完结任务…...

零代码编程:用ChatGPT批量采集bookroo网页上的英文书目列表

bookroo网页上有很多不错的英文图书书目。比如这个关于儿童花样滑冰的书单: https://bookroo.com/explore/books/topics/ice-skating 怎么批量下载下来呢? 这个网页是动态网页,要爬取下来比较麻烦,可以先查看源代码,…...

7.定时器

定时器资源 CC2530有四个定时器TIM1~TIM4和休眠定时器 TIM1 定时器1 是一个独立的16 位定时器,支持典型的定时/计数功能,比如输入捕获,输出比较和PWM 功能。定时器有五个独立的捕获/比较通道。每个通道定时器使用一个I/O 引脚。定时器用于…...

计算机网络 | 网络层

计算机网络 | 网络层 计算机网络 | 网络层功能概述SDN(Software-Defined Networking)路由算法与路由协议IPv4IPv4 分组IPv4 分组的格式IPv4 数据报分片 参考视频:王道计算机考研 计算机网络 参考书:《2022年计算机网络考研复习指…...

【Oracle APEX开发小技巧12】

有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

C++ 基础特性深度解析

目录 引言 一、命名空间(namespace) C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用(reference)​ C 中的引用​ 与 C 语言的对比​ 四、inline(内联函数…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

腾讯云V3签名

想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...