hadoop调优
hadoop调优
1 HDFS核心参数
1.1 NameNode内存生产配置
1.1.1 NameNode内存计算
每个文件块大概占用150byte,如果一台服务器128G,能存储的文件块如下
128 (G)* 1024(MB) * 1024(KB) * 1024(Byte) / 150 Byte = 9.1 亿
1.1.2 Hadoop2.x
在Hadoop2.x中,NameNode内存默认2000m,如果服务器内存4G,NameNode内存可以配置3G
在hadoop-env.sh中配置
HADOOP_NAMENODE_OPTS=-Xmx3072m
1.1.3 Hadoop3.x
在Hadoop3.x中,NameNode和DataNode占用的内存都是自动分配的,并且相等
可以自己进行更改

配置hadoop-env.sh
export HDFS_NAMENODE_OPTS="-Dhadoop.security.logger=INFO,RFAS -
Xmx1024m"
export HDFS_DATANODE_OPTS="-Dhadoop.security.logger=ERROR,RFAS
-Xmx1024m"
1.2 NameNode心跳并发配置
NameNode有一个工作线程池,用来处理不同的DataNode的并发心跳以及客户端并发的元数据操作


默认值为10
<property><name>dfs.namenode.handler.count</name><value>21</value>
</property>
1.3 回收站配置
回收站可以蒋删除的文件在不超时的情况下恢复原数据,起到防止误操作、备份的作用
1.3.1 工作机制

1.3.2 参数说明
- 默认值fs.trash.interval = 0,表示禁用回收站
- fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。该值为0,表示和fs.trash.interval 参数相同
- 要求 fs.trash.checkpoint.interval <= fs.trash.interval。
1.3.3 启动回收站
修改core-site.xml,配置垃圾回收时间为1min
<property><name>fs.trash.interval</name><value>1</value>
</property>
通过网站删除的文件不会进入到回收站
经过程序删除的文件不会经过回收站,需要调用moveToTrash()才能进入回收站
Trash trash = New Trash(conf);
trash.moveToTrash(path);
在命令行使用hadoop fs -rm命令删除的文件才会走回收站
2 HDFS集群压测
HDFS的读写性能只要收到网络和磁盘的影响
2.1 HDFS写性能

向HDFS写10个128M文件
[jx@hadoop102 mapreduce]$ hadoop jar /opt/module/hadoop3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-clientjobclient-3.1.3-tests.jar TestDFSIO -write -nrFiles 10 -
fileSize 128MB
2021-02-09 10:43:16,853 INFO fs.TestDFSIO: ----- TestDFSIO ----- : write
2021-02-09 10:43:16,854 INFO fs.TestDFSIO: Date & time: Tue Feb
09 10:43:16 CST 2021
2021-02-09 10:43:16,854 INFO fs.TestDFSIO: Number of files: 10
2021-02-09 10:43:16,854 INFO fs.TestDFSIO: Total MBytes processed: 1280
2021-02-09 10:43:16,854 INFO fs.TestDFSIO: Throughput mb/sec: 1.61
2021-02-09 10:43:16,854 INFO fs.TestDFSIO: Average IO rate mb/sec: 1.9
2021-02-09 10:43:16,854 INFO fs.TestDFSIO: IO rate std deviation: 0.76
2021-02-09 10:43:16,854 INFO fs.TestDFSIO: Test exec time sec: 133.05
2021-02-09 10:43:16,854 INFO fs.TestDFSIO:
Number of files : 生成的MapTask的数量
Total MBytes processed : 单个map处理文件的大小
Throughput mb/sec:单个mapTask的吞吐量
计算方式:处理总文件的大小 / 每个mapTask写数据的时间累加
集群整体的吞吐量 : 生成的mapTask数量 * 单个mapTask的吞吐量
Average IO rate mb/sec:平均每个mapTask的吞吐量
如果测试速度远小于网络,可以考虑增加固态硬盘或者增加磁盘个数
3 HDFS多目录配置
3. 1 NameNode多目录配置
为了提高HDFS的可靠性和性能,可以在NameNode上配置多个目录来存储NameNode的元数据信息。每个目录存放内容相同,增加了可靠性
配置NameNode多目录的步骤:
- 创建多个目录:在NameNode所在的机器上创建多个目录用于存储NameNode元数据信息。可以在本地磁盘、网络存储设备或者分布式文件系统上创建这些目录。
- 设置hdfs-site.xml文件:在hdfs-site.xml文件中添加以下配置:
<property><name>dfs.namenode.name.dir</name><value>/path/to/first/directory,/path/to/second/directory</value>
</property>
其中,/path/to/first/directory和/path/to/second/directory是创建的多个目录的路径,多个目录之间用逗号分隔。
-
将元数据信息复制到新目录:在NameNode启动之前,需要将原来的元数据信息复制到新目录中。可以使用命令
hdfs dfsadmin -refreshNodes来刷新NameNode节点,并将元数据信息复制到新目录中。 -
启动NameNode:启动NameNode后,它将自动读取hdfs-site.xml文件中的配置,并将元数据信息存储到多个目录中。
3.2 DataNode多目录配置
DataNode 可以配置成多个目录,每个目录存储的数据不一样
配置DataNode多目录的步骤:
- 创建多个目录:在DataNode所在的机器上创建多个目录用于存储数据块。可以在本地磁盘、网络存储设备或者分布式文件系统上创建这些目录。
- 设置hdfs-site.xml文件:在hdfs-site.xml文件中添加以下配置:
phpCopy code<property><name>dfs.datanode.data.dir</name><value>/path/to/first/directory,/path/to/second/directory</value>
</property>
其中,/path/to/first/directory和/path/to/second/directory是创建的多个目录的路径,多个目录之间用逗号分隔。
- 启动DataNode:启动DataNode后,它将自动读取hdfs-site.xml文件中的配置,并将数据块存储到多个目录中。
3.3 磁盘间数据均衡
在HDFS中,数据块默认会被存储在集群中的不同DataNode上,以提高数据的可靠性和性能。但是,由于不同DataNode的磁盘容量和使用情况不同,可能会导致磁盘空间不平衡的问题,进而影响HDFS的性能。为了解决这个问题,可以使用Hadoop提供的数据均衡工具来平衡不同DataNode的磁盘空间使用情况。
下面是使用数据均衡工具来平衡不同DataNode的磁盘空间使用情况的步骤:
- 启用数据均衡工具:在hdfs-site.xml文件中添加以下配置,启用数据均衡工具:
<property><name>dfs.balancer.enabled</name><value>true</value>
</property>
- 配置数据均衡工具:可以在命令行中使用hdfs balancer命令配置数据均衡工具。例如,可以使用以下命令来配置数据均衡工具,使得每个DataNode的磁盘空间使用率不超过90%:
Copy code
hdfs balancer -threshold 90
- 运行数据均衡工具:可以在命令行中使用hdfs balancer命令来运行数据均衡工具。例如,可以使用以下命令来运行数据均衡工具:
Copy code
hdfs balancer
数据均衡工具将自动检测集群中的不同DataNode的磁盘空间使用情况,并移动数据块来平衡磁盘空间使用情况。
4 HDFS集群的扩容
4.1 添加白名单
HDFS白名单是指在HDFS中配置一组允许访问HDFS文件系统的IP地址列表,其他IP地址将被禁止访问。这种配置可以增强HDFS集群的安全性,防止未经授权的访问。
HDFS白名单的配置可以通过以下步骤实现:
-
编辑hdfs-site.xml文件,添加以下配置:
code<property><name>dfs.hosts</name><value>/etc/hadoop/conf/dfs.hosts</value> </property> -
在dfs.hosts文件中列出允许访问HDFS文件系统的IP地址列表,格式如下:
hadoop102 hadoop103 hadoop104 -
重启HDFS服务,使配置生效。
在HDFS白名单配置生效后,只有列出的IP地址可以访问HDFS文件系统,其他IP地址将被禁止访问。需要注意的是,dfs.hosts文件必须在所有的DataNode节点和NameNode节点上都存在,否则HDFS将无法启动。
4.2服务器间数据均衡
数据均衡是指在分布式存储系统中,通过重新分配存储节点之间的数据块来平衡不同节点之间的数据负载,以提高存储系统的性能和可靠性。Hadoop自带了数据均衡机制,当某个节点的数据负载过高或过低时,会自动将数据块从一个节点移动到另一个节点以实现负载均衡。
以下是Hadoop中常用的数据均衡方法:
- 周期性数据均衡:Hadoop默认情况下会每隔一段时间(默认为一周)对数据进行均衡。当数据节点之间的负载差异超过一定的阈值时,Hadoop会自动启动数据均衡过程。
- 手动数据均衡:管理员也可以手动启动数据均衡过程,可以通过hadoop dfsadmin -balancer命令来手动触发数据均衡。该命令将重新分配数据块,使得所有节点之间的负载均衡。
- 配置数据均衡策略:Hadoop中还提供了配置数据均衡策略的方法。例如,可以配置阈值,当负载差异超过阈值时触发数据均衡;可以配置最大移动数据块数量,以避免数据均衡过程过于耗时等。
需要注意的是,数据均衡会占用网络带宽和磁盘IO资源,并且在数据均衡过程中,Hadoop集群的性能可能会受到影响。因此,在进行数据均衡时,需要根据集群的负载情况和运行时间进行调度和计划,以确保数据均衡过程对Hadoop集群的影响最小。
由于 HDFS 需要启动单独的 Rebalance Server 来执行 Rebalance 操作,所以尽量 不要在 NameNode 上执行 start-balancer.sh,而是找一台比较空闲的机器。
4.3 黑名单退役服务器
,黑名单退役服务器是指已经从集群中移除的服务器或节点。通常,当一个服务器或节点出现故障或需要升级时,管理员会将其加入黑名单并从集群中移除。这样可以避免故障节点对整个集群造成影响,同时也可以保证集群的稳定性和高可用性。
对于黑名单退役服务器中的数据,Hadoop提供了多种方式来处理:
- 数据重复存储:管理员可以通过配置副本数来实现数据的冗余存储。如果黑名单退役服务器上的数据已经有副本存储在其他服务器上,那么数据不会丢失。Hadoop会自动将数据块复制到其他服务器上,以保证数据的可靠性和可用性。
- 数据迁移:如果黑名单退役服务器上的数据没有副本存储在其他服务器上,那么管理员需要手动将数据迁移到其他服务器上。可以使用hadoop fs -get命令将数据下载到本地,然后使用hadoop fs -put命令将数据上传到其他服务器。
- 数据删除:如果黑名单退役服务器上的数据已经没有用处,可以使用hadoop fs -rm命令将其删除。删除数据之前需要进行备份,以免误删造成数据丢失。
5 HDFS 存储优化
5.1 纠删码
5.1.1 纠删码原理
HDFS纠删码是一种数据保护机制,通过在数据块之间添加冗余信息来提高数据的可靠性和可用性。在HDFS中,将原始数据分割成多个数据块,并在这些数据块之间添加冗余信息以保护数据的完整性。
与传统的数据备份方式相比,纠删码具有更高的存储效率和更好的可靠性。它可以将原始数据切分成多个数据块,然后通过添加冗余信息来保护数据的完整性。与备份方式相比,纠删码可以在保护数据的同时减少数据存储的成本。
HDFS纠删码可以提高数据的可靠性和可用性,同时也可以减少数据存储的成本。但是,它也会增加数据处理的复杂度和计算成本。在使用HDFS纠删码时,需要根据具体应用场景进行选择,并合理配置纠删码参数以达到最佳的性能和效果。
5.1.2 纠删码策略
RS-3-2-1024k::使用 RS 编码,每 3 个数据单元,生成 2 个校验单元,共 5 个单元,只要有任意的 3 个单元存在,就可以得到原始数据
RS-10-4-1024k:使用 RS 编码,每 10 个数据单元(cell),生成 4 个校验单元,共 14 个单元,只要有任意的 10 个单元存在),就可以得到原始数据
XOR-2-1-1024k:使用 XOR 编码(速度比 RS 编码快),每 2 个数据单元,生成 1 个校 验单元,共 3 个单元,只要有任意的 2 个单元存在,就可以得到原始数据
5.2 异构存储(冷热数据分离)
HDFS异构存储是指在HDFS中使用不同类型的存储介质来存储数据,例如硬盘、固态硬盘、闪存、内存等。异构存储可以提高存储系统的性能和可用性,同时也可以降低存储成本。

相关文章:
hadoop调优
hadoop调优 1 HDFS核心参数 1.1 NameNode内存生产配置 1.1.1 NameNode内存计算 每个文件块大概占用150byte,如果一台服务器128G,能存储的文件块如下 128 (G)* 1024(MB) * 1024(KB) * 1024(Byte) / 150 Byte 9.1 亿 1.1.2 Hadoop2.x 在Hadoop2.x中…...
EM@三角函数诱导公式
文章目录诱导公式单位圆坐标和三角函数记忆口诀符号看象限奇变偶不变例常用诱导公式🎈常用部分(5对)倒数关系六种三角函数间的转换关系小结ReflectionsShifts and periodicity诱导公式 诱导公式 - 维基百科,自由的百科全书 (wikipedia.org) 单位圆坐标…...
是不是只能学IT互联网技术才有发展前途?
当然不是,三百六十行,行行出状元。 但我们需要认清一个现实是,我们正处于一个信息爆炸的时代,掌握紧跟潮流的技术,才可以让我们更自信地面对每天的生活,才有多余的精力、财力来享受生活。“人生在世&#…...
Linux 进程:exit和_exit的辨析
目录1.接口与函数2.缓冲区3.exit 与 _exit(1)_exit(2)exit这里来认识exit函数和 _exit接口 ,它们的作用是类似的,都是在调用后退出程序,可以在程序的任何地方调用。 1.接口与函数 exit函数和_exit接口,一个函数,一个…...
智能电子标签——商超版价签
2.1英寸TFT黑白电子价签 ★ 快速变价,高效运营 ★ 市场实用,布局物联网未来 ★ 更好客户体验 ★ 降低系统成本,具备竞争力 ★ 2.1英寸黑白红电子价签 ★ 电池低能耗,常规使用三年 ★ 穿透力强不慣障碍 ★ 2.4G载波&#x…...
计算机网络自检
1 计网体系结构 因特网结构: 计网三个组成成分: 工作方式-其中2个部分: 功能-两个子网: 5个XAN分别是: 传输技术,两者的主要区别: 4种基本网络拓扑结构: 3种交换技术: 协…...
DC真实数据都有哪些?Filecoin为DC数据存储的解决方案又是什么?
对于生活在数字时代的我们而言,数据或许就和平日呼吸的空气一样,已经不需要我们再去思考其概念。我们的日常生活中无时无刻都有数据的身影,日常的购物消费、出行、学习、记录,当我们每天生活有数字化加持的小区里,工作…...
解决vscode无法自动更新
一.前言 要在vscode里面安装插件,被提示版本不匹配,然后得更新,然后我发现我的'帮助'菜单栏下没有检查更新,然后我去&…...
315线上知识竞赛答题活动方案及模板分享
315线上知识竞赛答题活动方案及模板分享在315国际消费者权益日来临之际, 很多单位推出有奖知识竞答, 希望大家在了解专业知识的同时, 还可以拿到自己喜欢的奖品!这是消费者委员会和监管局联合举办的“315消费知识在线有奖竞答”活…...
论文复现-2:代码部分
以CONLL03数据集为例 文章目录1 整体框架2 数据结构2.1 原始数据集2.2 处理之后的数据集3 代码部分3.0 模型参数3.1 数据预处理3.2 模型方法3.1.1 定义表示的学习权重项的学习双塔模型3.2.2 forward3.3 损失函数3.4 训练与推理Ablation study训练实例1 整体框架 任务是实体识别…...
Linux开放的端口太多了?教你一招找出所有开放的端口,然后直接干掉!
基于服务器安全性维护的目的,查看所有开放的端口是通常采取的第一步,从中检查出可疑或者不必要的端口并将其关掉。关于查看开放的端口,方法不止一种,比如lsof 命令,还可以使用 ss 命令。 查看开放的端口 今天我们就介…...
mysql集群简介
集群的好处 高可用性:故障检测及迁移,多节点备份。 可伸缩性:新增数据库节点便利,方便扩容。 负载均衡:切换某服务访问某节点,分摊单个节点的数据库压力。 集群要考虑的风险 网络分裂:群集还…...
装饰器模式
概述 当我们编写软件时,有时我们会遇到需要在不修改现有代码的情况下添加新功能的情况。这时,我们可以使用装饰器模式。 装饰器模式是一种结构性设计模式,它允许我们在不改变对象接口的情况下动态地向对象添加功能。装饰器模式通过创建一个…...
21 Nacos客户端本地缓存及故障转移
Nacos客户端本地缓存及故障转移 在Nacos本地缓存的时候有的时候必然会出现一些故障,这些故障就需要进行处理,涉及到的核心类为ServiceInfoHolder和FailoverReactor。 本地缓存有两方面,第一方面是从注册中心获得实例信息会缓存在内存当中&a…...
遍历读取文件夹下的所有文件
遍历读取文件夹下的所有文件 例如,读取文件夹下,子文件夹的所有的jpg文件: import glob path "./database/20230302/night/*/*.jpg"#设置自己的文件夹路径以及文件 image_files glob.glob(path, recursiveTrue)for image_file …...
nexus安装与入门
安装 nexus-3.31.1-01-unix.tar.gz 链接:https://pan.baidu.com/s/1YrJMwpGxmu8N2d7XMl6fSg 提取码:kfeh 上传到服务器,解压 tar -zvxf nexus-3.31.1-01-unix.tar.gz进入bin目录,启动 ./nexus start查看状态 ./nexus status默…...
Flink SQL Checkpoint 学习总结
前言 学习总结Flink SQL Checkpoint的使用,主要目的是为了验证Flink SQL流式任务挂掉后,重启时还可以继续从上次的运行状态恢复。 验证方式 Flink SQL流式增量读取Hudi表然后sink MySQL表,任务启动后处于running状态,先查看sin…...
2023年“楚怡杯“湖南省职业院校技能竞赛“网络安全”竞赛任务书
2023年“楚怡杯“湖南省职业院校技能竞赛“网络安全”竞赛任务书 一、竞赛时间 总计:360分钟 竞赛阶段竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略配置 A-3 流量完整性保护 A-4 事件监控 …...
MyBatis中主键回填的两种实现方式
主键回填其实是一个非常常见的需求,特别是在数据添加的过程中,我们经常需要添加完数据之后,需要获取刚刚添加的数据 id,无论是 Jdbc 还是各种各样的数据库框架都对此提供了相关的支持,本文我就来和和大家分享下数据库主…...
Windows11如何打开ie浏览器
目录1.背景:2.方法一:在 edge 中配置使用 ie 模式3.方法二:通过 Internet 选项 打开1.背景: 昨天电脑自动从win10升级为win11了,突然发现电脑找不到ie浏览器了,打开全都是直接跳转到 edge 浏览器࿰…...
LeetCode 1423. 可获得的最大点数【定长滑窗,逆向和正向思维】1574
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
阿里云轻量应用服务器上5分钟搞定EMQ X MQTT集群搭建(附性能调优技巧)
阿里云轻量应用服务器上5分钟构建高可用EMQ X MQTT集群 物联网应用的爆发式增长让MQTT协议成为设备连接的首选方案。对于需要处理海量设备连接的企业开发者而言,单节点MQTT服务器早已无法满足高并发和容灾需求。本文将带你在阿里云轻量应用服务器上快速部署EMQ X集群…...
打造 TC397 AUTOSAR OS 多核工程最小系统:点亮多核的明灯之旅
tc397autosar os多核工程最小系统 tc397 autosar os 多核最小系统、配置工程、tasking工程 实现功能:六核跑起来、亮灯。在汽车电子领域,多核处理器的应用愈发广泛,TC397 凭借其强大的性能成为众多开发者的心头好。今天咱们就来聊聊如何搭建 …...
告别改板焦虑!手把手教你用Ansys SIwave 2022R2搞定PCB信号完整性仿真(附S参数导出Pspice全流程)
告别改板焦虑!Ansys SIwave 2022R2信号完整性仿真实战指南 在高速PCB设计领域,信号完整性问题如同悬在硬件工程师头顶的达摩克利斯之剑。当信号速率突破10Gbps,板间距离压缩至毫米级时,传统"设计-打样-测试"的迭代模式已…...
SwiftDate内存泄漏排查指南:5个Closure与委托模式最佳实践
SwiftDate内存泄漏排查指南:5个Closure与委托模式最佳实践 【免费下载链接】SwiftDate 🐔 Toolkit to parse, validate, manipulate, compare and display dates, time & timezones in Swift. 项目地址: https://gitcode.com/gh_mirrors/sw/SwiftD…...
Qwen3-VL多模态检索系统:跨模态搜索部署实战案例
Qwen3-VL多模态检索系统:跨模态搜索部署实战案例 用图文对话技术构建智能搜索系统,让AI看懂图片内容并精准回答你的问题 1. 项目介绍与环境准备 Qwen3-VL是阿里最新开源的视觉-语言模型,可以说是目前最强大的多模态AI系统之一。这个模型不仅…...
深度学习训练中loss震荡与不收敛的常见原因及实战调优策略
1. 为什么你的模型loss像过山车?先看懂这些典型症状 第一次打开TensorBoard看到自己的loss曲线像心电图一样上蹿下跳,那种感觉就像新手司机开车时方向盘失控。其实loss震荡和不收敛是深度学习中再常见不过的问题,但不同表现背后藏着完全不同的…...
2026最权威AI论文写作工具榜单:这些被高校和导师悄悄推荐的软件你还不知道?
AI论文写作工具正在重塑学术研究的效率与质量。依托权威检测平台、高校实测数据及广大师生的真实反馈,这些工具已逐步成为科研工作者不可或缺的助手。本文基于多维测评与实际应用效果,盘点2026年最受高校和导师推荐的AI论文写作软件,带你了解…...
开源STK插件模块大全:提升你的空天地一体化仿真效率
开源STK插件模块大全:提升空天地一体化仿真效率的实战指南 如果你已经熟悉STK的基础操作,却还在为复杂的星座仿真流程和有限的分析功能而头疼,那么开源插件模块将成为你的效率倍增器。本文将带你深入探索那些被专业用户私藏的工具箱ÿ…...
2026论文写作工具红黑榜:AI论文工具怎么选?用数据说话!
2026年论文写作工具红黑榜出炉,千笔AI、ThouPen、豆包位列红榜,适配国内学术规范,助力高效科研。黑榜需避开低质免费工具、无真实引用平台及过度依赖全文生成的工具。选择时建议按需求匹配度 - 数据可信度 - 成本承受力三维模型进行评估。 一…...
