1. 程式人生 > >優化cdh集群性能-可在安裝集群前操作(MapReduce配置的最佳實踐)002

優化cdh集群性能-可在安裝集群前操作(MapReduce配置的最佳實踐)002

令行 之前 yarn linux內存 內存分配 使用 min 由於 程序

優化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

優化cdh集群性能-可在安裝集群前操作(MapReduce配置的最佳實踐)002