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 浏览器࿰…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...

使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...

解析“道作为序位生成器”的核心原理
解析“道作为序位生成器”的核心原理 以下完整展开道函数的零点调控机制,重点解析"道作为序位生成器"的核心原理与实现框架: 一、道函数的零点调控机制 1. 道作为序位生成器 道在认知坐标系$(x_{\text{物}}, y_{\text{意}}, z_{\text{文}}…...
深入解析 ReentrantLock:原理、公平锁与非公平锁的较量
ReentrantLock 是 Java 中 java.util.concurrent.locks 包下的一个重要类,用于实现线程同步,支持可重入性,并且可以选择公平锁或非公平锁的实现方式。下面将详细介绍 ReentrantLock 的实现原理以及公平锁和非公平锁的区别。 ReentrantLock 实现原理 基本架构 ReentrantLo…...