生活随笔 
收集整理的這篇文章主要介紹了
                                
Hadoop Yarn配置参数整理(非常全面) 
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
 
                                
                            RM與NM相關(guān)參數(shù)  
ResourceManager  
參數(shù)名稱作用默認值 yarn.resourcemanager.address ResourceManager 對客戶端暴露的地址。客戶端通過該地址向RM提交應(yīng)用程序,殺死應(yīng)用程序等。 ${yarn.resourcemanager.hostname}:8032 yarn.resourcemanager.scheduler.address ResourceManager 對ApplicationMaster暴露的訪問地址。ApplicationMaster通過該地址向RM申請資源、釋放資源等。 ${yarn.resourcemanager.hostname}:8030 yarn.resourcemanager.resource-tracker.address ResourceManager 對NodeManager暴露的地址.。NodeManager通過該地址向RM匯報心跳,領(lǐng)取任務(wù)等。 ${yarn.resourcemanager.hostname}:8031 yarn.resourcemanager.admin.address ResourceManager 對管理員暴露的訪問地址。管理員通過該地址向RM發(fā)送管理命令等。 ${yarn.resourcemanager.hostname}:8033 yarn.resourcemanager.webapp.address ResourceManager對外web ui地址。用戶可通過該地址在瀏覽器中查看集群各類信息。 ${yarn.resourcemanager.hostname}:8088 yarn.resourcemanager.scheduler.class 啟用的資源調(diào)度器主類。目前可用的有FIFO、Capacity Scheduler和Fair Scheduler。 org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler yarn.resourcemanager.resource-tracker.client.thread-count 處理來自NodeManager的RPC請求的Handler數(shù)目。 50 yarn.resourcemanager.scheduler.client.thread-count 處理來自ApplicationMaster的RPC請求的Handler數(shù)目。 50 yarn.scheduler.minimum-allocation-mb/ yarn.scheduler.maximum-allocation-mb 單個可申請的最小/最大內(nèi)存資源量。比如設(shè)置為1024和3072,則運行MapRedce作業(yè)時,每個Task最少可申請1024MB內(nèi)存,最多可申請3072MB內(nèi)存。 1024/8192 yarn.scheduler.minimum-allocation-vcores / yarn.scheduler.maximum-allocation-vcores 單個可申請的最小/最大虛擬CPU個數(shù)。比如設(shè)置為1和4,則運行MapRedce作業(yè)時,每個Task最少可申請1個虛擬CPU,最多可申請4個虛擬CPU。什么是虛擬CPU,可閱讀我的這篇文章:“YARN 資源調(diào)度器剖析”。 1/32 yarn.resourcemanager.nodes.include-path /yarn.resourcemanager.nodes.exclude-path NodeManager黑白名單。如果發(fā)現(xiàn)若干個NodeManager存在問題,比如故障率很高,任務(wù)運行失敗率高,則可以將之加入黑名單中。注意,這兩個配置參數(shù)可以動態(tài)生效。(調(diào)用一個refresh命令即可) “” yarn.resourcemanager.nodemanagers.heartbeat-interval-ms NodeManager心跳間隔 1000(毫秒) 
NodeManager  
參數(shù)名稱作用默認值 yarn.nodemanager.resource.memory-mb NodeManager總的可用物理內(nèi)存。注意,該參數(shù)是不可修改的,一旦設(shè)置,整個運行過程中不可動態(tài)修改。另外,該參數(shù)的默認值是8192MB,即使你的機器內(nèi)存不夠8192MB,YARN也會按照這些內(nèi)存來使用(傻不傻?),因此,這個值通過一定要配置。不過,Apache已經(jīng)正在嘗試將該參數(shù)做成可動態(tài)修改的。 8192 yarn.nodemanager.vmem-pmem-ratio 每使用1MB物理內(nèi)存,最多可用的虛擬內(nèi)存數(shù)。 2.1 yarn.nodemanager.resource.cpu-vcores NodeManager總的可用虛擬CPU個數(shù)。 8 yarn.nodemanager.local-dirs 中間結(jié)果存放位置,類似于1.0中的mapred.local.dir。注意,這個參數(shù)通常會配置多個目錄,已分攤磁盤IO負載。 ${hadoop.tmp.dir}/nm-local-dir yarn.nodemanager.log-dirs 日志存放地址(可配置多個目錄)。 ${yarn.log.dir}/userlogs yarn.nodemanager.log.retain-seconds NodeManager上日志最多存放時間(不啟用日志聚集功能時有效)。 10800(3小時) yarn.nodemanager.aux-services NodeManager上運行的附屬服務(wù)。需配置成mapreduce_shuffle,才可運行MapReduce程序 默認值:"" 
權(quán)限與日志聚集  
日志聚集  
參數(shù)名稱作用默認值 yarn.log-aggregation-enable 是否啟用日志聚集功能。 false yarn.log-aggregation.retain-seconds 在HDFS上聚集的日志最多保存多長時間。 -1 yarn.log-aggregation.retain-check-interval-seconds 多長時間檢查一次日志,并將滿足條件的刪除,如果是0或者負數(shù),則為上一個值的1/10。 -1 yarn.nodemanager.remote-app-log-dir 當應(yīng)用程序運行結(jié)束后,日志被轉(zhuǎn)移到的HDFS目錄(啟用日志聚集功能時有效)。 /tmp/logs yarn.log-aggregation.retain-seconds 遠程日志目錄子目錄名稱(啟用日志聚集功能時有效)。 日志將被轉(zhuǎn)移到目錄[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-GcYyaGuP-1626846701571)(https://math.jianshu.com/math?formula=%7Byarn.nodemanager.remote-app-log-dir%7D%2F)]{user}/${thisParam}下 
MapReduce  
本節(jié)所有配置都寫在mapred-site.xml中
 
MapReduce JobHistory  
參數(shù)名稱作用默認值 mapreduce.jobhistory.address MapReduce JobHistory Server地址。 0.0.0.0:10020 mapreduce.jobhistory.webapp.address MapReduce JobHistory Server Web UI地址。 0.0.0.0:19888 mapreduce.jobhistory.intermediate-done-dir MapReduce作業(yè)產(chǎn)生的日志存放位置。 /mr-history/tmp mapreduce.jobhistory.done-dir MR JobHistory Server管理的日志的存放位置。 /mr-history/done 
MapReduce作業(yè)配置  
下面的參數(shù)可以配置在客戶端的mapred-site.xml中,作為MapReduce作業(yè)的缺省配置。也可以在提交作業(yè)時單獨指定這些參數(shù)
 
參數(shù)名稱說明缺省值 mapreduce.job.name 作業(yè)名稱 mapreduce.job.priority 作業(yè)優(yōu)先級 NORMAL yarn.app.mapreduce.am.resource.mb ApplicationMaster占用的內(nèi)存量 1536 yarn.app.mapreduce.am.resource.cpu-vcores ApplicationMaster占用的虛擬CPU個數(shù) 1 mapreduce.am.max-attempts ApplicationMaster最大失敗嘗試次數(shù) 2 mapreduce.map.memory.mb 每個Map Task需要的內(nèi)存量 1024 mapreduce.map.cpu.vcores 每個Map Task需要的虛擬CPU個數(shù) 1 mapreduce.map.maxattempts Map Task最大失敗嘗試次數(shù) 4 mapreduce.reduce.memory.mb 每個Reduce Task需要的內(nèi)存量 1024 mapreduce.reduce.cpu.vcores 每個Reduce Task需要的虛擬CPU個數(shù) 1 mapreduce.reduce.maxattempts Reduce Task最大失敗嘗試次數(shù) 4 mapreduce.map.speculative 是否對Map Task啟用推測執(zhí)行機制 FALSE mapreduce.reduce.speculative 是否對Reduce Task啟用推測執(zhí)行機制 FALSE mapreduce.job.queuename 作業(yè)提交到的隊列 default mapreduce.task.io.sort.mb 任務(wù)內(nèi)部排序緩沖區(qū)大小 100 mapreduce.map.sort.spill.percent Map階段溢寫文件的閾值(排序緩沖區(qū)大小的百分比) 0.8 mapreduce.reduce.shuffle.parallelcopies Reduce Task啟動的并發(fā)拷貝數(shù)據(jù)的線程數(shù)目 5 
Fair Scheduler相關(guān)參數(shù)  
本節(jié)的參數(shù)需要在yarn-site.xml中,將配置參數(shù)yarn.resourcemanager.scheduler.class設(shè)置為org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler 才會生效。Fair Scheduler的配置選項包括兩部分,其中一部分在yarn-site.xml中,主要用于配置調(diào)度器級別的參數(shù),另外一部分在一個自定義配置文件(默認是fair-scheduler.xml)中,主要用于配置各個隊列的資源量、權(quán)重等信息。
 
yarn-site.xml  
參數(shù)名稱說明缺省值 yarn.scheduler.fair.allocation.file 自定義XML配置文件所在位置,該文件主要用于描述各個隊列的屬性,比如資源量、權(quán)重等,具體配置格式將在后面介紹。 yarn.scheduler.fair.user-as-default-queue 當應(yīng)用程序未指定隊列名時,是否指定用戶名作為應(yīng)用程序所在的隊列名。如果設(shè)置為false或者未設(shè)置,所有未知隊列的應(yīng)用程序?qū)⒈惶峤坏絛efault隊列中 true yarn.scheduler.fair.preemption 是否啟用搶占機制 false yarn.scheduler.fair.sizebasedweight 在一個隊列內(nèi)部分配資源時,默認情況下,采用公平輪詢的方法將資源分配各各個應(yīng)用程序,而該參數(shù)則提供了另外一種資源分配方式:按照應(yīng)用程序資源需求數(shù)目分配資源,即需求資源數(shù)量越多,分配的資源越多。 false yarn.scheduler.assignmultiple 是否啟動批量分配功能。當一個節(jié)點出現(xiàn)大量資源時,可以一次分配完成,也可以多次分配完成。 false yarn.scheduler.fair.max.assign 如果開啟批量分配功能,可指定一次分配的container數(shù)目。 -1,表示不限制。 yarn.scheduler.fair.locality.threshold.node 當應(yīng)用程序請求某個節(jié)點上資源時,它可以接受的可跳過的最大資源調(diào)度機會。當按照分配策略,可將一個節(jié)點上的資源分配給某個應(yīng)用程序時,如果該節(jié)點不是應(yīng)用程序期望的節(jié)點,可選擇跳過該分配機會暫時將資源分配給其他應(yīng)用程序,直到出現(xiàn)滿足該應(yīng)用程序需的節(jié)點資源出現(xiàn)。通常而言,一次心跳代表一次調(diào)度機會,而該參數(shù)則表示跳過調(diào)度機會占節(jié)點總數(shù)的比例 -1.0,表示不跳過任何調(diào)度機會 yarn.scheduler.fair.locality.threshold.rack 當應(yīng)用程序請求某個機架上資源時,它可以接受的可跳過的最大資源調(diào)度機會。 yarn.scheduler.increment-allocation-mb 內(nèi)存規(guī)整化單位 默認是1024,這意味著,如果一個Container請求資源是1.5GB,則將被調(diào)度器規(guī)整化為ceiling(1.5 GB / 1GB) * 1G=2GB。 yarn.scheduler.increment-allocation-vcores 虛擬CPU規(guī)整化單位 默認是1,含義與內(nèi)存規(guī)整化單位類似。 
自定義配置文件  
Fair Scheduler允許用戶將隊列信息專門放到一個配置文件(默認是fair-scheduler.xml),對于每個隊列,管理員可配置以下幾個選項:
 
參數(shù)名稱說明缺省值 minResources 最少資源保證量,設(shè)置格式為“X mb, Y vcores”,當一個隊列的最少資源保證量未滿足時,它將優(yōu)先于其他同級隊列獲得資源,對于不同的調(diào)度策略(后面會詳細介紹),最少資源保證量的含義不同,對于fair策略,則只考慮內(nèi)存資源,即如果一個隊列使用的內(nèi)存資源超過了它的最少資源量,則認為它已得到了滿足;對于drf策略,則考慮主資源使用的資源量,即如果一個隊列的主資源量超過它的最少資源量,則認為它已得到了滿足。 maxResources 最多可以使用的資源量,fair scheduler會保證每個隊列使用的資源量不會超過該隊列的最多可使用資源量。 maxRunningApps 最多同時運行的應(yīng)用程序數(shù)目。通過限制該數(shù)目,可防止超量Map Task同時運行時產(chǎn)生的中間輸出結(jié)果撐爆磁盤。 minSharePreemptionTimeout 最小共享量搶占時間。如果一個資源池在該時間內(nèi)使用的資源量一直低于最小資源量,則開始搶占資源。 schedulingMode/schedulingPolicy 隊列采用的調(diào)度模式,可以是fifo、fair或者drf。 aclSubmitApps 可向隊列中提交應(yīng)用程序的Linux用戶或用戶組列表,默認情況下為“*”,表示任何用戶均可以向該隊列提交應(yīng)用程序。需要注意的是,該屬性具有繼承性,即子隊列的列表會繼承父隊列的列表。配置該屬性時,用戶之間或用戶組之間用“,”分割,用戶和用戶組之間用空格分割,比如“user1, user2 group1,group2”。 aclAdministerApps 該隊列的管理員列表。一個隊列的管理員可管理該隊列中的資源和應(yīng)用程序,比如可殺死任意應(yīng)用程序。 
Capacity Scheduler相關(guān)參數(shù)  
在Capacity Scheduler的配置文件中,隊列queueX的參數(shù)Y的配置名稱為yarn.scheduler.capacity.queueX.Y,為了簡單起見,我們記為Y,則每個隊列可以配置的參數(shù)如下:
 
資源分配相關(guān)參數(shù)  
參數(shù)名稱說明缺省值 capacity 隊列的資源容量(百分比)。 當系統(tǒng)非常繁忙時,應(yīng)保證每個隊列的容量得到滿足,而如果每個隊列應(yīng)用程序較少,可將剩余資源共享給其他隊列。注意,所有隊列的容量之和應(yīng)小于100。 maximum-capacity 隊列的資源使用上限(百分比)。由于存在資源共享,因此一個隊列使用的資源量可能超過其容量,而最多使用資源量可通過該參數(shù)限制。 minimum-user-limit-percent 每個用戶最低資源保障(百分比)。任何時刻,一個隊列中每個用戶可使用的資源量均有一定的限制。當一個隊列中同時運行多個用戶的應(yīng)用程序時中,每個用戶的使用資源量在一個最小值和最大值之間浮動,其中,最小值取決于正在運行的應(yīng)用程序數(shù)目,而最大值則由minimum-user-limit-percent決定。比如,假設(shè)minimum-user-limit-percent為25。當兩個用戶向該隊列提交應(yīng)用程序時,每個用戶可使用資源量不能超過50%,如果三個用戶提交應(yīng)用程序,則每個用戶可使用資源量不能超多33%,如果四個或者更多用戶提交應(yīng)用程序,則每個用戶可用資源量不能超過25%。 user-limit-factor 每個用戶最多可使用的資源量(百分比)。比如,假設(shè)該值為30,則任何時刻,每個用戶使用的資源量不能超過該隊列容量的30%。 
現(xiàn)在應(yīng)用程序數(shù)目相關(guān)參數(shù)  
參數(shù)名稱說明缺省值 maximum-applications 集群或者隊列中同時處于等待和運行狀態(tài)的應(yīng)用程序數(shù)目上限,這是一個強限制,一旦集群中應(yīng)用程序數(shù)目超過該上限,后續(xù)提交的應(yīng)用程序?qū)⒈痪芙^,所有隊列的數(shù)目上限可通過參數(shù)yarn.scheduler.capacity.maximum-applications設(shè)置(可看做默認值),而單個隊列可通過參數(shù)yarn.scheduler.capacity..maximum-applications設(shè)置適合自己的值。 10000 maximum-am-resource-percent 集群中用于運行應(yīng)用程序ApplicationMaster的資源比例上限,該參數(shù)通常用于限制處于活動狀態(tài)的應(yīng)用程序數(shù)目。該參數(shù)類型為浮點型。所有隊列的ApplicationMaster資源比例上限可通過參數(shù)yarn.scheduler.capacity. maximum-am-resource-percent設(shè)置(可看做默認值),而單個隊列可通過參數(shù)yarn.scheduler.capacity.. maximum-am-resource-percent設(shè)置適合自己的值。 0.1,表示10% 
隊列訪問和權(quán)限控制參數(shù)  
參數(shù)名稱說明缺省值 state 隊列狀態(tài)可以為STOPPED或者RUNNING,如果一個隊列處于STOPPED狀態(tài),用戶不可以將應(yīng)用程序提交到該隊列或者它的子隊列中,類似的,如果ROOT隊列處于STOPPED狀態(tài),用戶不可以向集群中提交應(yīng)用程序,但正在運行的應(yīng)用程序仍可以正常運行結(jié)束,以便隊列可以優(yōu)雅地退出。 acl_submit_applications 限定哪些Linux用戶/用戶組可向給定隊列中提交應(yīng)用程序。需要注意的是,該屬性具有繼承性,即如果一個用戶可以向某個隊列中提交應(yīng)用程序,則它可以向它的所有子隊列中提交應(yīng)用程序。配置該屬性時,用戶之間或用戶組之間用“,”分割,用戶和用戶組之間用空格分割,比如“user1, user2 group1,group2”。 acl_administer_queue 為隊列指定一個管理員,該管理員可控制該隊列的所有應(yīng)用程序,比如殺死任意一個應(yīng)用程序等。同樣,該屬性具有繼承性,如果一個用戶可以向某個隊列中提交應(yīng)用程序,則它可以向它的所有子隊列中提交應(yīng)用程序。 
                            總結(jié) 
                            
                                以上是生活随笔 為你收集整理的Hadoop Yarn配置参数整理(非常全面) 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                            
                                如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔 推薦給好友。