当前位置: 首页 > news >正文

Hadoop3:参数调优-核心参数NameNode内存配置、并发数配置、回收站配置

一、内存配置

1、NameNode内存计算

假设,每个文件块大概占用150byte,一台服务器128G内存为例,能存储多少文件块呢?
128 * 1024 * 1024 * 1024 / 150Byte ≈ 9.1亿
G MB KB Byte

2、Hadoop3.x系列,配置NameNode内存

我的虚拟机内存是2G内存。

查看NameNodeDataNode占用内存

[atguigu@hadoop102 ~]$ jps 查看所有进程ID
2241 Jps
2163 JobHistoryServer
2004 NodeManager
1685 DataNode
1561 NameNode
[atguigu@hadoop102 ~]$ jmap -heap 1561	查看NameNode的内存情况
MaxHeapSize              = 520093696 (496.0MB)
[atguigu@hadoop102 ~]$ jmap -heap 1685
MaxHeapSize              = 520093696 (496.0MB)

3、官方建议

在这里插入图片描述
经验参考:
https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_hardware_requirements.html#concept_fzz_dq4_gbb

4、修改配置调优内存

hadoop-env.sh

export HDFS_NAMENODE_OPTS="-Dhadoop.security.logger=INFO,RFAS -Xmx1024m"
export HDFS_DATANODE_OPTS="-Dhadoop.security.logger=ERROR,RFAS -Xmx1024m"

修改完毕后,分发文件到集群其他节点,重启Hadoop。

5、验证配置结果

发现,内存已经变成1G了。
在这里插入图片描述

二、并发数配置

1、概述

NameNode需要处理客户端的请求,同时也要接受DatanNode的心跳通知。
在这里插入图片描述

2、计算

那么,并发数配置多少合适?怎么计算?怎么配置?
这个并发数,主要影响根据集群节点数,进行计算。
公式:
d f s . n a m e n o d e . h a n d l e r . c o u n t = 20 ∗ l o g e C l u s t e r S i z e dfs.namenode.handler.count=20*log_e^{ClusterSize} dfs.namenode.handler.count=20logeClusterSize

Python计算
在这里插入图片描述
我的是3个节点,经过计算,并发数配置为21比较合适。

3、修改配置

hdfs-site.xml

<!-- 
NameNode有一个工作线程池,用来处理不同DataNode的并发心跳以及客户端并发的元数据操作。
对于大集群或者有大量客户端的集群来说,通常需要增大该参数。默认值是10。
-->
<property><name>dfs.namenode.handler.count</name><value>21</value>
</property>

分发配置,并重启Hadoop

三、回收站配置

1、概述

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。

2、原理说明

在这里插入图片描述
(1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。
(2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。
(3)要求fs.trash.checkpoint.interval <= fs.trash.interval

3、开启回收站配置

core-site.xml

<property><name>fs.trash.interval</name><value>1</value>
</property>

保存,分发并重启Hadoop。

4、测试

命令行删除文件

hadoop fs -rm /cls.txt

在这里插入图片描述在这里插入图片描述
1分钟后,回收站清空,因为我们设置的保存时间就是1分钟。
在这里插入图片描述

命令行恢复回收站数据

hadoop fs -mv /user/atguigu/.Trash/Current/user/atguigu/input /user/atguigu/input

注意

1、通过网页上直接删除的文件也不会走回收站。
2、通过Java程序删除的文件不会经过回收站,需要调用moveToTrash()才进入回收站。

Trash trash = New Trash(conf);
trash.moveToTrash(path);

相关文章:

  • JAVA学习-练习试用Java实现“天际线问题”
  • Linux Ubuntu 20.04.06 安装Onboard虚拟键盘教程
  • gitignore
  • JAVA学习笔记-JAVA基础语法-DAY20-字节流、字符流
  • 语音模块——LSYT201B模组(超详细)
  • 实用的网站
  • 昇思25天学习打卡营第9天|MindSpore-Vision Transformer图像分类
  • Qt——升级系列(Level Seven):事件、文件
  • MySQL之应用层优化(三)
  • 基于Android Studio外卖系统,订餐系统
  • 【python】OpenCV—QR Code
  • jenkins部署和使用
  • IT行业入门,如何假期逆袭,实现抢跑
  • 基于redisson实现tomcat集群session共享
  • 几种linux开机自启脚本的方法
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 【技术性】Search知识
  • Android系统模拟器绘制实现概述
  • docker容器内的网络抓包
  • Fastjson的基本使用方法大全
  • JavaScript新鲜事·第5期
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • JS实现简单的MVC模式开发小游戏
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Linux中的硬链接与软链接
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • SpriteKit 技巧之添加背景图片
  • Swift 中的尾递归和蹦床
  • vue 配置sass、scss全局变量
  • Vue.js源码(2):初探List Rendering
  • vue-cli在webpack的配置文件探究
  • Yii源码解读-服务定位器(Service Locator)
  • 从零开始的无人驾驶 1
  • 构造函数(constructor)与原型链(prototype)关系
  • 和 || 运算
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 聊聊flink的TableFactory
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #DBA杂记1
  • #php的pecl工具#
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (二)springcloud实战之config配置中心
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .gitattributes 文件
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET LINQ 通常分 Syntax Query 和Syntax Method