Hadoop之HDFS01【介绍】

网友投稿 462 2022-05-28

HDFS(Hadoop Distributed File System)分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。

存储模型

假如我们有一个10T的文件要存储,而我们的硬盘空间只有1个T,那么这时候我们可以将这个10T的文件切成10个1T的文件来分别存储在10个硬盘中,HDFS的存储的原理其实也是这样的,将一个大文件进行线性切割成快(Block)然后存放在不同的服务器上,但很快你又会提出一个问题,如果一个字比如“存”在UTF-8当中占3个字节,而恰巧一个服务器存了1个字节而另外的2个字节存到了别的服务器上,这会出现我们使用的时候出现乱码,这个问题呢HDFS也帮我们解决了。后面会提到副本,相当于把文件克隆然后会进行一个修复操作。然后不同的文件分布到了不同的服务器上,所以是只允许写一次可以多次读取,那么HDFS存储模型的特点也就明显了。

上传文件指定block大小和副本数量

hadoop fs -Ddfs.replication=2 -put a.txt /

hadoop fs -Ddfs.blocksize=67108864 -put fun1.sh /

已上传的文件Block副本数可以调整,大小不变

[root@hadoop-node01 ~]# hadoop fs -setrep -w 3 /fun1.sh Replication 3 set: /fun1.sh Waiting for /fun1.sh .... done

append追加数据

hadoop fs -appendToFile b.txt /a.txt

Hadoop之HDFS01【介绍】

架构模型

文件元数据MetaData,文件数据

元数据

数据本身

(主)NameNode节点保存文件元数据:单节点 posix

(从)DataNode节点保存文件Block数据:多节点

DataNode与NameNode保持心跳,提交Block列表

HdfsClient与NameNode交互元数据信息

HdfsClient与DataNode交互文件Block数据

NameNode

存储元数据(MetaData),不存储具体的block

NameNode主要功能:

NameNode持久化

NameNode的metadate信息在启动后会加载到内存

metadata存储到磁盘文件名为”fsimage”

Block的位置信息不会保存到fsimage

edits记录对metadata的操作日志。。。

DataNode

本地磁盘目录存储数据(Block),文件形式,同时存储Block的元数据信息文件,启动DN时会向NN汇报block信息,通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收到DN的心跳,则认为其已经lost,并copy其上的block到其它DN

HDFS优缺点

优先

高容错性

数据自动保存多个副本

副本丢失后,自动恢复

适合批处理

移动计算而非数据

数据位置暴露给计算框架(Block偏移量)

适合大数据处理

GB 、TB 、甚至PB 级数据

百万规模以上的文件数量

10K+ 节点

可构建在廉价机器上

通过多副本提高可靠性

提供了容错和恢复 机制

缺点

低延迟数据访问

比如毫秒级

低延迟与高吞吐率

小文件存取

占用NameNode 大量内存

寻道时间超过读取时间

并发写入、文件随机修改

一个文件只能有一个写者

仅支持append

Hadoop

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Linux 引导过程的 6 个阶段(启动顺序)
下一篇:盘点|2019年的1/2我们都出了哪些优秀IT书?
相关文章