NameNode内存生产配置
1)NameNode 内存计算
每个文件块大概占用 150byte,一台服务器 128G 内存为例,能存储多少文件块呢?
128 * 1024 * 1024 * 1024 / 150Byte ≈ 9.1 亿
G MB KB Byte
2)Hadoop2.x 系列,配置 NameNode 内存
NameNode 内存默认 2000m,如果服务器内存 4G,NameNode 内存可以配置 3g。在
hadoop-env.sh 文件中配置如下。
HADOOP_NAMENODE_OPTS=-Xmx3072m
3)Hadoop3.x 系列,配置 NameNode 内存
(1)hadoop-env.sh 中描述 Hadoop 的内存是动态分配的
(2)查看 NameNode 占用内存
(3)查看 DataNode 占用内存
查看发现 hadoop102 上的 NameNode 和 DataNode 占用内存都是自动分配的,且相等。
不是很合理。
经验参考:
https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_hardware_requirements.html#concept_fzz_dq4_gbb
具体修改:hadoop-env.sh
重启集群后,查看内存
内存已经变了,根据这种方法,在实际生产中实际去修改内存
NameNode 心跳并发配置
1)hdfs-site.xml
企业经验:dfs.namenode.handler.count=20 × 𝑙𝑜𝑔 𝑒𝐶𝑙𝑣𝑡𝑢𝑒𝑠 𝑆𝑖𝑧𝑒 ,比如集群规模(DataNode 台
数)为 3 台时,此参数设置为 21。可通过简单的 python 代码计算该值,代码如下。
开启回收站配置
开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。
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,配置垃圾回收时间为 1 分钟。
<property>
<name>fs.trash.interval</name>
<value>1</value>
</property>
修改完毕,重启集群
4 )查看回收站
首先删除一个文件
5 )注意:通过网页上直接删除的文件也不会走回收站。
6 ) 通过程序删除的文件不会经过回收站,需要调用 moveToTrash() 才进入回收站
7 )只有在命令行利用 hadoop fs -rm 命令删除的文件才会走回收站。
8 )恢复回收站数据