HDFS 参数调优
HDFS 参数调优
NameNode 数据目录
- 本地文件系统路径,决定 NN 在何处存放 fsimage 和 editlog 文件
- 通过
,
分隔指定多个路径 - 生产环境可配置多个目录,并存放在 RAID1 或 RAID5 的磁盘上
dfs.name.dir
dfs.namenode.name.dir
DataNode 数据目录
- DN 存放块数据的本地盘路径
- 通过
,
分隔指定多个路径 - 在生产环境 一般 DN 上挂多块盘
dfs.data.dir
dfs.datanode.data.dir
数据块的副本数
数据块的副本数,默认值 : 3
dfs.replication
数据块大小
HDFS 数据块的大小,默认 : 128M
- 根据 block 数量 , 调大数据块大小
dfs.block.size
HDFS 做均衡时使用的最大带宽
HDFS 做均衡时使用的最大带宽,默认为 1048576 ( 1MB/s )
- 对千兆或 万兆带宽的集群 , 可以在 balancer 时 , 设置 50M/s~100M/s
dfs.datanode.balance.bandwidthPeRegionServerec
磁盘可损坏数
DN 多少块盘损坏后停止服务,默认 : 0 ( 任何磁盘故障就关闭 DN )
- 对盘较多的集群,磁盘故障是常态,可以设置为 1 或 2,避免频繁 DN 下线
dfs.datanode.failed.volumes.tolerated
数据传输连接数
DataNode 同时处理的数据传输连接数 ( DN内外传输数据使用的最大线程数 )
- 官方改名 :
dfs.datanode.max.transfer.threads
,默认值 : 4096 - 集群大 , 推荐值 : 8192
dfs.datanode.max.xcieveRegionServer
NameNode 处理 RPC 调用的线程数
NameNode 中用于处理 RPC 调用的线程数,默认 : 10
- 集群大,建议值:800+ 节点配置 : 200~500 之间
计算 :
python -c 'import math ; print int(math.log(N) * 20)'
dfs.namenode.handler.count
NameNode 处理 DataNode 上报数据块和心跳的线程数
处理 datanode 上报数据块和心跳的线程数量,与 dfs.namenode.handler.count
一致
dfs.namenode.service.handler.count
DataNode 处理 RPC 调用的线程数
datanode 中用于处理 RPC 调用的线程数,默认 : 3
- 线程数的提高 , 会增加 datanode 的内存需求,推荐值 : 10
dfs.datanode.handler.count
DataNode 最大传输线程数
最大传输线程数 ( DataNode 内外传输数据使用的最大线程数 ) , 默认 : 256
- DataNode 同时处理的最大文件数量,最大值 : 65535,推荐值 : 8192
dfs.datanode.max.xcieveRegionServer
读写数据时的缓存大小
读写数据时的缓存大小,应为 硬件分页大小的 2 倍
- 集群大 , 推荐值 : 65536 ( 64K)
io.file.buffer.size
冗余数据块删除
现象 : 当某个节点由于网络故障或 DataNode 进程死亡,被 NameNode 判定为死亡,HDFS 就自动开始数据块的容错拷贝;当该节点重新添加到集群中时,但该节点上的数据没有被损坏,而导致 HDFS 上某些 block 的备份数超过设定的备份数 , 这些多余的数据块经过多久才会被删除
DataNode 会定期将当前该结点上所有的 BLOCK 信息报告给 NameNode , 默认值 : 3600000 ( 1 小时 )
当把该值调小(60 秒),多余的数据块会很快被删除
hdfs-site.xml
:
<property>
<name>dfs.blockreport.intervalMsec</name>
<value>3600000</value>
<description>Determines block reporting interval in milliseconds.</description>
</property>
新增块延迟汇报
当 DataNode 新写完一个块,默认会立即汇报给 NameNode , 当 NameNode 频繁处理 DataNode 这种快汇报请求,会频繁持有锁,影响其他 Rpc 的处理和响应时间
通过增加延迟汇报来减少 DataNode 写完块后的块汇报次数,提高 NameNode 处理 Rpc 的响应时间和处理速度
<property>
<name>dfs.blockreport.incremental.intervalMsec</name>
<value>300</value>
</property>
大集群 , 推荐值 : 500 毫秒,当 DataNode 新写一个块,等待 500 毫秒,在此时间段内新写块一次性汇报给 NameNode
增大同时打开的文件描述符和网络连接上限
允许同时打开的文件描述符数目
ulimit
Linux参数 net.core.somaxconn
: socket 监听(listen)的 backlog 上限
backlog : socket 的监听队列,当一个请求(request)未被处理或建立时,会进入 backlog
当集群的服务端 socket 的监听队列长度 ipc.server.listen.queue.size
设成 : 32768,同时需要将 Linux 的 net.core.somaxconn
设成 >= 32768
相关文章
- 格式化hdfs的命令_hadoop的启动命令
- 0894-如何在Kerberos环境下用Ranger给HDFS授权
- HDFS——DN启动慢的分析
- HDFS——读写文件的数据传输格式
- 创建RDD(集合,本地文件,HDFS文件)
- HDFS的namenode和datanode详解程序员
- 深刻理解HDFS工作机制详解大数据
- Hadoop综合练习第三节–HDFS读写文件操作详解大数据
- HDFS源码分析(四)—–节点Decommission机制详解大数据
- HDFS源码分析(一)—–INode文件节点详解大数据
- HDFS入门详解大数据
- 使用Flume消费Kafka数据到HDFS详解大数据
- 使用Linux命令查看HDFS文件系统详细信息(linux查看hdfs)
- 比较分析HDFS与Oracle数据库的异同(hdfs oracle)
- hadoop的hdfs文件操作实现上传文件到hdfs