大数据之Hadoop中HDFS的故障排除

NameNode故障处理

1)需求

NameNode进程挂了并且存储的数据也丢失了

2)故障模拟

(1) kill -9 NameNode进程

kill -9 19886

(2)删除 NameNode储存的数据

rm -rf /opt/module/hadoop-3.1.3/data/dfs/name/*

3)问题解决 原文:sw-code

(1)拷贝 SecondaryNameNode中的数据到原 NameNode存储数据目录

[hadoop@hadoop102 dfs]$ scp -r hadoop@hadoop104:/opt/module/hadoop-3.1.3/data/dfs/namesecondary/* ./name/

(2)重新启动 NameNode

[hadoop@hadoop102 dfs]$ hdfs --daemon start namenode

(3)向集群上传一个文件

注意:生产环境一般是 NameNode的高可用,即配置多个 NameNode来处理此类情况

集群安全模式&磁盘修复

1)安全模式:文件系统只接受读数据请求,而不接受删除、修改等变更请求

2)进入安全模式场景

  • NameNode在加载镜像文件和编辑日志期间处于安全模式。
  • NameNode在接收 DataNode注册时,处于安全模式。

3)退出安全模式条件

dfs.namenode.safemode.min.datanodes:最小可用的 datanode数量大于0,默认0。

dfs.namenode.safemode.threshold-pct:副本达到最小要求的 block占系统总 block的百分比,默认0.999f。(只允许丢一个块)

dfs.namenode.safemode.extension:稳定时间,默认值3000ms,即30s。

4)基本语法

集群处于安全模式,不能执行重要操作(写操作),集群启动完成后,自动退出安全模式。

bin/hdfs dfsadmin -safemode get
bin/hdfs dfsadmin -safemode enter
bin/hdfs dfsadmin -safemode leave
bin/hdfs dfsadmin -safemode wait

慢磁盘监控

找出哪块磁盘慢的方法如下

1)通过心跳未联系时间

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

大数据之Hadoop中HDFS的故障排除

2)fio命令,测试磁盘的读写性能

使用该命令安装测试工具

sudo yum install -y fio

(1)顺序读测试

[hadoop@hadoop102 hadoop-3.1.3]$ sudo fio -filename=/home/hadoop/test.log -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=test_r

Run status group 0 (all jobs):
   READ: bw=106MiB/s (111MB/s), 106MiB/s-106MiB/s (111MB/s-111MB/s), io=6334MiB (6642MB), run=60003-60003msec

注意更改路径: -filename=/home/your username/test.log

(2)顺序写测试

[hadoop@hadoop102 hadoop-3.1.3]$ sudo fio -filename=/home/hadoop/test.log -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=test_w

Run status group 0 (all jobs):
  WRITE: bw=106MiB/s (111MB/s), 106MiB/s-106MiB/s (111MB/s-111MB/s), io=6351MiB (6660MB), run=60002-60002msec

(3)随机写测试

[hadoop@hadoop102 hadoop-3.1.3]$ sudo fio -filename=/home/hadoop/test.log -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=test_randw

Run status group 0 (all jobs):
  WRITE: bw=93.1MiB/s (97.6MB/s), 93.1MiB/s-93.1MiB/s (97.6MB/s-97.6MB/s), io=5584MiB (5855MB), run=60004-60004msec

(3)混合随机读写测试

[hadoop@hadoop102 hadoop-3.1.3]$ sudo fio -filename=/home/hadoop/test.log -direct=1 -iodepth 1 -thread -rw=randrw -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=test_r_w -ioscheduler=noop

Run status group 0 (all jobs):
   READ: bw=44.9MiB/s (47.1MB/s), 44.9MiB/s-44.9MiB/s (47.1MB/s-47.1MB/s), io=2697MiB (2828MB), run=60002-60002msec
  WRITE: bw=44.0MiB/s (47.2MB/s), 44.0MiB/s-44.0MiB/s (47.2MB/s-47.2MB/s), io=2700MiB (2831MB), run=60002-60002msec

小文件归档

1)HDFS存储小文件弊端:100个1K文件块和100个128M的文件块,占用NN内存大小一样

每个文件按块存储,每个块的元数据存储在NameNode的内存中,因此HDFS存储小文件会非常低效。因为大量的小文件会耗尽NameNode中的大部分内存。但注意,存储小文件所需的磁盘容量和数据块大小无关。例如,一个1MB的文件设置未128MB的块存储,实际使用的是1MB的磁盘空间,而不是128MB。

2)解决存储小文件办法之一

HDFS存档文件或HAR文件,是一个更高效的文件存档工具,它将文件存入HDFS块,在减少NameNode内存使用的同时,允许堆文件进行透明访问。具体说来,HDFS存档文件对内还是一个独立文件,对NameNode而言却是一个整体,减少了NameNode的内存。

大数据之Hadoop中HDFS的故障排除

3)实操案例

(1)需要启动YARN进程

start-yarn.sh

(2)归档文件

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

hadoop archive -archiveName input.har -p /input /output

(3)查看归档

hadoop fs -ls har:///output/input.har

(4)拷贝文件

hadoop fs -cp har:///output/input.har/test.txt /

Original: https://www.cnblogs.com/sw-code/p/16395460.html
Author: sw-code
Title: 大数据之Hadoop中HDFS的故障排除

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585564/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 正则: 匹配英文、数字和所有特殊字符

    r”’\[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;’\\[\]·~!@#¥%……&*()——\-+={}|《》?…

    Linux 2023年6月15日
    0132
  • Teleport&Suspense

    vue3 新添加了一个默认的组件就叫 Teleport,我们可以拿过来直接使用,它上面有一个 to 的属性,它接受一个css query selector 作为参数,这就是代表要把…

    Linux 2023年6月13日
    0115
  • 《闲扯Redis十一》Redis 有序集合对象底层实现

    一、前言 Redis 提供了5种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),理解每种数据类型的特点对于redis的开…

    Linux 2023年5月28日
    0100
  • JavaWeb创建一个公共的servlet

    对于初学者来说,每次前端传数据过来就要新建一个类创建一个doget、dopost方法,其实铁柱兄在大学的时候也是这么玩的。后面铁柱兄开始认真了,就想着学习点容易的编程方式,其实说白…

    Linux 2023年6月13日
    098
  • 字典服务的设计与管理

    编码问题,谁不想避其锋芒; 一、业务背景 在搜索引擎的功能上,曾经遇到过这样一个问题,数据库中某个公司名称中存在特殊编码,尽管数据已经正常同步到索引中,但是系统中关键词始终也无法匹…

    Linux 2023年6月14日
    083
  • 一键安装Cisco AnyConnect Secure Mobility Client

    Mac版本 背景:公司内部安装此VPN软件的时候,因默认是安装了所有模块,但我们只需要vpn模块,所产生的干扰。并且有人因不熟悉Mac pkg 软件的卸载方法导致非正常卸载,导致重…

    Linux 2023年6月8日
    0104
  • 实验一-密码引擎-商用密码算法实现1

    任务详情 参考https://weread.qq.com/web/reader/2fb3259071ef04932fbfd2ekc81322c012c81e728d9d180和网上…

    Linux 2023年6月8日
    0128
  • 【Jmeter】jmeter提取response中的返回值,并保存到本地文件–BeanShell后置处理器

    有个需求,需要在压测环境中,创建几十万的账号数据,然后再根据创建结果,查询到某些账号信息。 按照之前我的做法,直接Python调用API,然后再数据库查询; 但是近期所有开发人员的…

    Linux 2023年5月28日
    089
  • Redis 事务

    一、概述 和传统关系型数据库一样,Redis 同样是支持事务的。Redis 的事务可以通过 MULTI/EXEC/DISCARD/WATCH 等命令来实现。 二、事务的 ACID …

    Linux 2023年5月28日
    099
  • 迭代

    1.迭代的概念: 迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次”迭代”,而每一次迭代得到的结果会作为下一次迭代的…

    Linux 2023年6月8日
    0109
  • Bash shell

    例一: 函数、返回状态值、比较 #!/bin/bash NUM=$(date +%S) echo "当前苹果价格是每斤$NUM元" echo "===…

    Linux 2023年5月28日
    087
  • Fastadmin引入Layui模块

    Fastadmin,PHP,Fastadmin引入layui模块,Fastadmin使用layui。 ​ Fastadmin基于 RequireJS进行JS模块的管理,因此如果我们…

    Linux 2023年6月6日
    095
  • 在Linux下安装Redis

    1. 下载Redis的压缩包 [root@spirit-of-fire ~]# wget http://download.redis.io/releases/redis-5.0.5…

    Linux 2023年6月14日
    098
  • Linux-系统启动与MBR扇区修复

    1.系统启动过程 1.1 MBR扇区 1.2 MBR扇区的备份与还原 1.3 修复MBR 1.3.1 dd备份MBR信息 1.3.2 光驱启动修复 1.4 grub故障修复 1.系…

    Linux 2023年5月27日
    0131
  • Java基础系列–02_运算符和程序的语句

    运算符:(1)算术运算符:+,-,*,/,%,++,–(加、减、乘、除、取余、自增,自减)++和–的注意事项:a:他们的作用是自增或者自减b:使用1.单独使…

    Linux 2023年6月7日
    094
  • 如何在EMACS 设置格式

    如何设置Emacs的各种模式, 这个教程要观摩一下的 http://www.emacswiki.org/emacs/IndentingC#toc1 Original: https:…

    Linux 2023年6月14日
    0109
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球