Hadoop3教程(三十三):(生产调优篇)慢磁盘监控与小文件归档

文章目录

  • (161)慢磁盘监控
  • (162)小文件归档
    • 小文件过多的问题
    • 如何对小文件进行归档
  • 参考文献

(161)慢磁盘监控

慢磁盘,是指写入数据时特别慢的一类磁盘。这种磁盘并不少见,当机器运行久了,跑任务跑的多了,磁盘的寿命到一定程度的时候,磁盘的读写性能自然就会退化,严重时就会出现写数据延迟的问题。

比如说,如果正常在HDFS上创建一个目录,只需要1s左右。但是你偶尔发现创建目录时超过了1分钟或者更久,但次数不多,就很有可能存在慢磁盘。

那怎么找到是哪块磁盘慢呢?

第一种方式是通过心跳未联系时间

一般出现慢磁盘现象,会影响到DataNode与NameNode之间的心跳。正常情况心跳时间间隔是3s。超过3s说明有异常。

第二种方式,是通过fio命令,测试磁盘的读写性能。

(1)顺序读测试

[atguigu@hadoop102 ~]# sudo yum install -y fio[atguigu@hadoop102 ~]# sudo fio -filename=/home/atguigu/test.log -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=test_rRun status group 0 (all jobs):READ: bw=360MiB/s (378MB/s), 360MiB/s-360MiB/s (378MB/s-378MB/s), io=20.0GiB (21.5GB), run=56885-56885msec

结果显示,磁盘的总体顺序读速度为360MiB/s。

(2)顺序写测试

[atguigu@hadoop102 ~]# sudo fio -filename=/home/atguigu/test.log -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=test_wRun status group 0 (all jobs):WRITE: bw=341MiB/s (357MB/s), 341MiB/s-341MiB/s (357MB/s-357MB/s), io=19.0GiB (21.4GB), run=60001-60001msec

结果显示,磁盘的总体顺序写速度为341MiB/s。

(3)随机写测试

[atguigu@hadoop102 ~]# sudo fio -filename=/home/atguigu/test.log -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=test_randwRun status group 0 (all jobs):WRITE: bw=309MiB/s (324MB/s), 309MiB/s-309MiB/s (324MB/s-324MB/s), io=18.1GiB (19.4GB), run=60001-60001msec

结果显示,磁盘的总体随机写速度为309MiB/s。

(4)混合随机读写:

[atguigu@hadoop102 ~]# sudo fio -filename=/home/atguigu/test.log -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=test_r_w -ioscheduler=noopRun status group 0 (all jobs):READ: bw=220MiB/s (231MB/s), 220MiB/s-220MiB/s (231MB/s-231MB/s), io=12.9GiB (13.9GB), run=60001-60001msecWRITE: bw=94.6MiB/s (99.2MB/s), 94.6MiB/s-94.6MiB/s (99.2MB/s-99.2MB/s), io=5674MiB (5950MB), run=60001-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进程

[atguigu@hadoop102 hadoop-3.1.3]$ start-yarn.sh

启动yarn进程是因为这个压缩归档的过程其实是一个MR处理,因此必须要开启YARN来做调度。

(2)归档文件

把/input目录里面的所有文件归档成一个叫input.har的归档文件,并把归档后文件存储到/output路径下。

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop archive -archiveName input.har -p /input  /output

(3)查看归档

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -ls /output/input.har[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -ls har:///output/input.har

使用第一个指令尝试查看归档文件的话,是无法查看到被压缩的一个个小文件的,只能看到几个压缩的索引文件和特殊格式的数据文件。

使用第二种指令,是可以成功看到被压缩的一个个小文件。

(4)解归档文件

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop fs -cp har:///output/input.har/*  /

这个是把归档文件在指定目录重新解压出来。

参考文献

  1. 【尚硅谷大数据Hadoop教程,hadoop3.x搭建到集群调优,百万播放】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/115093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

结构体学习

struct是结构体关键字 我们用C语言中通常都是用关键字来定义类型变量。例如我们的整型变量,int book;是用整型关键字定义出来的。同样的,struct book同样是一个类型,不过我们叫他结构体。我认为的结构体的作用,无外乎是将一些毫…

Layui弹出层关闭后页面自动刷新的用法以及建议

首先在HTML中定义一个查询按钮 <div class"layui-inline"><button class"layui-btn" id"searchBtn" lay-submit lay-filter"data-search-btn" > <i class"layui-icon layui-icon-search">查询</i&…

基于侏儒猫鼬优化的BP神经网络(分类应用) - 附代码

基于侏儒猫鼬优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于侏儒猫鼬优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.侏儒猫鼬优化BP神经网络3.1 BP神经网络参数设置3.2 侏儒猫鼬算法应用 4.测试结果…

闭包(函数)

把内部函数通过return扔出去 必要条件

RobotRules 和UserAgent来下载文件

以下是一个使用WWW::RobotRules和LWP::UserAgent来下载文件的Perl程序&#xff1a; #!/usr/bin/perl ​ use strict; use warnings; use WWW::RobotRules; use LWP::UserAgent; use HTTP::Request; use HTTP::Response; ​ my $url http://www.people.com.cn/; my $agent LW…

网络协议--Traceroute程序

8.1 引言 由Van Jacobson编写的Traceroute程序是一个能更深入探索TCP/IP协议的方便可用的工具。尽管不能保证从源端发往目的端的两份连续的IP数据报具有相同的路由&#xff0c;但是大多数情况下是这样的。Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过…

【前端】Layui小功能收集整理

目录 1、layui 鼠标悬浮提示文字 2、关闭当前窗口并刷新父页面 3、子iframe关闭/传值/刷新父页面 1、layui 鼠标悬浮提示文字 鼠标放在图标上悬浮显示提示信息&#xff0c;效果图如下 <div style"float:left; line-height:40px">道试题 <i class"l…

使用WPF模仿Windows记事本界面

本次仅模仿Windows记事本的模样&#xff0c;并未实现其功能。 所有代码如下&#xff1a; <Window x:Class"控件的基础使用.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/…

XML与html解析,区别,如何使用

目录 简介: HTML&#xff08;超文本标记语言&#xff09;&#xff1a; 如何使用HTML&#xff1a; XML&#xff08;可扩展标记语言&#xff09;&#xff1a; 如何使用XML&#xff1a; 区别&#xff1a; 简介: XML&#xff08;可扩展标记语言&#xff09;和 HTML&#xff…

【Godot】【BUG】4.x NavigationAgent 导航不生效

4.2.beta2 试了半天才发现原来默认只对第一个有导航的 TileMap 的第 1 层 生效&#xff0c;而我设置的导航层不是第一层&#xff0c;然后我新建了一个 TileMap 将导航的瓦片设置到这个 TileMap 上了&#xff0c;如图 这样就解决了问题&#xff0c;不用再修改默认设置的东西了&a…

机器学习tip:sklearn中的pipeline

文章目录 1 加载数据集2 构思算法的流程3 Pipeline执行流程的分析ReferenceStatement 一个典型的机器学习构建包含若干个过程 源数据ETL数据预处理特征选取模型训练与验证 一个典型的机器学习构建包含若干个过程 以上四个步骤可以抽象为一个包括多个步骤的流水线式工作&…

四大特性模块(module)

module的动机 C20中新增了四大特性之一的模块(module)&#xff0c;用以解决传统的头文件在编译时间及程序组织上的问题。 modules 试图解决的痛点 能最大的痛点就是编译慢, 头文件的重复替换, 比如你有多个翻译单元, 每一个都调用了 iostream, 就得都处理一遍. 预处理完的源…

三维模型表面积计算方法

【版权声明】 本文为博主原创文章&#xff0c;未经博主允许严禁转载&#xff0c;我们会定期进行侵权检索。 更多算法总结请关注我的博客&#xff1a;https://blog.csdn.net/suiyingy&#xff0c;或”乐乐感知学堂“公众号。 本文章来自于专栏《Python三维模型处理基础》的系列文…

在线存储系统源码 网盘网站源码 云盘系统源码

Cloudreve云盘系统源码-支持本地储存和对象储存,界面美观 云盘系统安装教程 测试环境:PHP7.1 MYSQL5.6 Apache 上传源码到根目录 安装程序: 浏览器数据 http://localhost/CloudreveInstallerlocalhost更换成你的网址 安装完毕 记住系统默认的账号密码 温馨提示:如果默认…

RustDay06------Exercise[81-90]

81.宏函数里面的不同的匹配规则需要使用分号隔开 // macros4.rs // // Execute rustlings hint macros4 or use the hint watch subcommand for a // hint.// I AM NOT DONE#[rustfmt::skip] macro_rules! my_macro {() > {println!("Check out my macro!");};($…

C++ 字面量

在编译之前就已经知道的值。字面量的形式和值决定了它的数据类型。 整型字面量 整型字面值具体的数据类型由它的值和符号决定。默认情况&#xff0c;十进制字面量是带符号数&#xff0c;八进制和十六进制字面值既可能是带符号的也可能是无符号的。十进制字面值的类型是int、l…

【STM32】标准库与HAL库对照学习系列教程大全

【STM32】标准库与HAL库对照学习系列教程大全 一、前言二、准备工作三、基础篇四、进阶篇五、特别篇六、外设篇 一、前言 前言&#xff1a;开始工作后&#xff0c;学习的时间变少了很多&#xff0c;但是今年的1024节&#xff0c;还是打算送个福利给大家&#xff0c;将之前的STM…

[WSL][ubuntu]解决WSL Ubuntu+xfce4 图形界面一段时间后黑屏

问题场景&#xff1a;WLS中Ubuntu安装xdrp进行远程桌面连接一段时间后会黑屏&#xff0c;这是因为锁屏后不能正常唤醒导致&#xff0c;因此很直接方法就是不让锁屏&#xff1a; 1、进入图形界面&#xff0c;点击右上角Applications--->Settings--->Light Locker Setting…

【Hive SQL 每日一题】环比增长率、环比增长率、复合增长率

文章目录 环比增长率同比增长率复合增长率测试数据需求说明需求实现 环比增长率 环比增长率是指两个相邻时段之间某种指标的增长率。通常来说&#xff0c;环比增长率是比较两个连续时间段内某项数据的增长量大小的百分比。 环比增长率反映了两个相邻时间段内某种经济指标的变…

【Java 进阶篇】Java XML快速入门:理解、解析和生成XML

XML&#xff08;可扩展标记语言&#xff09;是一种常用于存储和交换数据的标记语言&#xff0c;而Java是一种强大的编程语言&#xff0c;它具有处理XML的能力。在本篇博客中&#xff0c;我们将探讨XML的基础知识&#xff0c;学习如何在Java中解析和生成XML文档&#xff0c;以及…