Overwiew
HDFS是一个文件系统,用于存储文件,通过目录树来定位文件。
它是分布式的,有分多服务器联合起来实现其功能。
使用场景
适合一次写入,多次读出的场景,且不支持文件的修改。
是和数据分析,并不适合用来做网盘应用。
优缺点
优点
image.png缺点
image.pngHDFS的组成单元
NameNode(nn):1.存储文件的元数据{1.文件信息(文件名,文件目录结构,文件属性(生成时间,副本数,文件权限)),2.每个文件的块列表和块所在的DataNode(Block映射信息)},2.处理客户端读写请求。
DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验。
Secondary NameNode(2nn):是一个辅助后台的程序,用来监控HDFS状态,每隔一段时间获取HDFS元数据的快照。
HDFS组成架构
image.png image.png image.pngHDFS文件块大小
image.pngnotice
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资源.
总结
文件块越大,寻址时间越短,但磁盘传输时间越长;
文件块越小,寻址时间越长,但磁盘传输时间越短。
网友评论