中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Hadoop如何調優

發布時間:2021-12-08 10:44:24 來源:億速云 閱讀:111 作者:小新 欄目:云計算

這篇文章將為大家詳細講解有關Hadoop如何調優,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一 HDFS相關的調優

     關于HDFS的參數調優,第一個就是數據塊的大小dfs.block.size,之前默認是64m,hadoop 2.x好像已經改為128m了,如果網絡環境比較好,建議根據實際業務需求,適當的調大一些。

其他的例如設置文件的備份數目,默認是3,一般不建議更改。一份保存在datanode節點上,一份保存在同一個機架的其他節點上,另一份保存在其他的機架上,默認情況下,數據是隨機分配在各個節點上的,但是可以通過設置機架感知,使得數據在節點間的網絡傳輸減少。

配置如下:在namenode的節點配置hdfs-site.xml

<property>
  <name>topology.script.file.name</name>
  <value>/path/to/RackAware.py</value>
</property

輸入某臺datanode的ip,返回該ip對應的機架。是在腳本中實現的。

#! /usr/bin/python
import sys

rack={"192.168.1,15":"rack1",
       "192.168.1.16":"rack1",
       "192.168.1.17":"rack2",
       "192.168.1.18":"rack2"}

if __name__=="__main__":
   print "/"+rack.get(sys.argv[1],"rack0"}

設置mapred.local和dfs.data.dir,這兩個參數配置的值應當分布在各個磁盤的目錄上。

二 mapreduce的調優

首先從map階段說起,就是設置map的個數問題,默認只有一個map線程,設置map參數的個數是mapred.map.tasks reduce則是mapred.reduce.tasks。因為這兩個參數的設置是影響到整個集群的,就是說會考慮到單臺機器上的map,reduce個數。map.tasktracker.map.tasks.maxinum和map.tasktracker.reduce.tasks.maxinum這兩個參數設置了一臺機器上最多能同時運行的map和reduce數目。還有,就是map和reduce之間是怎么樣的配比比較好呢?通過觀察web界面,查看map和reduce的進度,可以發現當reduce執行到33%時候,map正好執行100%,所以我們可以在控制reduce啟動的時間,不讓reduce在等待。

當map,reduce個數確定了,根據業務需要,最好設置Combiner 。然后是設置map輸出結果到緩存的大小,因為每一個map或者reduce都是一個task,都會啟動一個jvm,,io.sort.mb就是分配map端buffer的大小,等于mb*io.sort.spill.percent。

對于map的結果,我們可以設置壓縮,減少網絡傳輸。那么建議打開mapred.compress.map.output壓縮選項,并配置 mapred.map.output.compression.codec壓縮編碼格式,一般都會使用snappy,因為這種格式對于壓縮和解壓縮都相對較快

還有如果你的集群是異構的,有的機器好,有的機器性能差,建議打開推測性執行,打開mapred.reduce.tasks.speculative.execution,有利于優化進程分配,提高集群性能。

在reduce階段,從map端拷貝數據時,可以設置最大并行拷貝線程數,這些線程會同時從不同的datanode上去map結果 設置mapred.reduce.parallel.copies

下面是一些調優的參數列表:

name說明
mapred.task.profile是否對任務進行profiling,調用java內置的profile功能,打出相關性能信息
mapred.task.profile.{maps|reduces}對幾個map或reduce進行profiling。非常影響速度,建議在小數據量上嘗試
mapred.job.reuse.jvm.num.tasks1表示不reuse,-1表示無限reuse,其他數值表示每個jvm reuse次數。reuse的時候,map結束時不會釋放內存!
mapred.{map|reduce}.tasks.speculative.execution會對運行慢的任務起一個備份任務,看哪個先完成,kill掉后完成的備份
io.sort.spill.percent開始spill的內存比例閾值,對map和reduce都生效
mapred.job.shuffle.input.buffer.percentreduce在copy時使用的堆空間的比例
mapred.tasktracker.{map|reduce}.tasks.maximum一個Tasktracker上可同時運行的最大map、reduce任務數
mapred.reduce.copy.backoffreduce獲取一份map輸出數據的最大時間,單位秒。
io.compression.codecs壓縮算法
dfs.block.sizehdfs上的文件block大小
mapred.reduce.slowstart.completed.maps控制reduce的啟動時機。表示全部map的百分之多少完成后,才啟動reduce。如果機器內存緊張,可以適當設大改參數,等大部分map結束并釋放內存后才啟動reduce;如果希望盡快開始shuffle,則可配合大量map數,將該值設小,以盡早啟動reduce,開始copy。
io.sort.mbmap使用的緩存,影響spill的次數。
mapred.child.java.opts同時設置map和reduce的jvm參數
mapred.map.child.java.opts分開設置map的jvm參數,包括GC策略
mapred.reduce.child.java.opts分開設置reduce的jvm參數
map.sort.class對map的輸出key的排序方法
mapred.output.compression.type壓縮類型
mapred.min.split.size每個map的最小輸入大小,該值越大,map數越少
mapred.max.split.size每個map的最大輸入大小,該值約小,map數越多
mapred.reduce.parallel.copiesreduce從map結果copy數據時,每個reduce起的并行copy線程數。該值越大,io壓力越大,但可能引起網絡堵塞,copy效率反而降低。
io.sort.factormerge時的并行merge數,同時影響map的spill文件merge和reduce中的merge
mapred.compress.map.output指定map的輸出是否壓縮。有助于減小數據量,減小io壓力,但壓縮和解壓有cpu成本,需要慎重選擇壓縮算法。
mapred.map.output.compression.codecmap輸出的壓縮算法
mapred.output.compressreduce輸出是否壓縮
mapred.output.compression.codec控制mapred的輸出的壓縮的方式
io.sort.record.percentmap中間數據的index和data在io.sort.mb中占內存的比例,默認0.05%,需要根據具體數據的特點調整:index的大小固定為16byte,需要根據data的大小調整這個比例,以使io.sort.mb的內存得到充分利用)。

關于“Hadoop如何調優”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節
推薦閱讀:
  1. php調優
  2. MapReduce 調優

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

AI

进贤县| 青州市| 平泉县| 德惠市| 桐柏县| 万州区| 岐山县| 行唐县| 临洮县| 南宁市| 济源市| 应城市| 涿州市| 色达县| 芜湖县| 瑞丽市| 濮阳县| 奈曼旗| 彭山县| 阿拉尔市| 永城市| 嘉义市| 将乐县| 永寿县| 黄浦区| 浦城县| 城口县| 南华县| 榆中县| 株洲市| 张家川| 龙井市| 保定市| 昌吉市| 井陉县| 湘西| 祥云县| 威信县| 东方市| 神农架林区| 灵山县|