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说明有异常。

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的内存。

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 /

大数据之Hadoop中HDFS的故障排除的更多相关文章

  1. 大数据:Hadoop(HDFS 的设计思路、设计目标、架构、副本机制、副本存放策略)

    一.HDFS 的设计思路 1)思路 切分数据,并进行多副本存储: 2)如果文件只以多副本进行存储,而不进行切分,会有什么问题 缺点 不管文件多大,都存储在一个节点上,在进行数据处理的时候很难进行并行处 ...

  2. 大数据笔记05:大数据之Hadoop的HDFS(数据管理策略)

            HDFS中数据管理与容错 1.数据块的放置       每个数据块3个副本,就像上面的数据库A一样,这是因为数据在传输过程中任何一个节点都有可能出现故障(没有办法,廉价机器就是这样的) ...

  3. 大数据笔记04:大数据之Hadoop的HDFS(基本概念)

    1.HDFS是什么? Hadoop分布式文件系统(HDFS),被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有很多共同点. 2.HDFS ...

  4. 大数据:Hadoop(HDFS 读写数据流程及优缺点)

    一.HDFS 写数据流程 写的过程: CLIENT(客户端):用来发起读写请求,并拆分文件成多个 Block: NAMENODE:全局的协调和把控所有的请求,提供 Block 存放在 DataNode ...

  5. 大数据笔记07:大数据之Hadoop的HDFS(特点)

    1. HDFS的特点: (1)数据冗余,硬件容错 (2)流式的数据访问(写一次读多次,不能直接修改已写入的数据,只能删除之后再去写入) (3)存储大文件 2. HDFS适用性和局限性 适用性:(1)适 ...

  6. 大数据笔记06:大数据之Hadoop的HDFS(文件的读写操作)

    1. 首先我们看一看文件读取: (1)客户端(java程序.命令行等等)向NameNode发送文件读取请求,请求中包含文件名和文件路径,让NameNode查询元数据. (2)接着,NameNode返回 ...

  7. 大数据笔记09:大数据之Hadoop的HDFS使用

    1. HDFS使用: HDFS内部中提供了Shell接口,所以我们可以以命令行的形式操作HDFS

  8. 大数据和Hadoop生态圈

    大数据和Hadoop生态圈 一.前言: 非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,经过两周的努力,已经有啦初步的成果,目前第1章 大数据和Hadoop ...

  9. hadoop(一)之初识大数据与Hadoop

    前言 从今天起,我将一步一步的分享大数据相关的知识,其实很多程序员感觉大数据很难学,其实并不是你想象的这样,只要自己想学,还有什么难得呢? 学习Hadoop有一个8020原则,80%都是在不断的配置配 ...

  10. Hadoop专业解决方案-第1章 大数据和Hadoop生态圈

    一.前言: 非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,经过两周的努力,已经有啦初步的成果,目前第1章 大数据和Hadoop生态圈小组已经翻译完成,在此 ...

随机推荐

  1. Java 运算符详解与字符串处理技巧

    Java 运算符 算术运算符 算术运算符用于执行常见的数学运算. 运算符 名称 描述 示例 + 加法 将两个值相加 x + y - 减法 从一个值中减去另一个值 x - y * 乘法 将两个值相乘 x ...

  2. Go 语言学习:了解 const 关键字及常量声明

    如果一个变量应该有一个固定的.不能改变的值,你可以使用const关键字. const关键字将变量声明为"常量",这意味着它是不可改变和只读的. 语法 const CONSTNAME ...

  3. Solr安全控制,开启基本身份验证

    前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 背景:solr默认安装没带权限控制,每次进入页面直接操作都有点裸奔的感觉. 一.SolrCloud集群模式 说明:要使用基本身份验证您必 ...

  4. SAST-数据流分析方法-理论

    引言 众所周知,数据流分析是实现污点分析的一种常用技术 数据流分析分为过程内的数据流分析与过程间的数据流分析.前者是对一个方法体内的数据流分析,主要是基于CFG分析,不涉及方法调用:后者是基于不同方法 ...

  5. Qt Create开发,修改 .Pro 文件改变 exe 的名称

    // .pro // 修改 TARGET 就可以改变生成的exe的名称 TARGET = Test // 要是生成的exe名称中需要带有空格,需要用到$$quote TARGET = $$quote( ...

  6. 牛蛙!GoFrame2.7正式版的监控组件真是及时雨

    声明:本文首发在同名公众号:王中阳Go,未经授权禁止转载. GoFrame框架今天发布了v2.7.0正式版本啦! 最大看点 本次版本最大的看点是提供了metric监控组件,主库提供了接口化的metri ...

  7. 直播预告丨Hello HarmonyOS进阶系列课程重磅来袭,4月27日开播

    为了帮助初识HarmonyOS的开发者快速入门,我们曾推出Hello HarmonyOS系列一共5期课程(传送门:https://developer.huawei.com/consumer/cn/tr ...

  8. ViT:拉开Trasnformer在图像领域正式挑战CNN的序幕 | ICLR 2021

    论文直接将纯Trasnformer应用于图像识别,是Trasnformer在图像领域正式挑战CNN的开山之作.这种简单的可扩展结构在与大型数据集的预训练相结合时,效果出奇的好.在许多图像分类数据集上都 ...

  9. redis 简单整理——持久化之AOF[二十]

    前言 简单介绍一下AOF. 正文 AOF(append only file)持久化:以独立日志的方式记录每次写命令, 重启时再重新执行AOF文件中的命令达到恢复数据的目的. AOF的主要作用 是解决了 ...

  10. mysql 重新整理——配置文件[一]

    前言 对mysql 进行从新整理一下,仅做参考,如有任何不对望指出. 正文 mysql 一般分windows和linux,但是他们的运行配置其实是一样的,所以在此不做区分. 直接上一个大体的图: 我个 ...