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);
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值