大数据之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)

大家都在看

  • .Net Core下DllImport使用方法及扩展

    引言​ 在有时候的开发过程中,我们会遇到需要调用系统的API,不巧的是.Net Core可能没办法为我们提供相关的调用方式。那需要如何才能解决这个问题呢?​ 这时候我们就可能会考虑…

    Linux 2023年6月13日
    073
  • MySQL之视图、触发器、事务、索引及其他知识补充

    一、视图 视图是将SQL语句的查询结果当做虚拟表实体化保存起来,以后可以反复使用 create view teacher2course as select * from teach…

    Linux 2023年6月14日
    081
  • 【Leetcode】198. 打家劫舍

    你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统, 如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动…

    Linux 2023年6月6日
    089
  • Linux常用扩展

    目录 ~ ? * [] {} 1. ~ 代表当前用户的home目录 pwd ~$ /home/user/ ls ~$ a touch ~/b ls ~$ a b ~ 等于/home…

    Linux 2023年6月7日
    071
  • CentOS7下安装python3.7

    以原码编译的方式安装 1.官网下载python3.7软件包 2.上传至Linux中,并解压 tar -zxvf python-3.7.2.tgz 3.安装gcc和python所需依…

    Linux 2023年6月6日
    075
  • rsync

    rsync是什么 rsync特性 1)可以镜像保存整个目录树和文件系统。 2)可以很容易做到保持原来文件的权限、时间、软硬连接等。 3)无需特殊权限即可安装。 4)快速:第一次同步…

    Linux 2023年6月6日
    084
  • 页面国际化

    页面国际化 有的时候,我们的网站会去涉及中英文甚至多语言的切换,这时候我们就需要对页面进行国际化设计了。 6.1 准备工作 在IDEA中统一设置properties的编码格式 6….

    Linux 2023年6月14日
    095
  • jmeter&WebSocket直播间性能测试

    http://t.csdn.cn/GfXzJ 1.Jmeter本身是支持HTTP方法,要测试WebSocket的接口,首先要安装插件。 安装插件的方法:1)首先下载插件管理器① 访…

    Linux 2023年6月8日
    080
  • ETCD分布式存储部署

    一、ETCD 概述 ETCD 是一个分布式一致性k-v存储系统,可用于服务注册发现与共享配置。具有一下优点: 简单: 相比于晦涩难懂的paxos算法,etcd基于相对简单且易实现的…

    Linux 2023年6月14日
    086
  • 蓝桥杯国赛——循环小数

    时间限制: 1.0s 内存限制: 256.0MB 本题总分:20 分 【问题描述】已知 S 是一个小于 1 的循环小数,请计算与 S 相等的最简真分数是多少。例如 0 . 3333…

    Linux 2023年6月6日
    062
  • 笔记:linux 总结

    1.开始 Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和…

    Linux 2023年5月27日
    0141
  • mycat2 读写分离配置(详解)

    mycat2相对mycat1来说升级还挺多的,但是全网资料太少了,这里尽可能详细的将读写分离说清楚,目前这套配置已经在我司生产环境应用,日UV6W左右,暂时没发现问题。 1.1下载…

    Linux 2023年6月6日
    094
  • 使用kubectl管理Kubernetes(k8s)集群:常用命令,查看负载,命名空间namespace管理

    服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_64…

    Linux 2023年6月7日
    0139
  • 聊聊消息中心的设计与实现逻辑

    厌烦被消息打扰,又怕突然间的安静; 一、业务背景 微服务的架构体系中,会存在很多基础服务,提供一些大部分服务都可能需要的能力,比如文件管理、MQ队列、缓存机制、消息中心等等,这些服…

    Linux 2023年6月14日
    086
  • 数据结构 一元多项式加减法计算器

    cpp;gutter:true;</p> <h1>include</h1> <p>using namespace std;</…

    Linux 2023年6月13日
    072
  • Locationhttpd反向代理

    Location\httpd\反向代理 参考:http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_core_mod…

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