大数据集群部署规划(五)规划HDFS容量

南墨2年前技术文章1211

        HDFS DataNode以Block的形式,保存用户的文件和目录,同时在NameNode中生成一个文件对象,对应DataNode中每个文件、目录和Block。
NameNode中文件对象需要占用一定的内存,消耗内存大小随文件对象的生成而线性递增。DataNode实际保存的文件和目录越多,NameNode文件对象总量增加,需要消耗更多的内存,使集群现有硬件可能会难以满足业务需求,且导致集群难以扩展。
        规划存储大量文件的HDFS系统容量,就是规划NameNode的容量规格和DataNode的容量规格,并根据容量设置参数。

容量规格

NameNode容量规格

●在NameNode中,每个文件对象对应DataNode中的一个文件、目录或Block。一个文件至少占用一个Block,默认每个Block大小为“134217728”即128MB,对应参数为“dfs.blocksize”。默认情况下一个文件小于128MB时,只占用一个Block;文件大于128MB时,占用Block数为:文件大小/128MB。目录不占用Block。根据“dfs.blocksize”,NameNode的文件对象数计算方法如下:主备NameNode支持最大文件对象的数量为300,000,000(最多对应150,000,000个小文件)。“dfs.namenode.max.objects”规定当前系统可生成的文件对象数,默认值为“0”表示不限制。

单个文件大小

文件对象数

小于128MB

1(对应文件)+1(对应Block)=2

大于128MB(例如128G)

1(对应文件)+1,024(对应128GB/128MB=1024 Block)=1,025

DataNode容量规格

        在HDFS中,Block以副本的形式存储在DataNode中,默认副本数为“3”,对应参数为“dfs.replication”。集群中所有DataNode角色实例保存的Block总数为:HDFS Block * 3。集群中每个DataNode实例平均保存的Blocks= HDFS Block * 3/DataNode节点数。

项目

规格

单个DataNode实例支持最大Block副本数

5,000,000

单个DataNode实例上单个磁盘支持最大Block副本数

500,000


HDFS Block数

最少DataNode角色实例数

10,000,000

10,000,000 *3/5,000,000 = 6

50,000,000

50,000,000 *3/5,000,000 = 30

100,000,000

100,000,000 *3/5,000,000 = 60

内存参数设置

NameNode JVM参数配置规则

●NameNode文件数量和NameNode使用的内存大小成比例关系,文件对象变化时请修改默认值中的“-Xms**G -Xmx**G ”。推荐使用G1gc算法,参考值如下表所示。


文件对象数量

参考值

10,000,000

“-Xms6G -Xmx6G -XX:NewSize=512M -XX:MaxNewSize=512M”

20,000,000

“-Xms12G -Xmx12G -XX:NewSize=1G -XX:MaxNewSize=1G”

50,000,000

“-Xms32G -Xmx32G -XX:NewSize=3G -XX:MaxNewSize=3G”

100,000,000

“-Xms64G -Xmx64G -XX:NewSize=6G -XX:MaxNewSize=6G”

200,000,000

“-Xms96G -Xmx96G -XX:NewSize=9G -XX:MaxNewSize=9G”

300,000,000

“-Xms164G -Xmx164G -XX:NewSize=12G -XX:MaxNewSize=12G”

DataNode JVM参数配置规则

●集群中每个DataNode实例平均保存的Blocks= HDFS Block * 3/DataNode节点数,单个DataNode实例平均Block数量变化时请修改默认值中的“-Xms**G -Xmx**G"。推荐使用G1gc算法,参考值如下表所示。Xmx内存值对应DataNode节点块数阈值,每GB对应500000块数,用户可根据需要调整内存值。

单个DataNode实例平均Block数量

参考值

2,000,000

“-Xms6G -Xmx6G -XX:NewSize=512M -XX:MaxNewSize=512M”

5,000,000

“-Xms12G -Xmx12G -XX:NewSize=1G -XX:MaxNewSize=1G”



 

 


相关文章

大数据基础之HDFS入门

大数据基础之HDFS入门

一、NameNode是整个文件系统的管理节点。它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。二、NameNode的工作特点Namenode始终在内存中保存meteda...

MySQL运维实战(2.1) 登录失败次数太多导致主机被block的问题处理

参数max_connect_errorsMySQL有参数max_connect_errors,当一个主机尝试登录MySQL,失败的次数超过了max_connect_errors,则这个主机将无法登录到...

PG的执行计划

一、Explain基本使用1.1 命令解释explain [ ( option [,...] ) ] statement explain [ analyze ] [ verbose ] statem...

HDFS元数据损坏恢复方法

HDFS元数据损坏恢复方法

HDFS JournalNode 编辑目录(dfs.journalnode.edits.dir)下数据损坏(单节点损坏或所有节点数据损坏),如何恢复 HDFS?单节点损坏a)  &...

MySQL 小数类型介绍

MySQL 小数类型介绍

前言对于保证精度的数字,MySQL 也有对应的小数类型,下图是 MySQL 中小数类型概览。 浮点:小数点非固定的数,可表示数据范围较广,整数,小数都可表示。定点:小数点固定,可表示整数,小数。int...

 MySQL运维实战(1.3)安装部署:源码编译安装

MySQL运维实战(1.3)安装部署:源码编译安装

源码编译安装通常不需要自己编译mysql源码,编译的mysql和二进制包的内容基本一致。当然有些时候可能会需要采用源码编译的方式安装,安装一些非标准版本的mysql安装一些社区的patch、bugfi...

发表评论    

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