优化cdh集群性能-可在安装集群前操作002 //读完cdh官方文档后,可知的优化操作 可在《03搭建cdh 生产环境前的Linux 优化(涉及到Linux内存参数优化)》 https://blog.51cto.com/12445535/2365948 这步同时操作
讲解了: 提供了一些性能问题的解决方案,并介绍了配置最佳实践。
1、禁止tuned 服务 //是内存分配管理 //关于tuned服务是什么? RHEL/CentOS 在 6.3 版本以后引入了一套新的系统调优工具 tuned/tuned-adm,其中 tuned 是服务端程序,用来监控和收集系统各个组件的数据,并依据数据提供的信息动态调整系统设置,达到动态优化系统的目的;tuned-adm 是客户端程序,用来和 tuned 打交道,用命令行的方式管理和配置 tuned,tuned-adm 提供了一些预先配置的优化方案可供直接使用 //动态调优方案,用户可以在不同的时间段内采用不同的调优方案。由于以服务进程形式存在,就可以很方便的和crontab结合!Tuned 是监控并收集各个系统组件用量数据的守护进程,并可使用那些信息根据需要动态调整系统设置。它可以对 CPU 和网络使用的更改作出反应,并调整设置以提高活动设备的性能或者降低不活跃设备的电源消耗。
见图:
具体细节
[root@NewCDH-0--141 ~]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
[root@NewCDH-0--141 ~]# systemctl status tuned
● tuned.service - Dynamic System Tuning Daemon
Loaded: loaded (/usr/lib/systemd/system/tuned.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2019-01-23 10:47:06 CST; 2 months 0 days ago
Main PID: 897 (tuned)
CGroup: /system.slice/tuned.service
└─897 /usr/bin/python -Es /usr/sbin/tuned -l -P
Jan 23 10:47:02 NewCDH-0--141 systemd[1]: Starting Dynamic System Tuning Daemon...
Jan 23 10:47:06 NewCDH-0--141 systemd[1]: Started Dynamic System Tuning Daemon.
[root@NewCDH-0--141 ~]# tuned-adm list
Available profiles:
- balanced
- desktop
- latency-performance
- network-latency
- network-throughput
- powersave
- throughput-performance
- virtual-guest
- virtual-host
Current active profile: virtual-guest
[root@NewCDH-0--141 ~]# tuned-adm off //关闭调优服务
[root@NewCDH-0--141 ~]# tuned-adm list
Available profiles:
- balanced
- desktop
- latency-performance
- network-latency
- network-throughput
- powersave
- throughput-performance
- virtual-guest
- virtual-host
No current active profile.
[root@NewCDH-0--141 ~]# systemctl stop tuned
[root@NewCDH-0--141 ~]# systemctl disable tuned
2、关闭禁用透明重复页面(THP) //前面博客有讲到,这里就不累赘了 具体见:Linux 初始化脚本 (centos6 centos7 通用) https://blog.51cto.com/12445535/2362407 第14 3、swap分区优化:减少使用交换分区使用百分比 同上
4、 提高随机处理程序和IFile阅读器的性能 MapReduce shuffle处理程序和IFile阅读器在安装了Hadoop本机库的Linux系统上使用本机Linux调用(posix_fadvise(2)和sync_data_range)。 随机处理程序 您可以通过启用shuffle readahead来改善MapReduce shuffle处理程序的性能。这会导致TaskTracker或节点管理器在通过套接字将其发送到reducer之前预取地图输出。
要为YARN启用此功能,请将mapreduce.shuffle.manage.os.cache设置为true(默认值)。要进一步调整性能,请调整mapreduce.shuffle.readahead.bytes的值。默认值为4 MB。 要为MapReduce启用此功能,请将mapred.tasktracker.shuffle.fadvise设置为true(默认值)。要进一步调整性能,请调整mapred.tasktracker.shuffle.readahead.bytes的值。默认值为4 MB。
IFile读者 启用IFile预读可提高合并操作的性能。要为MRv1或YARN启用此功能,请将mapreduce.ifile.readahead设置为true(默认值)。要进一步调整性能,请调整mapreduce.ifile.readahead.bytes的值。默认值为4MB。
5、MapReduce配置的最佳实践 下面描述的配置设置可以减少MapReduce执行中的固有延迟。您可以在mapred-site.xml中设置这些值。 (1) 任务完成后立即发送心跳 将mapreduce.tasktracker.outofband.heartbeat设置为true,以便TaskTracker在任务完成时发送带外心跳以减少延迟。默认值为false:
<property> <name>mapreduce.tasktracker.outofband.heartbeat</name> <value>true</value> </property>
(2) 减少单节点系统上JobClient状态报告的间隔 jobclient.progress.monitor.poll.interval属性定义JobClient向控制台报告状态并检查作业完成的时间间隔(以毫秒为单位)。默认值为1000毫秒;您可能希望将此值设置为较低的值,以使测试在单节点群集上运行得更快。在大型生产群集上调整此值可能会导致不必要的客户端 - 服务器流量。
<property> <name>jobclient.progress.monitor.poll.interval</name> <value>10</value> </property>
(3) 调整JobTracker心跳间隔 将TaskTracker-to-JobTracker心跳的最小间隔调整为较小的值可以提高小群集上的MapReduce性能。
<property> <name>mapreduce.jobtracker.heartbeat.interval.min</name> <value>10</value> </property>
(4) 立即启动MapReduce JVM mapred.reduce.slowstart.completed.maps属性指定在安排任何Reduce任务之前必须完成的作业中Map任务的比例。对于需要快速周转的小型作业,将此值设置为0可以提高性能;较大的值(高达50%)可能适合较大的工作。
<property> <name>mapred.reduce.slowstart.completed.maps</name> <value>0</value> </property>
参考链接 Optimizing Performance in CDH https://www.cloudera.com/documentation/enterprise/5-13-x/topics/cdh_admin_performance.html linux服务之tuned http://www.cnblogs.com/createyuan/p/5701650.html 浅谈linux性能调优之十二:红帽优化策略Tuned https://blog.csdn.net/u013870094/article/details/51055483