Hadoop如何調(diào)優(yōu)

這篇文章將為大家詳細(xì)講解有關(guān)Hadoop如何調(diào)優(yōu),小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、東光ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的東光網(wǎng)站制作公司

一 HDFS相關(guān)的調(diào)優(yōu)

     關(guān)于HDFS的參數(shù)調(diào)優(yōu),第一個(gè)就是數(shù)據(jù)塊的大小dfs.block.size,之前默認(rèn)是64m,hadoop 2.x好像已經(jīng)改為128m了,如果網(wǎng)絡(luò)環(huán)境比較好,建議根據(jù)實(shí)際業(yè)務(wù)需求,適當(dāng)?shù)恼{(diào)大一些。

其他的例如設(shè)置文件的備份數(shù)目,默認(rèn)是3,一般不建議更改。一份保存在datanode節(jié)點(diǎn)上,一份保存在同一個(gè)機(jī)架的其他節(jié)點(diǎn)上,另一份保存在其他的機(jī)架上,默認(rèn)情況下,數(shù)據(jù)是隨機(jī)分配在各個(gè)節(jié)點(diǎn)上的,但是可以通過設(shè)置機(jī)架感知,使得數(shù)據(jù)在節(jié)點(diǎn)間的網(wǎng)絡(luò)傳輸減少。

配置如下:在namenode的節(jié)點(diǎn)配置hdfs-site.xml

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

輸入某臺datanode的ip,返回該ip對應(yīng)的機(jī)架。是在腳本中實(shí)現(xiàn)的。

#! /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"}

設(shè)置mapred.local和dfs.data.dir,這兩個(gè)參數(shù)配置的值應(yīng)當(dāng)分布在各個(gè)磁盤的目錄上。

二 mapreduce的調(diào)優(yōu)

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

當(dāng)map,reduce個(gè)數(shù)確定了,根據(jù)業(yè)務(wù)需要,最好設(shè)置Combiner 。然后是設(shè)置map輸出結(jié)果到緩存的大小,因?yàn)槊恳粋€(gè)map或者reduce都是一個(gè)task,都會啟動(dòng)一個(gè)jvm,,io.sort.mb就是分配map端buffer的大小,等于mb*io.sort.spill.percent。

對于map的結(jié)果,我們可以設(shè)置壓縮,減少網(wǎng)絡(luò)傳輸。那么建議打開mapred.compress.map.output壓縮選項(xiàng),并配置 mapred.map.output.compression.codec壓縮編碼格式,一般都會使用snappy,因?yàn)檫@種格式對于壓縮和解壓縮都相對較快

還有如果你的集群是異構(gòu)的,有的機(jī)器好,有的機(jī)器性能差,建議打開推測性執(zhí)行,打開mapred.reduce.tasks.speculative.execution,有利于優(yōu)化進(jìn)程分配,提高集群性能。

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

下面是一些調(diào)優(yōu)的參數(shù)列表:

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

關(guān)于“Hadoop如何調(diào)優(yōu)”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。

網(wǎng)頁名稱:Hadoop如何調(diào)優(yōu)
文章位置:http://muchs.cn/article22/jiogcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)品牌網(wǎng)站設(shè)計(jì)、微信公眾號、網(wǎng)站排名、網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站