识别和定位
fs.defaule.name(core-site.xml)
定义客户端所使用的默认文件系统的URL。默认值为file:/// 这意味着客户访问的是本地Linux文件系统。
但是生产集群HDFS时,希望这个参数来替代 hdfs://hostname:port 这里hostname和port分别代表NameNode守护程序所在的机器和监听的端口。
同时还有这两个作用:通知NameNode需要绑定的IP地址、端口号。
指定DataNode心跳需要发送的目标机器端口。
用到该参数的结点 namenode datanode secondnamenode jt tt 客户端。
dfs.name.dir
定义了一个用逗号分隔的不同的本地文件路径,NameNode要在这些路径上保存一个HDFS文件元数据的备份。
元数据很重要,建议定义两个内部硬盘和一个低延迟的高可靠性的NFS挂载。
元数据的完整备份在不同的文件路径都会保存,因此硬盘不需要选择RAID。也有的管理员使用了RAID并放弃定义多个路径。
使用者 NameNode
dfs.data.dir
定义了DataNode在哪儿存放HDFS数据块,用逗号作为分隔符,但是不会在每个指定的路径都做镜像数据,在分配数据块空间时,DataNode会议轮询的方式,在所有的磁盘驱动器间均衡处理。
物理磁盘的丢失影响并不大,因为所有数据都会在集群的其他机器上备份。
使用者 DataNode
fs.checkpoint.dir
次NameNode在checkpoint操作时,使用这些路径文件来保存元数据,如果提供多个路径会有多个镜像。
优化与调整
io.file.buffer.size(core-site.xml)
设置缓存的大小。
较大的缓存可以提供更高效的数据传输,意味着更大的内存消耗和延迟。
参数设置为系统页面大小的倍数,以byte为单位。默认值4KB。
可以设置为64KB(65536byte)
参考值:65536 使用者:客户端、守护进程
dfs.balance.bandwidthPerSec
HDFS平衡器检测集群中使用过度或者使用不足的DataNode,并在这些DataNode之间移动数据块保证负载均衡。
参数定义了每个DataNode平衡操作所允许的最大使用带宽,单位byte
参数在守护进程启动时就读入,不能在平衡器运行时修改。
使用者:DataNode
dfs.block.size
定义了所有新建文件的默认数据块大小。参数的设置不会影响系统中已经存在的文件。
单位byte 默认值:67 108 864 即64MB。//现在不确定是多少
对很多用例而言,134 217 728(128MB)更合适。
数据块大小会显著影响MapReduce作业的效率
使用者:客户端
dfs.DataNode.du.reserved
定义了每个dfs.data.dir定义的磁盘空间需要保留的大小
单位byte,默认0,参考值:10 737 418 240(10GB)
使用者:DataNode
dfs.NameNode.handler.count
NameNode有一个工作线程池用来处理客户端的远程过程调用以及集群守护进程的调用。
处理程序(工作线程)数量越多意味着要更大的池子来处理来自不同DataNode的并发心跳以及客户端并发的元数据操作。
对大集群或者有大量客户端的集群,增大该参数。
默认值10;
设置值的原则是将其设为集群大小的自然对数乘以20,即20*logN, N为集群大小。
使用者:NameNode
dfs.DataNode.failed.volumes.tolerated
当DataNode的任何一个本地磁盘出现故障,默认整个DataNode失效。
该承诺书定义了整个DataNode声明失效前允许多少个磁盘出现故障。
使用者:DataNode
dfs.hosts
含有DataNode主机名表,确认允许连接并加入集群的DataNode,其他的DataNode不允许加入。
格式:换行符分隔主机名或者IP地址
使用者:NameNode
dfs.host.exclude
类似于dfs.hosts,把指定节点排除在外。
使用者:NameNode
fs.trash.interval
回收站功能。当功能被启用,文件被移动到用户HDFS主目录的名为.Trash目录下,来保留被删除文件而不是立即删除。
参考值:1440(24小时),使用者:NameNode、客户端