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
2
3
4
<property>
<name>dfs.namenode.name.dir</name>
<value>/mnt/disk1,/mnt/disk2,/mnt/disk3,nfs://</value>
</property>

配置多个目录后,NameNode会往个目录中写入==相同的数据==作为冗余备份

DataNode文件块存储目录

DataNode的工作目录也是参数可配的:

参数:dfs.datanode.data.dir

默认:file://${hadoop.tmp.dir}/dfs/data

默认配置在生产系统中并不合适,应该让DataNode的工作目录指定到服务器上用于存储数据的多块数据磁盘上

1
2
3
4
<property>
<name>dfs.datanode.name.dir</name>
<value>/data/disk1,/data/disk2,/data/disk3</value>
</property>

配置多个目录后,NameNode会往个目录中写入==不同的数据==,以扩大DataNode自身的容量

HDFS动态扩容

扩容就是增加DataNode,DataNode可以在线扩容。

步骤

  1. 准备一台服务器,配置好环境:网络、IP、防火墙、免密登录、JDK;
  2. 从原集群的任意一台机器上复制Hadoop安装包到新机器上;
  3. 在原集群的slaves文件中添加新机器的主机名;
  4. 在新机器上启动DataNode即可。

DataNode启动方法

  1. 直接用start-dfs.sh
  2. 在新机器上手动启动一个DataNode进程:hadoop-daemon.sh start datanode