物联网对企业网站建设的要求,如何推广店铺呢,大悟建设局网站,wordpress 调用分类目录下的文章文章目录 #xff08;161#xff09;慢磁盘监控#xff08;162#xff09;小文件归档小文件过多的问题如何对小文件进行归档 参考文献 #xff08;161#xff09;慢磁盘监控
慢磁盘#xff0c;是指写入数据时特别慢的一类磁盘。这种磁盘并不少见#xff0c;当机器运行… 文章目录 161慢磁盘监控162小文件归档小文件过多的问题如何对小文件进行归档 参考文献 161慢磁盘监控
慢磁盘是指写入数据时特别慢的一类磁盘。这种磁盘并不少见当机器运行久了跑任务跑的多了磁盘的寿命到一定程度的时候磁盘的读写性能自然就会退化严重时就会出现写数据延迟的问题。
比如说如果正常在HDFS上创建一个目录只需要1s左右。但是你偶尔发现创建目录时超过了1分钟或者更久但次数不多就很有可能存在慢磁盘。
那怎么找到是哪块磁盘慢呢
第一种方式是通过心跳未联系时间。
一般出现慢磁盘现象会影响到DataNode与NameNode之间的心跳。正常情况心跳时间间隔是3s。超过3s说明有异常。
第二种方式是通过fio命令测试磁盘的读写性能。
1顺序读测试
[atguiguhadoop102 ~]# sudo yum install -y fio[atguiguhadoop102 ~]# sudo fio -filename/home/atguigu/test.log -direct1 -iodepth 1 -thread -rwread -ioenginepsync -bs16k -size2G -numjobs10 -runtime60 -group_reporting -nametest_rRun status group 0 (all jobs):READ: bw360MiB/s (378MB/s), 360MiB/s-360MiB/s (378MB/s-378MB/s), io20.0GiB (21.5GB), run56885-56885msec结果显示磁盘的总体顺序读速度为360MiB/s。
2顺序写测试
[atguiguhadoop102 ~]# sudo fio -filename/home/atguigu/test.log -direct1 -iodepth 1 -thread -rwwrite -ioenginepsync -bs16k -size2G -numjobs10 -runtime60 -group_reporting -nametest_wRun status group 0 (all jobs):WRITE: bw341MiB/s (357MB/s), 341MiB/s-341MiB/s (357MB/s-357MB/s), io19.0GiB (21.4GB), run60001-60001msec结果显示磁盘的总体顺序写速度为341MiB/s。
3随机写测试
[atguiguhadoop102 ~]# sudo fio -filename/home/atguigu/test.log -direct1 -iodepth 1 -thread -rwrandwrite -ioenginepsync -bs16k -size2G -numjobs10 -runtime60 -group_reporting -nametest_randwRun status group 0 (all jobs):WRITE: bw309MiB/s (324MB/s), 309MiB/s-309MiB/s (324MB/s-324MB/s), io18.1GiB (19.4GB), run60001-60001msec结果显示磁盘的总体随机写速度为309MiB/s。
4混合随机读写
[atguiguhadoop102 ~]# sudo fio -filename/home/atguigu/test.log -direct1 -iodepth 1 -thread -rwrandrw -rwmixread70 -ioenginepsync -bs16k -size2G -numjobs10 -runtime60 -group_reporting -nametest_r_w -ioschedulernoopRun status group 0 (all jobs):READ: bw220MiB/s (231MB/s), 220MiB/s-220MiB/s (231MB/s-231MB/s), io12.9GiB (13.9GB), run60001-60001msecWRITE: bw94.6MiB/s (99.2MB/s), 94.6MiB/s-94.6MiB/s (99.2MB/s-99.2MB/s), io5674MiB (5950MB), run60001-60001msec结果显示磁盘的总体混合随机读写读速度为220MiB/s写速度94.6MiB/s。
随机读写会稍慢一些这个是合理的因为多了步磁盘寻址的过程所以会多花些时间。
162小文件归档
小文件过多的问题
HDFS存储的小文件过多会极大的影响数据搜索和读取的速度。
100个1K的文件块和100个128M的文件块占用NN的内存是一样的。
因为NN在内存里会为每个文件块存储一份150byte大小的元数据。
所以在副本数为3的情况下128个1M的文件块在DN中占用存储空间是128 * 3M在NN中占用128 * 150byte。
而1个128M的文件块在DN中占用128*3M在NN中占用1*150byte
看出问题了吧虽然两种情况下占用的DN存储空间是一样的但是小文件情况下NN占用的内存飙升关键是占用的这部分内存太过浪费了。
解决小文件的方法之一就是 使用HAR文件来进行归档 。可以简单理解成HAR会把小文件进行压缩压缩成一个文件放进一个文件块里。
压缩产生的HAR文件会被NameNode视为是一个整体但是其内部仍然是多个小文件。但是在NameNode登记的时候就会作为一个整体来登记了。 如何对小文件进行归档
接下来来做一个案例实操
1需要启动YARN进程
[atguiguhadoop102 hadoop-3.1.3]$ start-yarn.sh启动yarn进程是因为这个压缩归档的过程其实是一个MR处理因此必须要开启YARN来做调度。
2归档文件
把/input目录里面的所有文件归档成一个叫input.har的归档文件并把归档后文件存储到/output路径下。
[atguiguhadoop102 hadoop-3.1.3]$ hadoop archive -archiveName input.har -p /input /output3查看归档
[atguiguhadoop102 hadoop-3.1.3]$ hadoop fs -ls /output/input.har[atguiguhadoop102 hadoop-3.1.3]$ hadoop fs -ls har:///output/input.har使用第一个指令尝试查看归档文件的话是无法查看到被压缩的一个个小文件的只能看到几个压缩的索引文件和特殊格式的数据文件。
使用第二种指令是可以成功看到被压缩的一个个小文件。
4解归档文件
[atguiguhadoop102 hadoop-3.1.3]$ hadoop fs -cp har:///output/input.har/* /这个是把归档文件在指定目录重新解压出来。
参考文献
【尚硅谷大数据Hadoop教程hadoop3.x搭建到集群调优百万播放】