您好,登錄后才能下訂單哦!
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
參考鏈接:論dfs.namenode.handler.count配置參數的總要性
https://blog.csdn.net/turk/article/details/79723963
公式為:
python -c 'import math ; print int(math.log(N) 20)'
#N 集群服務器數量
//4個節點為 27 計算過程為
[root@cdh-master-130-201 conf]# python -c 'import math ; print int(math.log(4) 20)'
27
我們線上 44個HDFS節點
[root@cdh-master-130-201 conf]# python -c 'import math ; print int(math.log(44) 20)'
75
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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。