HDFS基本配置属性
块大小
HDFS中存储的文件块的块大小,默认128M
参数:dfs.blocksize
默认:134217728
此参数用于客户端程序,也就是说,HDFS里面存储的文件块的块大小完全由客户端决定
副本数量
HDFS中存储的文件快可以有多个副本,默认3个
参数:dfs.replication
默认:3
此参数用于客户端程序,也就是说,HDFS里面存储的文件块的副本数完全由客户端决定
为什么要默认3个?
第一个副本:存在离客户端系统最近的一台DataNode上;
第二个副本:存在跟上一台DataNode相同的机架的另一台DataNode上;
第三个副本:存在另一个机架上的某台DataNode上
NameNode元数据存储目录
元数据存储目录就是NameNode的工作目录,其位置由以下参数决定:
参数:dfs.namenode.name.dir
默认:file://${hadoop.tmp.dir}/dfs/name
此参数是给服务端程序NameNode使用
此参数默认值在生产中并不合适,应该给NameNode专门配置一个安全的位置作为工作目录
正确做法:应该给NameNode配置多个目录,而且这多个目录应该挂载不同的磁盘
1 | <property> |
配置多个目录后,NameNode会往个目录中写入==相同的数据==作为冗余备份
DataNode文件块存储目录
DataNode的工作目录也是参数可配的:
参数:dfs.datanode.data.dir
默认:file://${hadoop.tmp.dir}/dfs/data
默认配置在生产系统中并不合适,应该让DataNode的工作目录指定到服务器上用于存储数据的多块数据磁盘上
1 | <property> |
配置多个目录后,NameNode会往个目录中写入==不同的数据==,以扩大DataNode自身的容量
HDFS动态扩容
扩容就是增加DataNode,DataNode可以在线扩容。
步骤
- 准备一台服务器,配置好环境:网络、IP、防火墙、免密登录、JDK;
- 从原集群的任意一台机器上复制Hadoop安装包到新机器上;
- 在原集群的slaves文件中添加新机器的主机名;
- 在新机器上启动DataNode即可。
DataNode启动方法
- 直接用
start-dfs.sh
- 在新机器上手动启动一个DataNode进程:
hadoop-daemon.sh start datanode