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的作用 第二步切面逻辑…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...
JDK 17 序列化是怎么回事
如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...
