hadoop调优(二)
hadoop调优(二)
1 HDFS故障排除
1.1 NameNode故障处理
NameNode进程挂了并且存储数据丢失了,如何恢复NameNode?
如果NameNode进程挂掉并且数据丢失了,可以利用Secondary NameNode来恢复NameNode。Secondary NameNode主要用于备份NameNode的编辑日志和文件系统镜像,以便在NameNode失败时进行快速恢复。
恢复NameNode的步骤:
-
停止所有Hadoop进程
-
启动Secondary NameNode
-
从Secondary NameNode备份的编辑日志和文件系统镜像中恢复NameNode元数据。可以使用以下命令来执行此操作:
hdfs namenode -recover
该命令将自动查找Secondary NameNode备份的编辑日志和文件系统镜像,并将其应用于NameNode,从而恢复元数据。
-
如果数据丢失,需要重新将数据复制到Hadoop集群中。
-
启动Hadoop进程
Secondary NameNode仅备份NameNode的编辑日志和文件系统镜像,并不是实时同步NameNode的状态。因此,在使用Secondary NameNode恢复NameNode时,可能会丢失一些最新的数据更改。
1.2 安全模式
在安全模式下,HDFS不允许客户端执行写操作,但可以读取数据。
NameNode会在以下情况下进入安全模式:
- 第一次启动:当NameNode第一次启动时,它会进入安全模式。这是因为在此时,它需要读取所有数据节点的信息并建立与它们的通信,以确定整个HDFS的状态。进入安全模式可以防止客户端对HDFS进行写操作,直到NameNode成功启动并处理所有坏块。
- 数据节点数量过少:如果数据节点数量少于NameNode的阈值(默认情况下为数据节点数量的95%),则NameNode会进入安全模式。这种情况可能发生在添加新数据节点之前,或者因为节点故障而导致节点数减少。
- 数据节点坏块过多:如果有太多坏块(默认情况下是1%的数据块),则NameNode会进入安全模式。在这种情况下,HDFS会自动尝试修复坏块,直到坏块数量降至可接受水平。
1.2.1数据块损坏,进入安全模式,如何处理
- 使用命令行工具hdfs fsck来检查文件系统,并查看坏块报告。可以使用坏块报告确定哪些块需要修复。
- 使用命令行工具 hdfs dfsadmin -deleteBlock 命令手动删除坏块。此命令会从NameNode元数据中删除坏块的条目,并在DataNode上删除对应的数据块。然后,HDFS将自动复制其他副本到相应的DataNode上,以保证数据的完整性。
- 如果坏块的副本数量不足,可以使用命令行工具 hdfs dfsadmin -fsck 命令手动修复坏块。此命令会在DataNode上查找坏块的副本,并尝试复制它们到缺失的DataNode上。可以使用-replace参数来指定要替换的DataNode。
- 如果DataNode上的存储空间不足,可以使用命令行工具 hdfs balancer 来移动坏块到其他DataNode上的空闲存储空间。这将为修复坏块提供足够的空间,并减少未来发生类似问题的可能性。
1.3 慢磁盘监控
当某个节点的磁盘出现问题,可能会导致整个Hadoop集群的性能下降。因此,需要监控Hadoop集群中的磁盘
监控hadoop慢磁盘的方法
-
Hadoop自带的磁盘健康检查工具:Hadoop提供了一个磁盘健康检查工具,可以检查HDFS上的所有数据块是否可用,以及本地磁盘是否有故障。可以通过运行以下命令来运行此工具:
hdfs fsck / -files -blocks -locations
-
进行磁盘性能测试,可以使用FIO执行测试。测试会提供提供磁盘IOPS和吞吐量等性能指标,以便识别哪些磁盘出现性能问题
1.4 小文件归档
解决小文件问题的方法
- 将小文件存储在单独的目录中:将小文件存储在单独的目录中可以避免名称节点的负载过重。这样做可以将小文件分布在多个目录中,从而使名称节点可以更好地管理这些小文件。
- 使用HBase存储小文件:HBase是一种分布式的非关系型数据库,可以用来存储小文件。使用HBase存储小文件可以提高存储空间的利用率,因为它不会像HDFS那样使用大量的元数据来管理小文件。
- 压缩小文件:对小文件进行压缩可以减少磁盘空间的占用,从而提高存储空间的利用率。Hadoop提供了多种压缩小文件的方法,例如使用Gzip、Snappy、LZO等。
- 使用HDFS的归档工具:HAR可以将多个小文件归档成一个HAR文件。这样做可以降低名称节点的负载,同时可以提高存储空间的利用率。
2 MapReduce数据倾斜
可能导致MapReduce数据倾斜的原因:
- 在MapReduce中,数据分发是基于key进行的,如果某些key的数据量很大,而其他key的数据量很小,那么就会出现数据倾斜。
- Mapper问题:如果Mapper函数的实现不合理,也会导致数据倾斜。比如,某些Mapper函数在处理某些键时会产生非常大的中间数据集,而其他键则产生较小的中间数据集。
- 任务超时或失败:如果某个Reduce节点的任务超时或失败,那么这个节点上的任务会重新启动。这会导致原本应该被其他节点处理的数据被分配到这个节点,导致数据倾斜。
缓解MapReduce数据倾斜的方法:
- 可以对数据进行预处理,比如对数据进行采样、分桶等操作,以使数据更加均衡。
- 动态地调整数据的分发方式,以便更好地平衡数据负载。例如,可以使用一些自适应的分区算法,比如SALSA,来解决数据倾斜问题。
- 使用Combiner函数可以在Mapper阶段对中间结果进行一些合并操作,以减少数据的传输量,从而减轻Reduce节点的负载。
- 如果Reduce节点的数量不足,可以增加Reduce节点的数量,以使数据更好地分布。
- 任务重试机制:在任务超时或失败时,可以采用任务重试机制,使任务重新分配到其他节点上,以减轻负载
相关文章:
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 自然数学的哲学原理--复数理论的扩展 一维:线,实数 二维:平面 三维:立体 四维:相对论时空 复数,以一个数对形式表示,实现了复平面的…...
tsconfig.json中的一些配置
compilerOptions 编译选项是配置文件中非常重要也比较复杂的配置选项 target:设置ts代码编译的目标版本 可选值: ES3(默认)、ES5、ES6/ES2015、ES7/ES2016、ES2017、ES2018、ES2019、ES2020、 ESNext 示例: &quo…...
Spark调优总结
下面是基于官方优化建议,加上自己的一些理解整理。官方地址:https://spark.apache.org/docs/2.4.8/tuning.html 任务并行度 Spark会根据每个文件的大小自动设置运行“map”任务的数量,而对于分布式的“reduce”操作,例如groupBy…...

4.创建和加入通道相关(network.sh脚本createChannel函数分析)[fabric2.2]
fabric的test-network例子有一个orderer组织、两个peer组织、每个组织一个节点,只有系统通道(system-channel),没有其他应用通道。我们可以使用./network.sh createChannel命令来创建一个名为mychannel的应用通道。 一、主要概念 …...

若依学习(前后端分离版)——自定义注解@Log(如何自定义注解,实现aop)
如何自定义注解 aop的基本知识与应用 若依对用户的一些更新删除等敏感操作操作进行了日志记录 注解定义和切面处理的项目位置 第一步:自定义注解log 定义了注解的相关信息。这里定义的属性可以在使用时加以定义 注解Target和Retention的作用 第二步切面逻辑…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...
ArcPy扩展模块的使用(3)
管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如,可以更新、修复或替换图层数据源,修改图层的符号系统,甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...