cdh 之 HDFS集群优化篇003

2019/3/21 星期四

1、操作系统级别优化 选择Linux的文件系统为:XFS文件系统

2、预读缓冲
预读技术可以有效的减少磁盘寻道次数和应用的I/O等待时间,增加Linux文件系统预读缓冲区的大小(默认为256 sectors,128KB),可以明显提高顺序文件的读性能,建议调整到1024或2048 sectors。预读缓冲区的设置可以通过blockdev命令来完成。

[root@NewCDH-0--141 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 50G 45G 5.7G 89% /
devtmpfs devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs tmpfs 7.8G 49M 7.8G 1% /run
tmpfs tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/mapper/centos-home xfs 46G 342M 46G 1% /home
/dev/sda1 xfs 497M 121M 377M 25% /boot
tmpfs tmpfs 1.6G 0 1.6G 0% /run/user/0
cm_processes tmpfs 7.8G 58M 7.7G 1% /run/cloudera-scm-agent/process
tmpfs tmpfs 1.6G 0 1.6G 0% /run/user/997
[root@NewCDH-0--141 ~]# blockdev --getra /dev/mapper/centos-root
8192
[root@NewCDH-0--141 ~]# blockdev --getra /dev/mapper/centos-home
8192

修改的命令为:
blockdev --setra 2048 /dev/mapper/centos-home

3、放弃RAID和LVM磁盘管理方式,选用JBOD
JBOD
  JBOD是在一个底板上安装的带有多个磁盘驱动器的存储设备,JBOD没有使用前端逻辑来管理磁盘数据,每个磁盘可实现独立并行的寻址。将DataNode部署在配置JBOD设备的服务器上可提高DataNode性能。

4、内存调优 swap

5、调整内存分配策略

6、.网络参数调优

二.HDFS集群性能优化
归档
查看归档文件 //适合管理hdfs的大量小文件
[root@NewCDH-0--141 ~]# sudo -u hdfs hadoop fs -ls har:///newdata.har
Found 1 items
drwxr-xr-x - hdfs supergroup 0 2018-03-19 18:37 har:///newdata.har/mjh
[root@NewCDH-0--141 ~]# sudo -u hdfs hadoop fs -ls har:///newdata.har/mjh
Found 3 items
drwxr-xr-x - hdfs supergroup 0 2018-03-19 18:37 har:///newdata.har/mjh/shiyanshuju
-rw-r--r-- 3 hdfs supergroup 17 2018-03-19 18:37 har:///newdata.har/mjh/test.txt
-rw-r--r-- 3 hdfs supergroup 12 2018-03-19 18:37 har:///newdata.har/mjh/test2.txt

压缩

三.HDFS集群配置优化
1、dfs.namenode.handler.count NameNode 的服务器线程的数量。
NameNode中用于处理RPC调用的线程数,默认为32。对于较大的集群和配置较好的服务器,可适当增加这个数值来提升NameNode RPC服务的并发度。
服务线程个数,调大一些,一般原则是将其设置为集群大小的自然对数乘以20,即20logN,N为集群大小 N 集群服务器数量
(我的HDFS集群配置是:128T硬盘,32core,128G内存空间。) 此值设置为:20 log12=120
4个节点话 就是20 * log4 =40

2、dfs.datanode.handler.count:3 DataNode 服务器线程数。
DataNode中用于处理RPC调用的线程数,默认为3。可适当增加这个数值来提升DataNode RPC服务的并发度(推荐值:20)。 注意:线程数的提高将增加DataNode的内存需求,

3、dfs.replication 复制因子 默认为3 不变

4、dfs.block.size HDFS 块大小 默认128M
数据块设置太小会增加NameNode的压力。数据块设置过大会增加定位数据的时间。这个值跟你的磁盘转速有关,我之前在的博客里有解释为什么是128M,其实这个跟磁盘的转速有关。我们可以自定义这个块大小,考虑2个因素,第一,查看你的集群文件大致范围都是多大?如果文件基本上都是64M~128M左右的话,建议你不要修改。如果大部分文件都在200M~256M之间的话,你可以将配置块大小改为256,当然你也得考虑你的磁盘读写性能。

5、dfs.datanode.data.dir 不变
HDFS数据存储目录。将数据存储分布在各个磁盘上可充分利用节点的I/O读写性能。因此在实际生产环境中,这就是为什么我们将磁盘不选择RAID和LVM,而非要选择JBOD的原因。推荐设置多个磁盘目录,以增加磁盘IO的性能,多个目录用逗号进行分隔。

6、io.file.buffer.size 在yarn中修改
HDFS文件缓冲区大小,默认为4096(即4K)。 推荐值:131072(128K)。这个得编辑core-site.xml配置文件,如果你用的CDH的话,直接在YARN服务里修改即可。

7、fs.trash.interval 文件系统垃圾间隔
HDFS清理回收站的时间周期,单位为分钟。默认为0,表示不使用回收站特性。推荐开启它,时间你自己定义,推荐4~7天均可。

8、dfs.datanode.du.reserved 适用于非分布式文件系统 (DFS) 使用的保留空间(字节/卷)。
DataNode保留空间大小,单位为字节。默认情况下,DataNode会占用全部可用的磁盘空间,该配置项可以使DataNode保留部分磁盘空间工其他应用程序使用。这个得视具体应用而定,推荐稍微空出点空间,5G~10G均可。
默认为5G

9、机架感知 懂的

10、
dfs.datanode.max.xcievers 最大传输线程数 指定在 DataNode 内外传输数据使用的最大线程数。
 这个值是指定 datanode 可同時处理的最大文件数量,推荐将这个值调大,默认是256,最大值可以配置为65535。

11 避免脏读写操作 //开启
dfs.namenode.avoid.read.stale.datanode
dfs.namenode.avoid.write.stale.datanode

12、 增大Service Monitor 将使用配置属性列表,搜索:“dfs.datanode.socket”,默认都是3秒,我这里改成了30s。

13、
DataNode 平衡带宽
dfs.balance.bandwidthPerSec, dfs.datanode.balance.bandwidthPerSec 每个 DataNode 可用于平衡的最大带宽。单位为字节/秒
//更具每个公司的集群网络来判断,datanode之间的互相传输

14、
依据迭代设置复制工作乘数器
dfs.namenode.replication.work.multiplier.per.iteration
提高依据迭代设置复制工作乘数器的数值(默认值是2,然而推荐值是10)

15.
DataNode 上的最大复制线程数
dfs.namenode.replication.max-streams 推荐值 50
Datanode 上复制线程数的硬限制
dfs.namenode.replication.max-streams-hard-limit 推荐值100
推荐值为 50/100

16、
fs.trash.checkpoint.interval
以分钟为单位的垃圾回收检查间隔。应该小于或等于fs.trash.interval。如果是0,值等同于fs.trash.interval。每次检查器运行,会创建新的检查点。
建议值为1小时

17、
HDFS High Availability 防御方法 不变
dfs.ha.fencing.methods
解释:用于服务防御的防御方法列表。shell(./cloudera_manager_agent_fencer.py) 是一种设计为使用 Cloudera Manager Agent 的防御机制。sshfence 方法使用 SSH。如果使用自定义防御程序(可能与共享存储、电源装置或网络交换机通信),则使用 shell 调用它们。
[root@NewCDH-0--141 ~]# ls -l /run/cloudera-scm-agent/process/2428-hdfs-NAMENODE/cloudera_manager_agent_fencer.py
-rwxr----- 1 hdfs hdfs 2149 Mar 21 15:51 /run/cloudera-scm-agent/process/2428-hdfs-NAMENODE/cloudera_manager_agent_fencer.py
参考链接为:
https://blog.csdn.net/fromthewind/article/details/84106341

18、

参考链接:
HDFS集群优化篇 https://www.cnblogs.com/yinzhengjie/p/10006880.html
【配置CDH和管理服务】关闭DataNode前HDFS的调优:https://blog.csdn.net/a118170653/article/details/42774599

猜你喜欢

转载自blog.51cto.com/12445535/2368920