溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

hadoop系統(tǒng)參數(shù)如何優(yōu)化

發(fā)布時間:2021-12-09 15:43:28 來源:億速云 閱讀:175 作者:小新 欄目:云計算

這篇文章給大家分享的是有關(guān)hadoop系統(tǒng)參數(shù)如何優(yōu)化的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

 hadoop系統(tǒng)參數(shù)優(yōu)化
  為了提高其數(shù)據(jù)性能,很多人開始優(yōu)化Hadoop??偨Y(jié)看來,對于Hadoop,當前主要有幾個優(yōu)化思路:
(1)  從應用程序角度進行優(yōu)化。由于mapreduce是迭代逐行解析數(shù)據(jù)文件的,怎樣在迭代的情況下,編寫高效率的應用程序,是一種優(yōu)化思路。
(2)  對Hadoop參數(shù)進行調(diào)優(yōu)。當前hadoop系統(tǒng)有190多個配置參數(shù),怎樣調(diào)整這些參數(shù),使hadoop作業(yè)運行盡可能的快,也是一種優(yōu)化思路。
(3) 從系統(tǒng)實現(xiàn)角度進行優(yōu)化。這種優(yōu)化難度是最大的,它是從hadoop實現(xiàn)機制角度,發(fā)現(xiàn)當前Hadoop設(shè)計和實現(xiàn)上的缺點,然后進行源碼級地修改。該方法雖難度大,但往往效果明顯

3.2.1 Linux文件系統(tǒng)參數(shù)調(diào)整
(1) noatime 和 nodiratime屬性
文件掛載時設(shè)置這兩個屬性可以明顯提高性能。。默認情況下,Linux ext2/ext3 文件系統(tǒng)在文件被訪問、創(chuàng)建、修改時會記錄下文件的時間戳,比如:文件創(chuàng)建時間、最近一次修改時間和最近一次訪問時間。如果系統(tǒng)運行時要訪問大量文件,關(guān) 閉這些操作,可提升文件系統(tǒng)的性能。Linux 提供了 noatime 這個參數(shù)來禁止記錄最近一次訪問時間戳。

(2) readahead buffer
調(diào)整linux文件系統(tǒng)中預讀緩沖區(qū)地大小,可以明顯提高順序讀文件的性能。默認buffer大小為256 sectors,可以增大為1024或者2408 sectors(注意,并不是越大越好)??墒褂胋lockdev命令進行調(diào)整。

     Command:
察看:     blockdev --report
變更:     blockdev --setra 1024 /dev/sda

(3) 避免RAID和LVM操作
避免在TaskTracker和DataNode的機器上執(zhí)行RAID和LVM操作,這通常會降低性能。

3.2.2 Hadoop通用參數(shù)調(diào)整
(1) dfs.namenode.handler.count或mapred.job.tracker.handler.count(hdfs-default)
namenode或者jobtracker中用于處理RPC的線程數(shù),默認是10,較大集群,可調(diào)大些,比如64。
(2) dfs.datanode.handler.count(hdfs-default)
datanode上用于處理RPC的線程數(shù)。默認為3,較大集群,可適當調(diào)大些,比如8。需要注意的是,每添加一個線程,需要的內(nèi)存增加。
(3) mapreduce.tasktracker.http.threads (mapred-default)
HTTP server上的線程數(shù)。運行在每個TaskTracker上,用于處理map task輸出。大集群,可以將其設(shè)為40~50。

3.2.3 HDFS相關(guān)配置
(1) dfs.replication(hdfs-default)
文件副本數(shù),通常設(shè)為3,不推薦修改。
(2) dfs.block.size(hdfs-default)
HDFS中數(shù)據(jù)block大小,默認為64M,對于較大集群,可設(shè)為128MB或者256MB。(也可以通過參數(shù)mapred.min.split.size配置)
(3) mapred.local.dir(mapred-default)和dfs.data.dir(hdfs-default)
這兩個參數(shù)mapred.local.dir和dfs.data.dir 配置的值應當是分布在各個磁盤上目錄,這樣可以充分利用節(jié)點的IO讀寫能力。運行 Linux sysstat包下的iostat -dx 5命令可以讓每個磁盤都顯示它的利用率。

3.2.4 map/reduce 相關(guān)配置
(1) {map/reduce}.tasks.maximum(mapred-default)
同時運行在TaskTracker上的最大map/reduce task數(shù),一般設(shè)為(core_per_node)/2~2*(cores_per_node)。
(2) io.sort.factor(mapred-default)
當一個map task執(zhí)行完之后,本地磁盤上(mapred.local.dir)有若干個spill文件,map task最后做的一件事就是執(zhí)行merge sort,把這些spill文件合成一個文件(partition)。執(zhí)行merge sort的時候,每次同時打開多少個spill文件由該參數(shù)決定。打開的文件越多,不一定merge sort就越快,所以要根據(jù)數(shù)據(jù)情況適當?shù)恼{(diào)整。
(3) mapred.child.java.opts(mapred-default)
設(shè)置JVM堆的最大可用內(nèi)存,需從應用程序角度進行配置。

3.2.5 map task相關(guān)配置
(1) io.sort.mb(mapred-default)
Map task的輸出結(jié)果和元數(shù)據(jù)在內(nèi)存中所占的buffer總大小。默認為100M,對于大集群,可設(shè)為200M。當buffer達到一定閾值,會啟動一個后臺線程來對buffer的內(nèi)容進行排序,然后寫入本地磁盤(一個spill文件)。
(2) io.sort.spill.percent(mapred-default)
這個值就是上述buffer的閾值,默認是0.8,即80%,當buffer中的數(shù)據(jù)達到這個閾值,后臺線程會起來對buffer中已有的數(shù)據(jù)進行排序,然后寫入磁盤。
(3) io.sort.record.percent (mapred-default)
Io.sort.mb中分配給元數(shù)據(jù)的內(nèi)存百分比,默認是0.05。這個需要根據(jù)應用程序進行調(diào)整。
(4) mapred.compress.map.output/ Mapred.output.compress(mapred-default)
中間結(jié)果和最終結(jié)果是否要進行壓縮,如果是,指定壓縮方式(Mapred.compress.map.output.codec/ Mapred.output.compress.codec)。推薦使用LZO壓縮。Intel內(nèi)部測試表明,相比未壓縮,使用LZO壓縮的 TeraSort作業(yè)運行時間減少60%,且明顯快于Zlib壓縮。

3.2.6 reduce task相關(guān)配置
(1) Mapred.reduce.parallel
Reduce shuffle階段copier線程數(shù)。默認是5,對于較大集群,可調(diào)整為16~25。

 這種基于參數(shù)的調(diào)優(yōu)比較“靜態(tài)”,因為一套參數(shù)配置只對于一類作業(yè)是最優(yōu)的。通過對這些參數(shù)的研究,可以尋找參數(shù)配置與不同作業(yè)特征之間的關(guān)聯(lián)。

感謝各位的閱讀!關(guān)于“hadoop系統(tǒng)參數(shù)如何優(yōu)化”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI