日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop Yarn内存使用优化配置

發布時間:2025/3/16 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop Yarn内存使用优化配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一部分Hadoop Yarn內存使用優化配置

? ??Hadoop2.0, YARN負責管理MapReduce中的資源(內存, CPU)并且將其打包成Container.?這樣可以精簡MapReduce,?使之專注于其擅長的數據處理任務,?將無需考慮資源調度。

? ??YARN會管理集群中所有機器的可用計算資源.?基于這些資源YARN會調度應用(比如MapReduce)發來的資源請求,?然后YARN會通過分配Container來給每個應用提供處理能力, ContainerYARN中處理能力的基本單元,?是對內存, CPU等的封裝。

? ??Yarn架構做資源管理,在每個節點上面運行NodeManager負責節點資源的分配,在Yarn上面Container是資源的分配的最小單元。

? ? Yarn集群的內存分配配置在yarn-site.xml文件中配置:

  • <property>??
  • ? ? <name>yarn.nodemanager.resource.memory-mb</name>??
  • ? ? <value>8192</value>??
  • ? ? <discription>每個節點可用內存,單位MB</discription>??
  • </property>??
  • ??
  • <property>??
  • ? ? <name>yarn.scheduler.minimum-allocation-mb</name>??
  • ? ? <value>1024</value>??
  • ? ? <discription>單個任務可申請最少內存,默認1024MB</discription>??
  • </property>??
  • ??
  • <property>??
  • ? ? <name>yarn.scheduler.maximum-allocation-mb</name>??
  • ? ? <value>8192</value>??
  • ? ? <discription>單個任務可申請最大內存,默認8192MB</discription>??
  • </property>?
  • ? ??Mapreduce的任務的內存配置:

  • <property>?
  • <name>mapreduce.map.memory.mb</name>?
  • <value>1024</value>?
  • <description>每個Map任務的物理內存限制</description>?
  • </property>?
  • ?
  • <property>?
  • <name>mapreduce.reduce.memory.mb</name>?
  • <value>1024</value>?
  • <description>每個Reduce任務的物理內存限制</description>?
  • </property>?
  • ?
  • <property>?
  • <name>mapred.child.java.opts</name>?
  • <value>-Xmx1024m</value>?
  • </property>?
  • ? ??其中mapreduce.map.memory.mb配置每個map任務的內存,應該是大于或者等于Container的最小內存。??

    ? ??按照上面的配置:每個slave可以運行map的數據<=?yarn.nodemanager.resource.memory-mb/mapreduce.map.memory.mb

    reduce任務的數量<=yarn.nodemanager.resource.memory-mb/mapreduce.reduce.memory.mb

    ?

    ?

    第二部分Hadoop YARN配置參數剖析

    一、RMNM相關參數(yarn-site.xml

    1ResourceManager相關配置參數

    1yarn.resourcemanager.address

    參數解釋:ResourceManager?對客戶端暴露的地址。客戶端通過該地址向RM提交應用程序,殺死應用程序等。

    默認值:${yarn.resourcemanager.hostname}:8032

    2yarn.resourcemanager.scheduler.address

    參數解釋:ResourceManager?ApplicationMaster暴露的訪問地址。ApplicationMaster通過該地址向RM申請資源、釋放資源等。

    默認值:${yarn.resourcemanager.hostname}:8030

    3yarn.resourcemanager.resource-tracker.address

    參數解釋:ResourceManager?NodeManager暴露的地址.NodeManager通過該地址向RM匯報心跳,領取任務等。

    默認值:${yarn.resourcemanager.hostname}:8031

    4yarn.resourcemanager.admin.address

    參數解釋:ResourceManager?對管理員暴露的訪問地址。管理員通過該地址向RM發送管理命令等。

    默認值:${yarn.resourcemanager.hostname}:8033

    5yarn.resourcemanager.webapp.address

    參數解釋:ResourceManager對外web ui地址。用戶可通過該地址在瀏覽器中查看集群各類信息。

    默認值:${yarn.resourcemanager.hostname}:8088

    6yarn.resourcemanager.scheduler.class

    參數解釋:啟用的資源調度器主類。目前可用的有FIFOCapacity SchedulerFair Scheduler

    默認值:org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

    7yarn.resourcemanager.resource-tracker.client.thread-count

    參數解釋:處理來自NodeManagerRPC請求的Handler數目。

    默認值:50

    8yarn.resourcemanager.scheduler.client.thread-count

    參數解釋:處理來自ApplicationMasterRPC請求的Handler數目。

    默認值:50

    9yarn.scheduler.minimum-allocation-mb/yarn.scheduler.maximum-allocation-mb

    參數解釋:單個可申請的最小/最大內存資源量。比如設置為10243072,則運行MapRedce作業時,每個Task最少可申請1024MB內存,最多可申請3072MB內存。

    默認值:1024/8192

    10yarn.scheduler.minimum-allocation-vcores/yarn.scheduler.maximum-allocation-vcores

    參數解釋:單個可申請的最小/最大虛擬CPU個數。比如設置為14,則運行MapRedce作業時,每個Task最少可申請1個虛擬CPU,最多可申請4個虛擬CPU。什么是虛擬CPU,可閱讀我的這篇文章:“YARN?資源調度器剖析

    默認值:1/32

    11yarn.resourcemanager.nodes.include-path?/yarn.resourcemanager.nodes.exclude-path

    參數解釋:NodeManager黑白名單。如果發現若干個NodeManager存在問題,比如故障率很高,任務運行失敗率高,則可以將之加入黑名單中。注意,這兩個配置參數可以動態生效。(調用一個refresh命令即可)

    默認值:“”

    12yarn.resourcemanager.nodemanagers.heartbeat-interval-ms

    參數解釋:NodeManager心跳間隔

    默認值:1000(毫秒)

    2NodeManager相關配置參數

    1yarn.nodemanager.resource.memory-mb

    參數解釋:NodeManager總的可用物理內存。注意,該參數是不可修改的,一旦設置,整個運行過程中不可動態修改。另外,該參數的默認值是8192MB,即使你的機器內存不夠8192MBYARN也會按照這些內存來使用(傻不傻?),因此,這個值通過一定要配置。不過,Apache已經正在嘗試將該參數做成可動態修改的。

    默認值:8192

    2yarn.nodemanager.vmem-pmem-ratio

    參數解釋:每使用1MB物理內存,最多可用的虛擬內存數。

    默認值:2.1

    3yarn.nodemanager.resource.cpu-vcores

    參數解釋:NodeManager總的可用虛擬CPU個數。

    默認值:8

    4yarn.nodemanager.local-dirs

    參數解釋:中間結果存放位置,類似于1.0中的mapred.local.dir。注意,這個參數通常會配置多個目錄,已分攤磁盤IO負載。

    默認值:${hadoop.tmp.dir}/nm-local-dir

    5yarn.nodemanager.log-dirs

    參數解釋:日志存放地址(可配置多個目錄)。

    默認值:${yarn.log.dir}/userlogs

    6yarn.nodemanager.log.retain-seconds

    參數解釋:NodeManager上日志最多存放時間(不啟用日志聚集功能時有效)。

    默認值:108003小時)

    7yarn.nodemanager.aux-services

    參數解釋:NodeManager上運行的附屬服務。需配置成mapreduce_shuffle,才可運行MapReduce程序

    默認值:“”

    二、權限與日志聚集相關參數(yarn-site.xml

    1、權限相關配置參數

    ? ??這里的權限由三部分組成,分別是:(1)管理員和普通用戶如何區分(2)服務級別的權限,比如哪些用戶可以向集群提交ResourceManager提交應用程序,(3)隊列級別的權限,比如哪些用戶可以向隊列A提交作業等。

    ? ??管理員列表由參數yarn.admin.acl指定。

    ? ??服務級別的權限是通過配置hadoop-policy.xml實現的,這個與Hadoop 1.0類似。

    ? ??隊列級別的權限是由對應的資源調度器內部配置的,比如Fair Scheduler或者Capacity Scheduler等,具體見后面。

    2、日志聚集相關配置參數

    ? ??日志聚集是YARN提供的日志中央化管理功能,它能將運行完成的Container/任務日志上傳到HDFS上,從而減輕NodeManager負載,且提供一個中央化存儲和分析機制。默認情況下,Container/任務日志存在在各個NodeManager上,如果啟用日志聚集功能需要額外的配置。

    1yarn.log-aggregation-enable

    參數解釋:是否啟用日志聚集功能。

    默認值:false

    2yarn.log-aggregation.retain-seconds

    參數解釋:在HDFS上聚集的日志最多保存多長時間。

    默認值:-1

    3yarn.log-aggregation.retain-check-interval-seconds

    參數解釋:多長時間檢查一次日志,并將滿足條件的刪除,如果是0或者負數,則為上一個值的1/10

    默認值:-1

    4yarn.nodemanager.remote-app-log-dir

    參數解釋:當應用程序運行結束后,日志被轉移到的HDFS目錄(啟用日志聚集功能時有效)。

    默認值:/tmp/logs

    5yarn.log-aggregation.retain-seconds

    參數解釋:遠程日志目錄子目錄名稱(啟用日志聚集功能時有效)。

    默認值:日志將被轉移到目錄yarn.nodemanager.remote?app?log?dir/{user}/${thisParam}

    三、MapReduce相關參數(mapred-site.xml

    ? ? MapReduce相關配置參數分為兩部分,分別是JobHistory Server和應用程序參數,Job History可運行在一個獨立節點上,而應用程序參數則可存放在mapred-site.xml中作為默認參數,也可以在提交應用程序時單獨指定,注意,如果用戶指定了參數,將覆蓋掉默認參數。

    ? ??以下這些參數全部在mapred-site.xml中設置。

    1MapReduce JobHistory相關配置參數

    ? ??JobHistory所在節點的mapred-site.xml中配置。

    1mapreduce.jobhistory.address

    參數解釋:MapReduce JobHistory Server地址。

    默認值:?0.0.0.0:10020

    2mapreduce.jobhistory.webapp.address

    參數解釋:MapReduce JobHistory Server Web UI地址。

    默認值:?0.0.0.0:19888

    3mapreduce.jobhistory.intermediate-done-dir

    參數解釋:MapReduce作業產生的日志存放位置。

    默認值:?/mr-history/tmp

    4mapreduce.jobhistory.done-dir

    參數解釋:MR JobHistory Server管理的日志的存放位置。

    默認值:?/mr-history/done

    2MapReduce作業配置參數

    ? ??可在客戶端的mapred-site.xml中配置,作為MapReduce作業的缺省配置參數。也可以在作業提交時,個性化指定這些參數。





















































































    參數名稱

    缺省值

    說明

    mapreduce.job.name


    作業名稱

    mapreduce.job.priority

    NORMAL

    作業優先級

    yarn.app.mapreduce.am.resource.mb

    1536

    MR ApplicationMaster占用的內存量

    yarn.app.mapreduce.am.resource.cpu-vcores

    1

    MR ApplicationMaster占用的虛擬CPU個數

    mapreduce.am.max-attempts

    2

    MR ApplicationMaster最大失敗嘗試次數

    mapreduce.map.memory.mb

    1024

    每個Map Task需要的內存量

    mapreduce.map.cpu.vcores

    1

    每個Map Task需要的虛擬CPU個數

    mapreduce.map.maxattempts

    4

    Map Task最大失敗嘗試次數

    mapreduce.reduce.memory.mb

    1024

    每個Reduce Task需要的內存量

    mapreduce.reduce.cpu.vcores

    1

    每個Reduce Task需要的虛擬CPU個數

    mapreduce.reduce.maxattempts

    4

    Reduce Task最大失敗嘗試次數

    mapreduce.map.speculative

    false

    是否對Map Task啟用推測執行機制

    mapreduce.reduce.speculative

    false

    是否對Reduce Task啟用推測執行機制

    mapreduce.job.queuename

    default

    作業提交到的隊列

    mapreduce.task.io.sort.mb

    100

    任務內部排序緩沖區大小

    mapreduce.map.sort.spill.percent

    0.8

    Map階段溢寫文件的閾值(排序緩沖區大小的百分比)

    mapreduce.reduce.shuffle.parallelcopies

    5

    Reduce Task啟動的并發拷貝數據的線程數目

    ? ??注意,MRv2重新命名了MRv1中的所有配置參數,但兼容MRv1中的舊參數,只不過會打印一條警告日志提示用戶參數過期。MapReduce新舊參數對照表可參考Javaorg.apache.hadoop.mapreduce.util.ConfigUtil,舉例如下:

    過期參數名

    新參數名

    mapred.job.name

    mapreduce.job.name

    mapred.job.priority

    mapreduce.job.priority

    mapred.job.queue.name

    mapreduce.job.queuename

    mapred.map.tasks.speculative.execution

    mapreduce.map.speculative

    mapred.reduce.tasks.speculative.execution

    mapreduce.reduce.speculative

    io.sort.factor

    mapreduce.task.io.sort.factor

    io.sort.mb

    mapreduce.task.io.sort.mb

    四、Fair Scheduler相關參數

    ? ??參考:http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-configurations-fair-scheduler/

    五、Capacity Scheduler相關參數

    ? ? Capacity SchedulerYARN中默認的資源調度器。

    ? ??參考:http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-configurations-capacity-scheduler/

    ?


    總結

    以上是生活随笔為你收集整理的Hadoop Yarn内存使用优化配置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。