HDFS核心参数

楼高2年前技术文章876

1.NameNode内存生产配置

(1)NameNode内存计算,每个文件块大概占用150byte,一台服务器128G内存为例,能存储9.1亿个文件

128 * 1024 * 1024 * 1024  / 150Byte ≈  9.1亿

(2)Hadoop2.x系列,NameNode内存默认2000m,如果服务器内存4G,NameNode内存可以配置3g。在hadoop-env.sh文件中配置HADOOP_NAMENODE_OPTS=-Xmx3072m

(3)Hadoop3.x系列,hadoop-env.sh中描述Hadoop的内存是动态分配的

hadoop-env.sh中描述Hadoop的内存是动态分配的

image.png

2.NameNode心跳并发配置

NameNode有一个工作线程池,用来处理不同DataNode的并发心跳以及客户端并发的元数据操作,对于大集群或者有大量客户端的集群来说,通常需要增大该参数。默认值是10

<property>

    <name>dfs.namenode.handler.count</name>

    <value>21</value>

</property>

企业经验计算:

比如集群规模(DataNode台数)为3台时,此参数设置为21。计算公示如下:

image.png

3. 开启回收站配置

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

(2)回收站工作机制如右图所示

(3)开启回收站功能参数说明

        默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。

        默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

       要求fs.trash.checkpoint.interval <= fs.trash.interval。

(4)启用回收站

修改core-site.xml,配置垃圾回收时间为1分钟。

<property>

    <name>fs.trash.interval</name>

    <value>1</value>

</property>

(5)查看回收站

回收站目录在HDFS集群中的路径:/user/hdfs/.Trash

  (6) 通过网页上直接删除的文件也不会走回收站

  (7) 通过程序删除的文件不会经过回收站,需要调用moveToTrash()才进入回收站

Trash trash = New Trash(conf);

trash.moveToTrash(path);

  (8) 只有在命令行利用hadoop fs -rm命令删除的文件才会走回收站

  (9) 回收站回复,通过hadoop fs mv命令将回收站数据移动到制定目录

相关文章

PG的多版本并发控制(二)

PG的多版本并发控制(二)

二、 PG数据库DML操作的相关概念xmin、xmax、cmin、cmax是每个数据行tuple上的隐藏字段,主要用于区别不同事务以及相同事务内tuple的行版本。在了解这四个参数概念前,我们首先需要...

Trino开启ldap认证

Trino开启ldap认证

1、背景由于对于安全监管的要求,需要对trino服务开启安全认证体系。2、基于私有证书的httpskeytool -genkeypair -validity 36500 -ext SAN=IP:172...

从Docker拉取镜像一直失败超时?这些解决方案帮你解决烦恼

设置国内源:提示:常规方案(作用不大)阿里云提供了镜像源:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 登录后你会获得一个专属...

kubernetes集群清理

清理如果你在集群中使用了一次性服务器进行测试,则可以关闭这些服务器,而无需进一步清理。你可以使用 kubectl config delete-cluster 删除对集群的本地引用。但是,如果要更干净地...

触发kube-apiserver流控导致ACK集群中节点状态异常

触发kube-apiserver流控导致ACK集群中节点状态异常

问题现象ack集群中一个节点状态为notready,但是排查节点上的核心组件:kubelet、kube-proxy、flannel、etcd等状态均为正常。排查步骤1、查日志分别排查核心组件以及系统日...

PG的锁(二)

四、死锁PostgreSQL自动检测死锁情况并会自动回滚其中一个事务进行处理,从而其他事务完成。db1=# select * from t1 where id in (1,2,3);  id | i...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。