HDFS01 概述
2024-09-05 04:03:28
HDFS 概述
目录
HDFS的产生背景和定义
HDFS产生背景
解决海量数据的存储问题
需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS 只是分布式文件管理系统中的一种。
HDFS定义
HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
HDFS 的使用场景:适合一次写入,多次读出的场景。 一个文件经过创建、写入和关闭之后就不需要改变。
优缺点
优点
1.高容错性
2.适合处理大数据
3.可以构建在廉价机器上,通过多副本机制,提高可靠性
缺点
1.不适合低延时数据访问,比如毫米级的存储数据
2.无法高效的对大量小文件进行存储,适用于快速寻找
寻址时间为传输时间的1%时,为最佳状态
3.不支持并发写入、文件随机修改
组成
NameNode
NameNode(nn)是Master,管理者。
- 管理HDFS的名称空间
所有文件的元数据 - 配置副本策略
比如集群中有多个文件a,b,c,设置a的副本有1个、b的副本有2个、c的副本有3个。告诉Datanode维持几份副本 - 管理数据块(Block)的映射信息
- 处理客服端读写请求
DataNode
NameNode下达命令,DataNode执行实际的操作。
- 存储实际的数据块
- 执行数据块的读/写操作
Secondary NameNode(2nn)
并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务
- 辅助NameNode,分担其工作量,比如定期合并Fsimage(镜像文件)和Edits(编辑日志),并推送给NameNode
- 在紧急情况下,可辅助恢复NameNode(只能恢复部分,因为2nn并没有NameNode的全部数据)
Client
Client就是客户端
- 文件切分。文件上传HDFS的时候,Client将文件切分成一个个block(按NameNode的文件块来分)
- 与NameNode交互,获取文件的位置信息
- 与DataNode交互,读取或者写入数据
- Client提供一些命令来管理HDFS,比如NameNode格式化
- Client可以通过一些命令来访问HDFS,比如对HDFS增删查改操作
文件块大小(面试重点)
HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数dfs.blocksize
来设置,默认大小在Hadoop2.x/3.x版本中是128M。
128M是上限,如果10K的文件存进去,剩下的空间还可以给其他文件使用。
默认值128M的原因,如果磁盘的传输速率更大,块的大小可以设置的更大
问题:为什么块的大小不能设置太小,也不能设置太大
如果块设置太小,会增加寻址时间。
如果块设置太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需时间。导致磁盘传输数据的时间过长。
总结:HDFS块的大小设置主要取决于磁盘传输速率。
最新文章
- 在JS中获取文件点之后的后缀字符
- mysql 5.5.32 多实例环境的启动问题
- JavaScript 正则表达式上——基本语法
- 利用PHPMailer 来完成PHP的邮件发送 #转载自:大菜鸟在云端#
- 还是不想改报告,伊阿忆啊哟-Linux基础继续
- python 学习笔记十二 html基础(进阶篇)
- java的基本认识
- Node以数据块的形式读取文件
- Java Hour 24 JDBC
- [CC]ccHObject
- NetworkShareAccesser: 远程PC1 文件 copy 到PC2 文件夹
- python(22)总结下最近遇到的编码问题
- JAVA多线程的问题以及处理【转】
- matlab——sparse函数和full函数(稀疏矩阵和非稀疏矩阵转换)
- Realm for Android快速入门教程
- C模块划分
- linux_redhat_线程后台运行方法
- 【入门一】一些简单的C程序及VS的安装
- WebService学习------小实例开发(号码归属地查询)
- C++ 11保留小数点的四舍五入方案
热门文章
- Luogu P2827 [NOIp2016提高组]蚯蚓 | 神奇的队列
- 近期业务大量突增微服务性能优化总结-3.针对 x86 云环境改进异步日志等待策略
- Edge屏蔽CSDN (必应)
- 安装RedHat和Centos后做的15件事情
- Robot Framework操作MySQL数据库
- vue 快速入门 系列 —— 使用 vue-cli 3 搭建一个项目(上)
- 基于Mui与H5+开发webapp的Android原生工程打包步骤(使用新版本5+SDK与Android studio)(部分内容转自dcloud官网)
- python一对一教程:Computational Problems for Physics chapter 1-B Code Listings 1.7 - 1.12
- RabbitMQ Network Partitions 处理策略
- [loj6736]最小连通块