当前位置: 首页 > news >正文

hadoop调优(二)

hadoop调优(二)

1 HDFS故障排除

1.1 NameNode故障处理

NameNode进程挂了并且存储数据丢失了,如何恢复NameNode?

如果NameNode进程挂掉并且数据丢失了,可以利用Secondary NameNode来恢复NameNode。Secondary NameNode主要用于备份NameNode的编辑日志和文件系统镜像,以便在NameNode失败时进行快速恢复。

恢复NameNode的步骤:

  1. 停止所有Hadoop进程

  2. 启动Secondary NameNode

  3. 从Secondary NameNode备份的编辑日志和文件系统镜像中恢复NameNode元数据。可以使用以下命令来执行此操作:

    hdfs namenode -recover
    

    该命令将自动查找Secondary NameNode备份的编辑日志和文件系统镜像,并将其应用于NameNode,从而恢复元数据。

  4. 如果数据丢失,需要重新将数据复制到Hadoop集群中。

  5. 启动Hadoop进程

Secondary NameNode仅备份NameNode的编辑日志和文件系统镜像,并不是实时同步NameNode的状态。因此,在使用Secondary NameNode恢复NameNode时,可能会丢失一些最新的数据更改。

1.2 安全模式

在安全模式下,HDFS不允许客户端执行写操作,但可以读取数据。

NameNode会在以下情况下进入安全模式:

  1. 第一次启动:当NameNode第一次启动时,它会进入安全模式。这是因为在此时,它需要读取所有数据节点的信息并建立与它们的通信,以确定整个HDFS的状态。进入安全模式可以防止客户端对HDFS进行写操作,直到NameNode成功启动并处理所有坏块。
  2. 数据节点数量过少:如果数据节点数量少于NameNode的阈值(默认情况下为数据节点数量的95%),则NameNode会进入安全模式。这种情况可能发生在添加新数据节点之前,或者因为节点故障而导致节点数减少。
  3. 数据节点坏块过多:如果有太多坏块(默认情况下是1%的数据块),则NameNode会进入安全模式。在这种情况下,HDFS会自动尝试修复坏块,直到坏块数量降至可接受水平。

1.2.1数据块损坏,进入安全模式,如何处理

  1. 使用命令行工具hdfs fsck来检查文件系统,并查看坏块报告。可以使用坏块报告确定哪些块需要修复。
  2. 使用命令行工具 hdfs dfsadmin -deleteBlock 命令手动删除坏块。此命令会从NameNode元数据中删除坏块的条目,并在DataNode上删除对应的数据块。然后,HDFS将自动复制其他副本到相应的DataNode上,以保证数据的完整性。
  3. 如果坏块的副本数量不足,可以使用命令行工具 hdfs dfsadmin -fsck 命令手动修复坏块。此命令会在DataNode上查找坏块的副本,并尝试复制它们到缺失的DataNode上。可以使用-replace参数来指定要替换的DataNode。
  4. 如果DataNode上的存储空间不足,可以使用命令行工具 hdfs balancer 来移动坏块到其他DataNode上的空闲存储空间。这将为修复坏块提供足够的空间,并减少未来发生类似问题的可能性。

1.3 慢磁盘监控

当某个节点的磁盘出现问题,可能会导致整个Hadoop集群的性能下降。因此,需要监控Hadoop集群中的磁盘

监控hadoop慢磁盘的方法

  1. Hadoop自带的磁盘健康检查工具:Hadoop提供了一个磁盘健康检查工具,可以检查HDFS上的所有数据块是否可用,以及本地磁盘是否有故障。可以通过运行以下命令来运行此工具:

    hdfs fsck / -files -blocks -locations
    
  2. 进行磁盘性能测试,可以使用FIO执行测试。测试会提供提供磁盘IOPS和吞吐量等性能指标,以便识别哪些磁盘出现性能问题

1.4 小文件归档

解决小文件问题的方法

  1. 将小文件存储在单独的目录中:将小文件存储在单独的目录中可以避免名称节点的负载过重。这样做可以将小文件分布在多个目录中,从而使名称节点可以更好地管理这些小文件。
  2. 使用HBase存储小文件:HBase是一种分布式的非关系型数据库,可以用来存储小文件。使用HBase存储小文件可以提高存储空间的利用率,因为它不会像HDFS那样使用大量的元数据来管理小文件。
  3. 压缩小文件:对小文件进行压缩可以减少磁盘空间的占用,从而提高存储空间的利用率。Hadoop提供了多种压缩小文件的方法,例如使用Gzip、Snappy、LZO等。
  4. 使用HDFS的归档工具:HAR可以将多个小文件归档成一个HAR文件。这样做可以降低名称节点的负载,同时可以提高存储空间的利用率。

2 MapReduce数据倾斜

可能导致MapReduce数据倾斜的原因:

  1. 在MapReduce中,数据分发是基于key进行的,如果某些key的数据量很大,而其他key的数据量很小,那么就会出现数据倾斜。
  2. Mapper问题:如果Mapper函数的实现不合理,也会导致数据倾斜。比如,某些Mapper函数在处理某些键时会产生非常大的中间数据集,而其他键则产生较小的中间数据集。
  3. 任务超时或失败:如果某个Reduce节点的任务超时或失败,那么这个节点上的任务会重新启动。这会导致原本应该被其他节点处理的数据被分配到这个节点,导致数据倾斜。

缓解MapReduce数据倾斜的方法:

  1. 可以对数据进行预处理,比如对数据进行采样、分桶等操作,以使数据更加均衡。
  2. 动态地调整数据的分发方式,以便更好地平衡数据负载。例如,可以使用一些自适应的分区算法,比如SALSA,来解决数据倾斜问题。
  3. 使用Combiner函数可以在Mapper阶段对中间结果进行一些合并操作,以减少数据的传输量,从而减轻Reduce节点的负载。
  4. 如果Reduce节点的数量不足,可以增加Reduce节点的数量,以使数据更好地分布。
  5. 任务重试机制:在任务超时或失败时,可以采用任务重试机制,使任务重新分配到其他节点上,以减轻负载

相关文章:

hadoop调优(二)

hadoop调优(二) 1 HDFS故障排除 1.1 NameNode故障处理 NameNode进程挂了并且存储数据丢失了,如何恢复NameNode? 如果NameNode进程挂掉并且数据丢失了,可以利用Secondary NameNode来恢复NameNode。Secondary NameNode主要用于备份NameNode…...

【基础算法】双指针---数组元素的目标和

🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…...

Javascript借用原型对象继承父类型方法

借用原型对象继承父类型方法 目的: 儿子继承父类属性和方法,父类之后新增的方法不会被儿子继承。 前言: 先理解一个问题: Son.prototype Father.prototype; 这一操作相当于把Son的原型对象指向Father。 意味着Son的prototype的地址与Fa…...

你不会工作1年了连枚举都还不知道吧?

💗推荐阅读文章💗 🌸JavaSE系列🌸👉1️⃣《JavaSE系列教程》🌺MySQL系列🌺👉2️⃣《MySQL系列教程》🍀JavaWeb系列🍀👉3️⃣《JavaWeb系列教程》…...

ks通过恶意低绩效来变相裁员(五)绩效申诉就是「小六自证吃了一碗凉粉」

目录 一、小六吃了一碗凉粉 二、给你差绩效 公司告诉你可以绩效申诉 1、公司的实际目的是啥 2、你一旦自证,就掉入了陷阱 三、谁主张谁举证——让公司证明它绩效考核的客观性和公平性 四、针对公司的流氓恶意绩效行为,还有其他招吗 五、当公司用各…...

一阶低通滤波介绍及simulink模型

一阶低通滤波 背景介绍 低通滤波是一种过滤方式,规定低频信号能正常通过,而超过设定临界值的高频信号则被阻隔、减弱。低通滤波可以简单的认为:设定一个频率点,当信号频率高于这个频率时不能通过,在数字信号中&#…...

三十三、MongoDB PHP 扩展

PHP 语言访问 MongoDB 数据库需要使用 mongo 扩展 mongo 扩展不是 PHP 官方内置的扩展,需要开发者自己手动安装和配置 本章我们将学习如何在 Linux、Window、Mac 平台上安装 mongo 扩展 Linux 上安装 PHP MongoDB 扩展 通过 pecl 来安装 在 Linux 系统上可以通…...

2D图像处理:九点标定_上(机械手轴线与法兰轴线重合)(附源码)

文章目录 1. 九点标定2. 九点标定流程2.1 机械手轴线与法兰轴线重合代码实现1. 九点标定 在2D视觉抓取项目中,如果想要让机械手准确的抓取到工件,前提是需要知道机械手应该移动到哪里(位姿)。而移动到哪里(位姿)的获取就需要对相机和机械手进行标定。因此,九点标定(2D视…...

2023最新C++面经(一):vector内存预分配,左值引用和右值引用,move语义

文章目录零、前言一、在C中,往vector插入1000个数字,怎么做能保证性能最高二、在vector中对10000个数字删除偶数位置的数,怎么做保证性能较高三、malloc用delete会出现什么问题四、weak_ptr解决的是什么问题,lock返回的对象可以直接使用吗五、…...

【C语言经典例题】调整数组使奇数全部都位于偶数前面

目录 一、题目要求 二、解题思路 分步解析 从前往后找 从后往前找 交换 三、完整代码演示 一、题目要求 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半…...

C++经典20题型,满满知识,看这一篇就够了(含答案)

今天找了20道c的经典题型,看这一篇就够了,全是干货 目录 1、题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总…...

卷积神经网络CNN之ZF Net网络模型详解(理论篇)

1.背景 2. ZF Net模型结构 3. 改进优缺点 一、背景 ZF Net是用作者的名字命名的,Matthew D.Zeiler 和 Rob Fergus (纽约大学),2013年撰写的论文; 论文原网址https://arxiv.org/abs/1311.2901 论文名:Vis…...

Vue 3.0 响应性 基础 【Vue3 从零开始】

#声明响应式状态 要为 JavaScript 对象创建响应式状态,可以使用 reactive 方法: import { reactive } from vue// 响应式状态const state reactive({count: 0}) reactive 相当于 Vue 2.x 中的 Vue.observable() API ,为避免与 RxJS 中的 ob…...

flex布局方式让最后一个(或第二个...n)元素居右显示

<div class"round"> <div class"income">收入</div> <div class"center"> <img style"width: 12px" src"../../img/big/up.png"> </div> <div class"rg"> <span cl…...

【Python语言基础】——Python MySQL Order By

Python语言基础——Python MySQL Order By 文章目录 Python语言基础——Python MySQL Order By一、Python MySQL Order By一、Python MySQL Order By 结果排序 请使用 ORDER BY 语句按升序或降序对结果进行排序。 ORDER BY 关键字默认按升序对结果进行排序。若要按降序对结果进…...

自然数学的哲学原理--复数理论的扩展

自然数学的哲学原理--复数理论的扩展 2023-03-05 10:27:12 自然数学的哲学原理--复数理论的扩展 一维&#xff1a;线&#xff0c;实数 二维&#xff1a;平面 三维&#xff1a;立体 四维&#xff1a;相对论时空 复数&#xff0c;以一个数对形式表示&#xff0c;实现了复平面的…...

tsconfig.json中的一些配置

compilerOptions 编译选项是配置文件中非常重要也比较复杂的配置选项 target&#xff1a;设置ts代码编译的目标版本 可选值&#xff1a; ES3&#xff08;默认&#xff09;、ES5、ES6/ES2015、ES7/ES2016、ES2017、ES2018、ES2019、ES2020、 ESNext 示例&#xff1a; &quo…...

Spark调优总结

下面是基于官方优化建议&#xff0c;加上自己的一些理解整理。官方地址&#xff1a;https://spark.apache.org/docs/2.4.8/tuning.html 任务并行度 Spark会根据每个文件的大小自动设置运行“map”任务的数量&#xff0c;而对于分布式的“reduce”操作&#xff0c;例如groupBy…...

4.创建和加入通道相关(network.sh脚本createChannel函数分析)[fabric2.2]

fabric的test-network例子有一个orderer组织、两个peer组织、每个组织一个节点&#xff0c;只有系统通道&#xff08;system-channel&#xff09;&#xff0c;没有其他应用通道。我们可以使用./network.sh createChannel命令来创建一个名为mychannel的应用通道。 一、主要概念 …...

若依学习(前后端分离版)——自定义注解@Log(如何自定义注解,实现aop)

如何自定义注解 aop的基本知识与应用 若依对用户的一些更新删除等敏感操作操作进行了日志记录 注解定义和切面处理的项目位置 第一步&#xff1a;自定义注解log 定义了注解的相关信息。这里定义的属性可以在使用时加以定义 注解Target和Retention的作用 第二步切面逻辑…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

SpringAI实战:ChatModel智能对话全解

一、引言&#xff1a;Spring AI 与 Chat Model 的核心价值 &#x1f680; 在 Java 生态中集成大模型能力&#xff0c;Spring AI 提供了高效的解决方案 &#x1f916;。其中 Chat Model 作为核心交互组件&#xff0c;通过标准化接口简化了与大语言模型&#xff08;LLM&#xff0…...

Qwen系列之Qwen3解读:最强开源模型的细节拆解

文章目录 1.1分钟快览2.模型架构2.1.Dense模型2.2.MoE模型 3.预训练阶段3.1.数据3.2.训练3.3.评估 4.后训练阶段S1: 长链思维冷启动S2: 推理强化学习S3: 思考模式融合S4: 通用强化学习 5.全家桶中的小模型训练评估评估数据集评估细节评估效果弱智评估和民间Arena 分析展望 如果…...