当前位置: 首页 > 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的作用 第二步切面逻辑…...

防止暴力破解ssh的四种方法

一. 方法介绍 防止暴力破解的四种方法&#xff1a; 1 密码要写的足够的复杂&#xff0c;通常建议将密码写16位&#xff0c;并且无连贯的数字或者字母&#xff1b;当然也可以固定一个时间修改一次密码&#xff0c;推荐是一个月修改一次会稳妥一些2 修改ssh的端口号&#xff0c;…...

jsp试卷分析管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP试卷分析管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…...

可选链运算符(?.)与空值合并运算符(??)

1. 可选链运算符Optional chaining(?.) MDN定义 可选链运算符&#xff08;?.&#xff09;允许读取位于连接对象链深处的属性的值&#xff0c;而不必明确验证链中的每个引用是否有效。?. 运算符的功能类似于 . 链式运算符&#xff0c;不同之处在于&#xff0c;在引用为空 (n…...

JavaScript 闭包

JavaScript 变量可以是局部变量或全局变量。私有变量可以用到闭包。全局变量函数可以访问函数内部定义的变量&#xff0c;如&#xff1a;实例function myFunction() {var a 4;return a * a;}尝试一下 函数也可以访问函数外部定义的变量&#xff0c;如&#xff1a;实例var a 4…...

每日记录自己的Android项目(二)—Viewbinding,WebView,Navigation

今日想法今天是想把做一个跳转页面的时候调到H5页面去&#xff0c;但是这个页面我用app来承载&#xff0c;不要调到浏览器去。所以用到了下方三个东西。Viewbindingbuild.gradle配置首先在app模块的build.gradle里添加一下代码默认情况下&#xff0c;每一个布局xml文件都会生成…...

20230305英语学习

Climate Change Is Suffocating Large Parts of the Ocean 研究&#xff1a;气候变化正在使海洋“缺氧” One day more than a decade ago, Eric Prince was studying the tracks of tagged fish when he noticed something odd.Blue marlin off the southeastern United State…...

【Linux】手把手教你在CentOS上使用docker 安装MySQL8.0

文章目录前言一. docker的安装1.1 从阿里下载repo镜像1.2 安装docker1.3 启动docker并查看版本二. 使用docker安装MySQL8.02.1 拉取MySQL镜像2.2 创建容器2.3 操作MySQL容器2.4 远程登录测试总结前言 大家好&#xff0c;又见面了&#xff0c;我是沐风晓月&#xff0c;本文主要…...

论文解读:High Dynamic Range and Super-Resolution from Raw Image Bursts

论文解读&#xff1a;High Dynamic Range and Super-Resolution from Raw Image Bursts 今天介绍一篇发表于 2022 年 ACM Tranaction on Graphic 上的文章&#xff0c;这篇文章通过多帧曝光将 HDR 与 SR 放在一起解决&#xff0c;与一般的文章不同的地方在于&#xff0c;这篇文…...

国内的PMP考试通过率高达97%?

自认为是虚高&#xff0c;虽然国人在考试方面的确独树一帜的强&#xff0c;应该也没有这样夸张。 如果自学&#xff0c;大概是50%&#xff0c;如果有老师教&#xff0c;那大概是60%到80%&#xff0c;还是比较高的。 为什么自学那么低&#xff1f;除了自身的自制力的问题&…...

IOC(概念和原理)

文章目录1. IOC容器概念2. IOC底层原理3. IOC&#xff08;接口&#xff09;4. IOC操作Bean管理&#xff08;概念&#xff09;5. IOC操作Bean管理&#xff08;基于xml方式&#xff09;5.1 基于xml创建对象5.2 基于xml方式注入属性5.2.1 DI&#xff1a;依赖注入&#xff0c;就是注…...