上市公司的信息网站,网站升级页面模板,网站建设优化教程,网站怎么重建文章目录 #xff08;40#xff09;HDFS产生的背景和定义#xff08;41#xff09;HDFS的优缺点#xff08;42#xff09;HDFS组成架构#xff08;43#xff09;HDFS文件块大小#xff08;面试重点#xff09;参考文献 #xff08;40#xff09;HDFS产生的背景和定… 文章目录 40HDFS产生的背景和定义41HDFS的优缺点42HDFS组成架构43HDFS文件块大小面试重点参考文献 40HDFS产生的背景和定义
随着实际生产环境中的数据越来越大在一台服务器上无法存储下所有的数据那么就要把数据分散到多台服务器的磁盘里存放。但是像这样做跨服务器的数据管理和维护是很难的所以就迫切需要一种方式来协调管理多台机器上的文件这就是分布式文件管理系统。
HDFS就是最有名气的一种分布式文件管理系统除此之外还有Google的GFS、淘宝自研的TFS等。
HDFSHadoop Distributed File System就是分布式文件管理系统的一种它本质上是一个文件系统。
它可以分布式的在多台服务器节点上以目录树的形式来存储和定位文件。
跟windows的NTFS文件系统是一样的。
HDFS的使用场景适合一次写入多次读出的场景。如果是需要频繁update的场景其实是不适合HDFS。当然只是不适合不是不能用完全可以用delete 重新insert的方式来实现update。
41HDFS的优缺点
HDFS的优点
1 高容错性
自动保存多个副本多个节点保存多个副本副本丢失后可以自动恢复
2 适合处理大数据只要资源够处理上限很高
能够处理PB级别的数据文件数量百万级以上
3 可以构建在廉价的机器上通过多副本机制提高可靠性。
HDFS的缺点
1 低延时数据访问不合适毫秒级存储数据那是不可能的
2无法高效的存储大量的小文件
小文件会占用NameNode大量的内存来存储文件目录和块信息。每个文件都要在NameNode中创建一个保存元数据的地方索引这个大小是固定的150byte即使是小文件也是所以大量小文件很容易就把NameNode占满。小文件过多的话寻址时间会超过读取时间违反HDFS的设计目标
3 不支持并发写入、文件随机修改
一个文件只能有一个写不允许多线程一起写仅支持数据的追加不支持随机修改
42HDFS组成架构
HDFS里主要涉及4个组件
NameNodeDataNodeClientSecondaryNameNode
1NameNodeNN是HDFS里的Master管理者主要作用
管理HDFS的名称空间配置副本策略管理数据块block的映射信息可以理解成目录默认情况下一个文件块是128M一条目录信息一个文件块的元数据是150Byte处理客户端读写请求
2DataNode就是Slave。NameNode负责下命令DataNode负责实际执行。
存储实际的数据块执行数据块的读写操作
3Client就是客户端
文件切分。文件在上传HDFS的时候Client将文件切分成一个一个的块。这个块的大小是由NameNode规定的默认情况下NN规定一个文件块是128M企业中通常使用128M或者256M。与NameNode交互获取文件位置信息与DataNode交互读写数据可以提供一些命令来管理HDFS比如NN格式化可以提供命令来访问HDFS执行增删改查
4Secondary NameNode即2NN并非是NameNode的热备份当NameNode挂掉的时候它并不能马上替换NameNode并提供服务。所以实际工作中一般不会用2NN来做容灾而是采用NameNode的高可用模式。
辅助NameNode分担其工作量比如定期合并Fsimage和Edits并推送给NameNode在紧急情况下可以辅助恢复NameNode但并不完全一致NN始终保留有2NN所不知道的信息非实时同步
这里的紧急恢复其实就是把2NN里保存的Fsimage和Edits复制到NameNode下但毕竟有版本差。
43HDFS文件块大小面试重点
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~300Mblocksize一般设置为256M。
据教程里介绍128M和256M是目前企业中的主流块大小一般中小型企业用128M大型企业会采用256M。
那为什么块的大小不能设置的太小也不能设置的太大呢
在源数据大小一定的情况下
如果HDFS的块设置的太小
会增加寻址时间程序会花很长的时间在找块的开始位置上。
如果块大小设置的太大
极端点比如说所有数据都在一个块里定位块的时间是降低了但是针对这块数据的磁盘IO会明显变大极大影响数据处理的速度。因为这样子失去了并行处理的优势改成串行处理了。
按我理解就是以前可以多个进程读多个块现在是只有一个块只能一个进程肯定很慢hdfs的分块也失去了意义。
总结HDFS块的大小主要取决于磁盘的传输速率。所以说磁盘IO才是制约速度的那块短板。
参考文献
【尚硅谷大数据Hadoop教程hadoop3.x搭建到集群调优百万播放】