1、操作系統(tǒng)級別優(yōu)化 選擇Linux的文件系統(tǒng)為:XFS文件系統(tǒng)
米林ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!2、預(yù)讀緩沖
預(yù)讀技術(shù)可以有效的減少磁盤尋道次數(shù)和應(yīng)用的I/O等待時間,增加Linux文件系統(tǒng)預(yù)讀緩沖區(qū)的大小(默認(rèn)為256 sectors,128KB),可以明顯提高順序文件的讀性能,建議調(diào)整到1024或2048 sectors。預(yù)讀緩沖區(qū)的設(shè)置可以通過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是在一個底板上安裝的帶有多個磁盤驅(qū)動器的存儲設(shè)備,JBOD沒有使用前端邏輯來管理磁盤數(shù)據(jù),每個磁盤可實現(xiàn)獨立并行的尋址。將DataNode部署在配置JBOD設(shè)備的服務(wù)器上可提高DataNode性能。
4、內(nèi)存調(diào)優(yōu) swap
5、調(diào)整內(nèi)存分配策略
6、.網(wǎng)絡(luò)參數(shù)調(diào)優(yōu)
二.HDFS集群性能優(yōu)化
歸檔
查看歸檔文件 //適合管理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集群配置優(yōu)化
1、dfs.namenode.handler.count NameNode 的服務(wù)器線程的數(shù)量。
NameNode中用于處理RPC調(diào)用的線程數(shù),默認(rèn)為32。對于較大的集群和配置較好的服務(wù)器,可適當(dāng)增加這個數(shù)值來提升NameNode RPC服務(wù)的并發(fā)度。
服務(wù)線程個數(shù),調(diào)大一些,一般原則是將其設(shè)置為集群大小的自然對數(shù)乘以20,即20logN,N為集群大小 N 集群服務(wù)器數(shù)量
(我的HDFS集群配置是:128T硬盤,32core,128G內(nèi)存空間。) 此值設(shè)置為:20 log12=120
4個節(jié)點話 就是20 log4 =40
//這個部分在cdh官方網(wǎng)站中有新的解釋
在hdfs中
dfs.namenode.service.handler.count和dfs.namenode.handler.count - 對于每個NameNode,設(shè)置為ln(此HDFS服務(wù)中的DataNode數(shù)) 20。
//我們datanode 4個節(jié)點 ,那么
NameNode 服務(wù)處理程序計數(shù)
原文為: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通用規(guī)則 General Rules
參考鏈接:論dfs.namenode.handler.count配置參數(shù)的總要性
https://blog.csdn.net/turk/article/details/79723963
公式為:
python -c 'import math ; print int(math.log(N) 20)'
#N 集群服務(wù)器數(shù)量
//4個節(jié)點為 27 計算過程為
[root@cdh-master-130-201 conf]# python -c 'import math ; print int(math.log(4) 20)'
27
我們線上 44個HDFS節(jié)點
[root@cdh-master-130-201 conf]# python -c 'import math ; print int(math.log(44) 20)'
75
2、dfs.datanode.handler.count:3 DataNode 服務(wù)器線程數(shù)。
DataNode中用于處理RPC調(diào)用的線程數(shù),默認(rèn)為3??蛇m當(dāng)增加這個數(shù)值來提升DataNode RPC服務(wù)的并發(fā)度(推薦值:20)。 注意:線程數(shù)的提高將增加DataNode的內(nèi)存需求,
3、dfs.replication 復(fù)制因子 默認(rèn)為3 不變
4、dfs.block.size HDFS 塊大小 默認(rèn)128M
數(shù)據(jù)塊設(shè)置太小會增加NameNode的壓力。數(shù)據(jù)塊設(shè)置過大會增加定位數(shù)據(jù)的時間。這個值跟你的磁盤轉(zhuǎn)速有關(guān),我之前在的博客里有解釋為什么是128M,其實這個跟磁盤的轉(zhuǎn)速有關(guān)。我們可以自定義這個塊大小,考慮2個因素,第一,查看你的集群文件大致范圍都是多大?如果文件基本上都是64M~128M左右的話,建議你不要修改。如果大部分文件都在200M~256M之間的話,你可以將配置塊大小改為256,當(dāng)然你也得考慮你的磁盤讀寫性能。
5、dfs.datanode.data.dir 不變
HDFS數(shù)據(jù)存儲目錄。將數(shù)據(jù)存儲分布在各個磁盤上可充分利用節(jié)點的I/O讀寫性能。因此在實際生產(chǎn)環(huán)境中,這就是為什么我們將磁盤不選擇RAID和LVM,而非要選擇JBOD的原因。推薦設(shè)置多個磁盤目錄,以增加磁盤IO的性能,多個目錄用逗號進行分隔。
6、io.file.buffer.size 在yarn中修改
HDFS文件緩沖區(qū)大小,默認(rèn)為4096(即4K)。 推薦值:131072(128K)。這個得編輯core-site.xml配置文件,如果你用的CDH的話,直接在YARN服務(wù)里修改即可。
7、fs.trash.interval 文件系統(tǒng)垃圾間隔
HDFS清理回收站的時間周期,單位為分鐘。默認(rèn)為0,表示不使用回收站特性。推薦開啟它,時間你自己定義,推薦4~7天均可。
8、dfs.datanode.du.reserved 適用于非分布式文件系統(tǒng) (DFS) 使用的保留空間(字節(jié)/卷)。
DataNode保留空間大小,單位為字節(jié)。默認(rèn)情況下,DataNode會占用全部可用的磁盤空間,該配置項可以使DataNode保留部分磁盤空間工其他應(yīng)用程序使用。這個得視具體應(yīng)用而定,推薦稍微空出點空間,5G~10G均可。
默認(rèn)為5G
9、機架感知 懂的
10、
dfs.datanode.max.xcievers 大傳輸線程數(shù) 指定在 DataNode 內(nèi)外傳輸數(shù)據(jù)使用的大線程數(shù)。
這個值是指定 datanode 可同時處理的大文件數(shù)量,推薦將這個值調(diào)大,默認(rèn)是256,大值可以配置為65535。
11 避免臟讀寫操作 //開啟
dfs.namenode.avoid.read.stale.datanode
dfs.namenode.avoid.write.stale.datanode
12、 增大Service Monitor 將使用配置屬性列表,搜索:“dfs.datanode.socket”,默認(rèn)都是3秒,我這里把“dfs.socket.timeout” “dfs.datanode.socket.write.timeout”改成了30000s。
13、
DataNode 平衡帶寬
dfs.balance.bandwidthPerSec, dfs.datanode.balance.bandwidthPerSec 每個 DataNode 可用于平衡的大帶寬。單位為字節(jié)/秒
//更具每個公司的集群網(wǎng)絡(luò)來判斷,datanode之間的互相傳輸
14、
依據(jù)迭代設(shè)置復(fù)制工作乘數(shù)器
dfs.namenode.replication.work.multiplier.per.iteration
提高依據(jù)迭代設(shè)置復(fù)制工作乘數(shù)器的數(shù)值(默認(rèn)值是2,然而推薦值是10)
15.
DataNode 上的大復(fù)制線程數(shù)
dfs.namenode.replication.max-streams 推薦值 50
Datanode 上復(fù)制線程數(shù)的硬限制
dfs.namenode.replication.max-streams-hard-limit 推薦值100
推薦值為 50/100
16、
fs.trash.checkpoint.interval
以分鐘為單位的垃圾回收檢查間隔。應(yīng)該小于或等于fs.trash.interval。如果是0,值等同于fs.trash.interval。每次檢查器運行,會創(chuàng)建新的檢查點。
建議值為1小時
//指定Filesystem Trash Interval屬性,該屬性控制刪除垃圾檢查點目錄的分鐘數(shù)以及垃圾檢查點之間的分鐘數(shù)。 例如,要啟用垃圾桶以便在24小時后刪除已刪除的文件,請將Filesystem Trash Interval屬性的值設(shè)置為1440。
???? 注意:垃圾箱間隔是從文件移動到垃圾箱的位置開始計算的,而不是從上次修改文件的位置開始計算的。
17、
HDFS High Availability 防御方法 不變
dfs.ha.fencing.methods
解釋:用于服務(wù)防御的防御方法列表。shell(./cloudera_manager_agent_fencer.py) 是一種設(shè)計為使用 Cloudera Manager Agent 的防御機制。sshfence 方法使用 SSH。如果使用自定義防御程序(可能與共享存儲、電源裝置或網(wǎng)絡(luò)交換機通信),則使用 shell 調(diào)用它們。
[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服務(wù),如果群集中有Impala服務(wù),則設(shè)置為true。這條規(guī)則是無規(guī)則的;即使HDFS服務(wù)不在范圍內(nèi),它也可以觸發(fā)。
19、?dfs.client.read.shortcircuit - 對于每個HDFS服務(wù),如果群集中有Impala服務(wù),則設(shè)置為true。這條規(guī)則是無規(guī)則的;即使HDFS服務(wù)不在范圍內(nèi),它也可以觸發(fā)。
//也就是hdfs的文件在本機的話,就不走網(wǎng)絡(luò) 直接在本地讀取 提高了hbase 或者impala的效率 并有助于改善HBase隨機讀取配置文件和Impala性能。
20、dfs.datanode.data.dir.perm - 對于每個DataNode,如果群集中有Impala服務(wù)且群集未進行Kerberized,則設(shè)置為755。這條規(guī)則是無規(guī)則的;即使HDFS服務(wù)不在范圍內(nèi),它也可以觸發(fā)。
???
21 fs.trash.interval - 對于每個HDFS服務(wù),設(shè)置為1 天 (文件系統(tǒng)垃圾間隔 1天)。
22 設(shè)置服務(wù)的大文件符
最低要求角色:配置程序(也由群集管理員,完全管理員提供)
您可以為所有守護程序角色設(shè)置大文件描述符參數(shù)。 未指定時,角色將使用從主管繼承的任何值。 指定后,將軟限制和硬限制配置為配置的值。
去服務(wù)。
???? 單擊“配置”選項卡。
???? 在“搜索”框中,鍵入rlimit_fds。
???? 為一個或多個角色設(shè)置“大進程文件描述符”屬性。
???? 單擊“保存更改”以提交更改。
???? 重啟受影響的角色實例。
//這個很重要 ,不光是針對hdfs 是針對cloudera 上的所有服務(wù),都可以,或者說都需要去設(shè)置這個大文件描述符 我們設(shè)置為 65535
參考鏈接:
HDFS集群優(yōu)化篇 https://www.cnblogs.com/yinzhengjie/p/10006880.html
【配置CDH和管理服務(wù)】關(guān)閉DataNode前HDFS的調(diào)優(yōu):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
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。