HDFS介绍

2020-10-21  本文已影响0人  乙腾

Overwiew

HDFS是一个文件系统,用于存储文件,通过目录树来定位文件。

它是分布式的,有分多服务器联合起来实现其功能。

使用场景

适合一次写入,多次读出的场景,且不支持文件的修改。

是和数据分析,并不适合用来做网盘应用。

优缺点

优点

image.png

缺点

image.png

HDFS的组成单元

NameNode(nn):1.存储文件的元数据{1.文件信息(文件名,文件目录结构,文件属性(生成时间,副本数,文件权限)),2.每个文件的块列表和块所在的DataNode(Block映射信息)},2.处理客户端读写请求。

DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验。

Secondary NameNode(2nn):是一个辅助后台的程序,用来监控HDFS状态,每隔一段时间获取HDFS元数据的快照。

HDFS组成架构

image.png image.png image.png

HDFS文件块大小

image.png

notice

n1.HDFS默认分块128M

上面计算的每秒传输大小为100MB只是一个近似值,实际为128M。

n2.磁盘传输速度

机械硬盘文件顺序读写的速度为100MB/s

普通固态为500MB/s

pcie固态的速度可以达到2000MB/s

因此块的大小可以分别设为128MB,512MB,2048MB.

n3.分块大小取决于磁盘传输速率

CPU,磁盘,网卡之间的协同效率 即 跨物理机/机架之间文件传输速率

n4.为什么HDFS中块(block)不能设置太大,也不能设置太小?

1. 如果块设置过大,

第一点: 从磁盘传输数据的时间会明显大于寻址时间,导致程序在处理这块数据时,变得非常慢;

第二点: mapreduce中的map任务通常一次只处理一个块中的数据,如果块过大运行速度也会很慢。

第三点: 在数据读写计算的时候,需要进行网络传输.如果block过大会导致网络传输时间增长,程序卡顿/超时/无响应. 任务执行的过程中拉取其他节点的block或者失败重试的成本会过高.

第四点: namenode监管容易判断数据节点死亡.导致集群频繁产生/移除副本, 占用cpu,网络,内存资源.

2. 如果块设置过小,

第一点: 存放大量小文件会占用NameNode中大量内存来存储元数据,而NameNode的物理内存是有限的;

第二点: 文件块过小,寻址时间增大,导致程序一直在找block的开始位置。

第三点: 操作系统对目录中的小文件处理存在性能问题.比如同一个目录下文件数量操作100万,执行"fs -l "之类的命令会卡死.

第四点: ,则会频繁的进行文件传输,对严重占用网络/CPU资源.

总结

文件块越大,寻址时间越短,但磁盘传输时间越长;

文件块越小,寻址时间越长,但磁盘传输时间越短。

上一篇下一篇

猜你喜欢

热点阅读