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
//这个部分在cdh官方网站中有新的解释
在hdfs中
dfs.namenode.service.handler.count和dfs.namenode.handler.count - 对于每个NameNode,设置为ln(此HDFS服务中的DataNode数)
20。
//我们datanode 4个节点 ,那么
NameNode 服务处理程序计数
原文为:dfs.namenode.service.handler.count and dfs.namenode.handler.count - For each NameNode, set to ln(number of DataNodes in this HDFS service) * 20.
参考链接:https://www.cloudera.com/documentation/enterprise/5-13-x/topics/cm_mc_autoconfig.html
中的 hdfs通用规则 General Rules

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秒,我这里把“dfs.socket.timeout” “dfs.datanode.socket.write.timeout”改成了30000s。

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小时
//指定Filesystem Trash Interval属性,该属性控制删除垃圾检查点目录的分钟数以及垃圾检查点之间的分钟数。 例如,要启用垃圾桶以便在24小时后删除已删除的文件,请将Filesystem Trash Interval属性的值设置为1440。
     注意:垃圾箱间隔是从文件移动到垃圾箱的位置开始计算的,而不是从上次修改文件的位置开始计算的。

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、
dfs.datanode.hdfs-blocks-metadata.enabled - 对于每个HDFS服务,如果群集中有Impala服务,则设置为true。这条规则是无规则的;即使HDFS服务不在范围内,它也可以触发。

19、 dfs.client.read.shortcircuit - 对于每个HDFS服务,如果群集中有Impala服务,则设置为true。这条规则是无规则的;即使HDFS服务不在范围内,它也可以触发。
//也就是hdfs的文件在本机的话,就不走网络 直接在本地读取 提高了hbase 或者impala的效率 并有助于改善HBase随机读取配置文件和Impala性能。

20、dfs.datanode.data.dir.perm - 对于每个DataNode,如果群集中有Impala服务且群集未进行Kerberized,则设置为755。这条规则是无规则的;即使HDFS服务不在范围内,它也可以触发。
   
21 fs.trash.interval - 对于每个HDFS服务,设置为1 天 (文件系统垃圾间隔 1天)。

22 设置服务的最大文件符
最低要求角色:配置程序(也由群集管理员,完全管理员提供)
您可以为所有守护程序角色设置最大文件描述符参数。 未指定时,角色将使用从主管继承的任何值。 指定后,将软限制和硬限制配置为配置的值。

     去服务。
     单击“配置”选项卡。
     在“搜索”框中,键入rlimit_fds。
     为一个或多个角色设置“最大进程文件描述符”属性。
     单击“保存更改”以提交更改。
     重启受影响的角色实例。
//这个很重要 ,不光是针对hdfs 是针对cloudera 上的所有服务,都可以,或者说都需要去设置这个最大文件描述符 我们设置为 65535

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

转载于:https://blog.51cto.com/12445535/2368920

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CDH(Cloudera Distribution of Hadoop)是一种开源的分布式计算框架,它包含了Hadoop、Yarn、HDFS等组件,同时还提供了Hive、Impala等工具,可以方便地进行大数据处理和分析。 在CDH集群中,Yarn、HDFS、Hive、Impala是四个核心组件,运维这些组件需要掌握以下几个方面: 1. Yarn运维 Yarn是CDH中的资源管理器,它负责管理集群中的资源,并将这些资源分配给运行在集群上的各个应用程序。Yarn的运维涉及到以下几个方面: (1)配置管理:包括Yarn的配置文件、资源管理器的配置、容器管理器的配置等。 (2)集群监控:需要监控Yarn的运行状态、资源使用情况、队列状态等。 (3)任务调度:需要管理Yarn中的作业和任务,包括调度作业、监控任务执行、处理任务失败等。 2. HDFS运维 HDFSCDH中的分布式文件系统,它负责存储集群中的数据,并提供高可用、高性能的数据访问服务。HDFS的运维涉及到以下几个方面: (1)配置管理:包括HDFS的配置文件、NameNode的配置、DataNode的配置等。 (2)集群监控:需要监控HDFS的运行状态、数据存储情况、数据访问情况等。 (3)数据管理:需要管理HDFS中的数据,包括上传、下载、删除、修改等操作。 3. Hive运维 Hive是CDH中的数据仓库工具,它可以将结构化数据映射到Hadoop中的HDFS和MapReduce上进行查询和分析。Hive的运维涉及到以下几个方面: (1)配置管理:包括Hive的配置文件、元数据存储配置、查询引擎配置等。 (2)查询优化:需要对Hive中的查询语句进行优化,以提高查询性能。 (3)数据管理:需要管理Hive中的数据,包括创建表、导入数据、备份数据等。 4. Impala运维 Impala是CDH中的实时查询工具,它可以在Hadoop中实现快速查询和分析。Impala的运维涉及到以下几个方面: (1)配置管理:包括Impala的配置文件、元数据存储配置、查询引擎配置等。 (2)查询优化:需要对Impala中的查询语句进行优化,以提高查询性能。 (3)数据管理:需要管理Impala中的数据,包括创建表、导入数据、备份数据等。 总之,CDH集群的运维需要从多个方面进行管理和监控,只有全面掌握各个组件的运维方法,才能保证集群的稳定性和高可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值