日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

常見(jiàn)問(wèn)題

更新時(shí)間:

本文匯總了YARN使用時(shí)的常見(jiàn)問(wèn)題。

集群有狀態(tài)重啟包括哪些內(nèi)容?

集群有狀態(tài)重啟包括RM RestartNM Restart兩部分,ResourceManager(簡(jiǎn)稱RM)負(fù)責(zé)維護(hù)應(yīng)用級(jí)基礎(chǔ)信息與狀態(tài),NodeManager(簡(jiǎn)稱NM)負(fù)責(zé)維護(hù)運(yùn)行時(shí)的Container信息與狀態(tài),它們持續(xù)將相關(guān)狀態(tài)同步至外部存儲(chǔ)(Zookeeper、LevelDB和HDFS等),并在重啟后重新加載狀態(tài)自行恢復(fù),保證集群升級(jí)或重啟后應(yīng)用自動(dòng)恢復(fù),通常情況下可以做到應(yīng)用無(wú)感知。

如何啟用RM HA?

您可以在EMR控制臺(tái)YARN服務(wù)的配置頁(yè)簽,檢查或者配置以下參數(shù)啟用RM HA。

參數(shù)

描述

yarn.resourcemanager.ha.enabled

設(shè)置為true,表示開(kāi)啟HA。

默認(rèn)值為false。

yarn.resourcemanager.ha.automatic-failover.enabled

使用默認(rèn)值true,表示啟用自動(dòng)切換。

yarn.resourcemanager.ha.automatic-failover.embedded

使用默認(rèn)值true,表示使用嵌入的自動(dòng)切換方式。

yarn.resourcemanager.ha.curator-leader-elector.enabled

設(shè)置為true,表示使用curator組件。

默認(rèn)值為false。

yarn.resourcemanager.ha.automatic-failover.zk-base-path

使用默認(rèn)值/yarn-leader-electionleader-elector

如何配置熱更新?

重要

以下操作內(nèi)容適用于Hadoop 3.2.0及后續(xù)版本。

  1. 開(kāi)啟關(guān)鍵配置。

    您可以在EMR控制臺(tái)YARN服務(wù)的配置頁(yè)簽,檢查或者配置以下參數(shù)。

    參數(shù)

    描述

    參數(shù)值(推薦)

    yarn.scheduler.configuration.store.class

    使用的后備存儲(chǔ)的類型。例如,設(shè)置為fs,表示使用FileSystem類型存儲(chǔ)。

    fs

    yarn.scheduler.configuration.max.version

    保留歷史版本的最大數(shù)量,超出自動(dòng)清理。

    100

    yarn.scheduler.configuration.fs.path

    capacity-scheduler.xml文件存儲(chǔ)路徑。

    不存在存儲(chǔ)路徑時(shí),則自動(dòng)創(chuàng)建。不指定前綴時(shí),則默認(rèn)defaultFs的相對(duì)路徑。

    /yarn/<集群名>/scheduler/conf

    重要

    將<集群名>替換為集群名稱以便區(qū)分,可能有多個(gè)YARN集群對(duì)應(yīng)同一分布式存儲(chǔ)的情況。

  2. 查看capacity-scheduler.xml配置。

    • 方式一(REST API):http://<rm-address>/ws/v1/cluster/scheduler-conf。

    • 方式二(HDFS文件):${yarn.scheduler.configuration.fs.path}/capacity-scheduler.xml.<timestamp>,其中后綴<timestamp>值最大的文件是最新的配置文件。

  3. 更新配置。

    示例:更新一個(gè)配置項(xiàng)yarn.scheduler.capacity.maximum-am-resource-percent,并刪除配置項(xiàng)yarn.scheduler.capacity.xxx,刪除某配置項(xiàng)只需去掉其Value值。

    curl -X PUT -H "Content-type: application/json" 'http://<rm-address>/ws/v1/cluster/scheduler-conf' -d '
    {
      "global-updates": [
        {
          "entry": [{
            "key":"yarn.scheduler.capacity.maximum-am-resource-percent",
            "value":"0.2"
          },{
            "key":"yarn.scheduler.capacity.xxx"
          }]
        }
      ]
    }'

如何處理Queue內(nèi)應(yīng)用分配不均?

重要

以下操作內(nèi)容適用于Hadoop 2.8.0及后續(xù)版本。

Queue內(nèi)部資源通常會(huì)被大作業(yè)占據(jù),小作業(yè)較難獲得資源,希望各作業(yè)能公平獲得資源。您可以通過(guò)以下步驟處理:

  1. 修改Queue配置yarn.scheduler.capacity.<queue-path>.ordering-policy,使其調(diào)度次序由fifo(默認(rèn)值)改為fair

    說(shuō)明

    FIFO Scheduler為先進(jìn)先出調(diào)度器,F(xiàn)air Scheduler為公平調(diào)度器。

    您還可以修改參數(shù)yarn.scheduler.capacity.<queue-path>.ordering-policy.fair.enable-size-based-weight,該參數(shù)默認(rèn)值false,表示按used資源值從小到大排序,參數(shù)值為true時(shí)表示按照used或demand計(jì)算值從小到大排序。

  2. 開(kāi)啟隊(duì)列內(nèi)搶占。

    隊(duì)列內(nèi)搶占常用參數(shù)如下表所示。

    參數(shù)

    描述

    參數(shù)值(推薦)

    yarn.resourcemanager.scheduler.monitor.enable

    搶占功能總開(kāi)關(guān),在yarn-site.xml中配置,其余參數(shù)是在capacity-scheduler.xml中配置。

    true

    yarn.resourcemanager.monitor.capacity.preemption.intra-queue-preemption.enabled

    隊(duì)列內(nèi)搶占開(kāi)關(guān)(隊(duì)列間搶占無(wú)開(kāi)關(guān),默認(rèn)開(kāi)啟)。

    true

    yarn.resourcemanager.monitor.capacity.preemption.intra-queue-preemption.preemption-order-policy

    搶占策略優(yōu)先考慮應(yīng)用優(yōu)先級(jí),默認(rèn)值為userlimit_first。

    priority_first

    yarn.scheduler.capacity.<queue-path>.disable_preemption

    指定Queue不被搶占,默認(rèn)false。

    true表示不允許指定Queue資源被搶占,子Queue未配置則繼承父Queue配置值。

    true

    yarn.scheduler.capacity.<queue-path>.intra-queue-preemption.disable_preemption

    指定Queue不開(kāi)啟隊(duì)列內(nèi)搶占,默認(rèn)值false。

    true表示禁用Queue內(nèi)搶占,子Queue未配置則繼承父Queue配置值。

    true

如何查看隊(duì)列資源使用情況?

要查看隊(duì)列資源使用情況,您可以在YARN WebUI頁(yè)面查看Used Capacity參數(shù)。Used Capacity參數(shù)表示該隊(duì)列已使用的資源占該隊(duì)列整體資源的百分比,分別計(jì)算Memory和vCores占總體的比例,并選取最大值作為隊(duì)列整體資源使用的比例。具體查看操作如下:

  1. 訪問(wèn)YARN UI,詳情請(qǐng)參見(jiàn)訪問(wèn)鏈接與端口

  2. All Applications頁(yè)面,單擊目標(biāo)作業(yè)的ID。

  3. 單擊Queue行的隊(duì)列。

    Application Queues區(qū)域,可以查看隊(duì)列資源使用情況。

    image.png

YARN服務(wù)組件.out日志為何會(huì)大量堆積且無(wú)法自動(dòng)清理?

  • 問(wèn)題原因:Hadoop組件部分依賴庫(kù)使用Java Logging APIs來(lái)生成日志記錄,不支持使用log4j配置的日志輪轉(zhuǎn)。目前這些daemon組件的stderr輸出被重定向到.out文件中,沒(méi)有自動(dòng)清理機(jī)制,長(zhǎng)時(shí)間積累可能導(dǎo)致數(shù)據(jù)盤(pán)存儲(chǔ)空間被占滿。

  • 處理方法:可以使用headtail命令結(jié)合日志中生成的時(shí)間戳信息,來(lái)判斷是否由于Java Logging APIs生成的日志導(dǎo)致存儲(chǔ)空間占用過(guò)大。通常情況下,這些依賴庫(kù)產(chǎn)生的都是INFO級(jí)別日志,不影響組件正常功能使用,但為了避免數(shù)據(jù)盤(pán)存儲(chǔ)空間被占用,可以采取修改配置的方式禁用此類日志的生成。

    例如,在優(yōu)化TimelineServer組件以關(guān)閉jersey依賴庫(kù)的日志生成時(shí),操作步驟如下:

    1. 通過(guò)以下命令,監(jiān)控YARN日志路徑中與hadoop-timelineserver-相關(guān)的.out日志文件。DataLake集群的日志路徑為/var/log/emr/yarn/,Hadoop集群日志路徑為/mnt/disk1/log/hadoop-yarn

      tail /var/log/emr/yarn/*-hadoop-timelineserver-*.out

      觀察到輸出日志中包含由com.sun.jersey組件產(chǎn)生的記錄。

      image.png

    2. 為了禁止組件輸出Jersey庫(kù)的INFO級(jí)別日志到.out 文件,創(chuàng)建并配置一個(gè)文件來(lái)關(guān)閉其日志生成。在運(yùn)行有TimelineServer組件的EMR節(jié)點(diǎn)上,可以通過(guò)執(zhí)行以下命令以root權(quán)限創(chuàng)建并編輯配置文件。

      sudo su root -c "echo 'com.sun.jersey.level = OFF' > $HADOOP_CONF_DIR/off-logging.properties"
    3. 在EMR控制臺(tái)中YARN服務(wù)的配置頁(yè)面,查找YARN_TIMELINESERVER_OPTS參數(shù)(Hadoop集群為yarn_timelineserver_opts),并在此參數(shù)值后添加-Djava.util.logging.config.file=off-logging.properties,指定剛剛創(chuàng)建的配置文件位置。

      image

    4. 保存上述配置更改后,重啟TimelineServer組件使新設(shè)置生效。持續(xù)觀察一段時(shí)間,如果TimelineServer組件正常啟動(dòng),并且.out日志中不再出現(xiàn)任何與com.sun.jersey相關(guān)的日志信息,則說(shuō)明關(guān)閉jersey依賴庫(kù)日志的操作已成功完成。

如何檢查ResourceManager服務(wù)是否正常?

您可以通過(guò)以下方式檢查:

  • 檢查ResourceManager HA狀態(tài)(如果集群已啟用HA,需確保有且只有一個(gè)Active ResourceManager),以下方式任選一種,檢查字段haState是否為ACTIVE或STANDBY,haZooKeeperConnectionState是否為CONNECTED:

    • 命令行:yarn rmadmin -getAllServiceState

    • REST API:http://<rmAddress>/ws/v1/cluster/info

    示例如下。RM-1

  • 檢查應(yīng)用狀態(tài)。

    執(zhí)行以下命令,查看是否有持續(xù)的SUBMITTED或ACCEPTED狀態(tài)。

    yarn application -list
  • 查看提交的新應(yīng)用是否可以正常運(yùn)行并結(jié)束。命令示例如下。

    hadoop jar <hadoop_home>/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*-tests.jar sleep -m 1 -mt 1000 -r 0

    您可以在sleep -m之間新增配置項(xiàng)以指定Queue,新增的參數(shù)為-Dmapreduce.job.queuename,參數(shù)值為default。

如何了解應(yīng)用運(yùn)行狀況?

您可以查看以下信息。

查詢信息

描述

基本信息

包括ID、User、Name、Application Type、State、Queue、App-Priority、StartTime、FinishTime、State、FinalStatus、Running Containers、Allocated CPU VCores、Allocated Memory MB和Diagnostics(診斷信息)等。

  • App列表頁(yè):http://<rmAddress>/cluster/apps。

  • App詳情頁(yè)(在App列表頁(yè)面,單擊App ID進(jìn)入): http://<rmAddress>/cluster/app/<applicationId>。

  • App Attempt詳情頁(yè)(在App詳情頁(yè)面,單擊App Attempt ID進(jìn)入):http://<rmAddress>/cluster/appattempt/<appAttemptId>。

  • App REST API:http://<rmAddress>/ws/v1/cluster/apps/<applicationId>。

  • App Attempts REST API: http://<rmAddress>/ws/v1/cluster/apps/<applicationId>/appattempts。

Queue信息

  • Scheduler頁(yè)面(葉子節(jié)點(diǎn)展開(kāi)):http://<rmAddress>/cluster/scheduler。

  • Scheduler REST API:http://<rmAddress>/ws/v1/cluster/scheduler。

Container日志

  • RUNNING Applications

    • 通過(guò)NodeManager Log頁(yè)面查看:http://<nmHost>:8042/node/containerlogs/<containerId>/<user>。

    • 在運(yùn)行節(jié)點(diǎn)${yarn.nodemanager.local-dirs}目錄下查找<containerId>子目錄。

  • Finished Applications

    • 通過(guò)yarn logs -applicationId <applicationId> -appOwner <user> -containerId <containerId>命令查詢。

    • 通過(guò)HDFS命令hadoop fs -ls /logs/<user>/logs/<applicationId>查詢。

應(yīng)用問(wèn)題排查流程

  1. 檢查App狀態(tài),通過(guò)App詳情頁(yè)或App REST API檢查App狀態(tài)。

    • 未找到App狀態(tài),可能原因:

      • 客戶端向YARN提交之前失敗退出:客戶端組件問(wèn)題(檢查提交客戶端日志:BRS、flowagent等組件)。

      • 客戶端無(wú)法連接YARN RM:檢查連接RM地址是否正確、網(wǎng)絡(luò)是否存在問(wèn)題。如有網(wǎng)絡(luò)問(wèn)題,客戶端可能存在報(bào)錯(cuò):com.aliyun.emr.flow.agent.common.exceptions.EmrFlowException: ###[E40001,RESOURCE_MANAGER]: Failed to access to resource manager, cause: The stream is closed

    • NEW_SAVING:該狀態(tài)處于Zookeeper State Store寫(xiě)入應(yīng)用信息階段。持續(xù)該狀態(tài)可能原因如下:

    • SUBMITTED:該狀態(tài)極少遇到,可能原因?yàn)镹ode Update請(qǐng)求太多造成Capacity Scheduler內(nèi)部搶鎖堵塞,通常發(fā)生在大規(guī)模集群,需優(yōu)化相關(guān)流程。相關(guān)案例,請(qǐng)參見(jiàn)YARN-9618

    • ACCEPTED:檢查Diagnostics。請(qǐng)根據(jù)提示信息,選擇相應(yīng)的處理方式。

      • 報(bào)錯(cuò)提示Queue's AM resource limit exceeded。

        • 可能原因:Queue AM已使用資源和AM資源之和超出了Queue AM資源上限,UI條件為${Used Application Master Resources} + ${AM Resource Request} < ${Max Application Master Resources}。

        • 處理方法:上調(diào)該Queue的AM資源上限。例如,設(shè)置參數(shù)yarn.scheduler.capacity.<queue-path>.maximum-am-resource-percent為0.5。

      • 報(bào)錯(cuò)提示User's AM resource limit exceeded。

        • 可能原因:Queue user AM已使用資源和AM資源之和超出了Queue user AM資源上限。

        • 處理方法:提高user-limit比例。您可以修改參數(shù)yarn.scheduler.capacity.<queue-path>.user-limit-factoryarn.scheduler.capacity.<queue-path>.minimum-user-limit-percent的參數(shù)值。

      • 報(bào)錯(cuò)提示AM container is launched, waiting for AM container to Register with RM。

        • 可能原因:AM已啟動(dòng),內(nèi)部初始化未完成(例如,Zookeeper連接超時(shí)等)。

        • 處理方法:需要根據(jù)AM日志進(jìn)一步排查問(wèn)題。

      • 報(bào)錯(cuò)提示Application is Activated, waiting for resources to be assigned for AM。

        執(zhí)行步驟3,檢查AM資源分配為何未滿足。

    • RUNNING:執(zhí)行步驟2,檢查Container資源請(qǐng)求是否完成。

    • FAILED:檢查diagnostics。請(qǐng)根據(jù)提示信息,選擇相應(yīng)的處理方式。

      • 報(bào)錯(cuò)提示Maximum system application limit reached,cannot accept submission of application

        • 可能原因:集群內(nèi)運(yùn)行中的總應(yīng)用數(shù)超過(guò)上限(配置項(xiàng):yarn.scheduler.capacity.maximum-applications,默認(rèn)值:10000)。

        • 處理方法:檢查JMX Metrics,確認(rèn)各隊(duì)列運(yùn)行的應(yīng)用數(shù)是否符合預(yù)期,找出并處理有大量重復(fù)提交的問(wèn)題應(yīng)用。如果應(yīng)用都正常,可以根據(jù)集群水位情況適當(dāng)調(diào)大上述配置。

      • 報(bào)錯(cuò)提示Application XXX submitted by user YYY to unknown queue: ZZZ

        • 可能原因:提交到不存在的queue。

        • 處理方法:提交到已存在的leaf queue。

      • 報(bào)錯(cuò)提示Application XXX submitted by user YYY to non-leaf queue: ZZZ

        • 可能原因:提交到parent queue。

        • 處理方法:提交到已存在的leaf queue。

      • 報(bào)錯(cuò)提示Queue XXX is STOPPED. Cannot accept submission of application: YYY

        • 可能原因:提交到STOPPED或DRAINING queue(已下線或正在下線的queue)。

        • 處理方法:提交到RUNNING queue(工作狀態(tài)正常的queue)。

      • 報(bào)錯(cuò)提示Queue XXX already has YYY applications, cannot accept submission of application: ZZZ

        • 可能原因:queue應(yīng)用數(shù)達(dá)到上限。

        • 處理方法:

          1. 檢查queue內(nèi)是否有大量重復(fù)提交的問(wèn)題應(yīng)用。

          2. 調(diào)整配置:yarn.scheduler.capacity.<queue-path>.maximum-applications。

      • 報(bào)錯(cuò)提示Queue XXX already has YYY applications from user ZZZ cannot accept submission of application: AAA

        • 可能原因:user應(yīng)用數(shù)達(dá)到上限。

        • 處理方法:

          1. 檢查該user是否有大量重復(fù)提交的問(wèn)題應(yīng)用。

          2. 調(diào)整配置:yarn.scheduler.capacity.<queue-path>.maximum-applications、yarn.scheduler.capacity.<queue-path>.minimum-user-limit-percent、yarn.scheduler.capacity.<queue-path>.user-limit-factor。

  2. 確認(rèn)YARN資源分配還未完成。

    1. 在apps列表頁(yè),單擊appID進(jìn)入AM頁(yè)面。

    2. 單擊下方列表的AM-ID,進(jìn)入AM-Attempt頁(yè)面。

    3. 查看Total Outstanding Resource Requests列表中是否有Pending資源(也可以通過(guò)PendingRequests REST API查詢):

      • 沒(méi)有Pending資源:說(shuō)明YARN已分配完畢,退出該檢查流程,檢查AM情況。AM-Attempt

      • 有Pending資源:說(shuō)明YARN資源分配未完成,繼續(xù)下一步檢查。

  3. 資源限制檢查。

    檢查集群或Queue資源,查看資源信息,例如,Effective Max Resource和Used Resources。

    1. 檢查集群資源或所在Queue資源或其父Queue資源是否已用完。

    2. 檢查葉子隊(duì)列某維度資源是否接近或達(dá)到上限。

    3. 當(dāng)集群資源接近用滿時(shí)(例如85%以上),應(yīng)用的分配速度可能會(huì)變慢,因?yàn)榇蟛糠謾C(jī)器都沒(méi)有資源了,分配的機(jī)器沒(méi)有資源就會(huì)reserve,reserve到一定個(gè)數(shù)后分配就會(huì)變慢,另外也可能是由于內(nèi)存資源和CPU資源不成比例,例如,有的機(jī)器上內(nèi)存資源有空閑但CPU資源已經(jīng)用滿,有的機(jī)器上CPU資源有空閑但內(nèi)存已經(jīng)用滿。

  4. 檢查是否存在Container資源分配成功但啟動(dòng)失敗的情況,YARN UI的App Attempt頁(yè)面可以看到已分配的Container數(shù)(間隔一小段時(shí)間觀察是否變化),如果有Container啟動(dòng)失敗,查看對(duì)應(yīng)的NM日志或Container日志進(jìn)一步排查失敗原因。

  5. 動(dòng)態(tài)修改日志級(jí)別:在YARN UI的logLevel頁(yè)面(http://RM_IP:8088/logLevel),將org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity(CapacityScheduler調(diào)度邏輯所在的package)參數(shù)的日志級(jí)別改為DEBUG,如下圖所示。動(dòng)態(tài)修改日志級(jí)別

    重要

    您需要在復(fù)現(xiàn)問(wèn)題的同時(shí)打開(kāi),持續(xù)幾十秒(由于日志刷新的很快,無(wú)需持續(xù)太長(zhǎng)時(shí)間),日志級(jí)別改回INFO即可恢復(fù)。

單任務(wù)/容器(Container)最大可用資源由哪些配置項(xiàng)決定?

由調(diào)度器或隊(duì)列(queue)配置項(xiàng)決定:

配置項(xiàng)

配置說(shuō)明

默認(rèn)值

yarn.scheduler.maximum-allocation-mb

集群級(jí)最大可調(diào)度內(nèi)存資源,單位:MB。

EMR默認(rèn)值為:創(chuàng)建集群時(shí)最大非master實(shí)例組的可用內(nèi)存(與最大實(shí)例組的 yarn.nodemanager.resource.memory-mb參數(shù)的配置值相同)。

yarn.scheduler.maximum-allocation-vcores

集群級(jí)最大可調(diào)度CPU資源,單位:VCore。

EMR默認(rèn)值為32。

yarn.scheduler.capacity.<queue-path>.maximum-allocation-mb

指定隊(duì)列的最大可調(diào)度內(nèi)存資源,單位:MB。

默認(rèn)未配置,配置則覆蓋集群級(jí)配置,僅對(duì)指定隊(duì)列生效。

yarn.scheduler.capacity.<queue-path>.maximum-allocation-vcores

指定隊(duì)列的最大可調(diào)度CPU資源,單位:VCore。

默認(rèn)未配置,配置則覆蓋集群級(jí)配置,僅對(duì)指定隊(duì)列生效。

說(shuō)明

如果申請(qǐng)資源超過(guò)單任務(wù)或容器(Container)的最大可用資源配置,應(yīng)用日志中能夠發(fā)現(xiàn)異常信息InvalidResourceRequestException: Invalid resource request…

YARN配置修改未生效,如何處理?

  • 可能原因

    • 非熱更新配置,配置關(guān)聯(lián)的組件未重啟。

    • 熱更新配置,配置生效所需的指定操作未執(zhí)行。

  • 解決方案:請(qǐng)確保相關(guān)配置修改的后續(xù)操作正確執(zhí)行。

    配置集

    配置類型

    更新后續(xù)操作

    • capacity-scheduler.xml

    • fair-scheduler.xml

    調(diào)度器配置。

    熱更新配置,需要執(zhí)行RM組件的refresh_queues操作。

    • yarn-env.sh

    • yarn-site.xml

    • mapred-env.sh

    • mapred-site.xml

    YARN組件運(yùn)行配置。

    重啟配置關(guān)聯(lián)組件。例如:

    • 修改配置yarn-env.sh中的YARN_RESOURCEMANAGER_HEAPSIZE、yarn-site.xml中的yarn.resourcemanager.nodes.exclude-path等配置項(xiàng)后,需重啟RM。

    • 修改配置yarn-env.sh中的YARN_NODEMANAGER_HEAPSIZE、yarn-site.xml中的yarn.nodemanager.log-dirs等配置項(xiàng)后,需重啟NM。

    • 修改配置mapred-env.sh中的MAPRED_HISTORYSERVER_OPTS、mapred-site.xml中的mapreduce.jobhistory.http.policys等配置項(xiàng)后,需重啟MRHistoryServer。

客戶端異常,提示Exception while invoking getClusterNodes of class ApplicationClientProtocolPBClientImpl over rm2 after 1 fail over attempts. Trying to fail over immediately

  • 問(wèn)題現(xiàn)象:無(wú)法正常訪問(wèn)Active ResourceManager。ResourceManager日志異常,提示信息:WARN org.apache.hadoop.ipc.Server: Incorrect header or version mismatch from 10.33.**.**:53144 got version 6 expected version 9。

  • 問(wèn)題原因:Hadoop版本太舊,導(dǎo)致客戶端RPC版本不兼容。

  • 處理方法:使用匹配的Hadoop版本。

RM處于Standby狀態(tài),無(wú)法自動(dòng)恢復(fù)Active狀態(tài),該如何處理?

您可以通過(guò)以下方式排查問(wèn)題:

  1. 檢查支持自動(dòng)恢復(fù)的必選配置項(xiàng)是否配置正確。

    參數(shù)

    描述

    yarn.resourcemanager.ha.enabled

    需要配置為true

    yarn.resourcemanager.ha.automatic-failover.enabled

    需要配置為true

    yarn.resourcemanager.ha.automatic-failover.embedded

    需要配置為true

  2. 修改為上述配置后,問(wèn)題還未解決,您可以通過(guò)以下方式排查問(wèn)題:

    • 檢查Zookeeper服務(wù)是否正常。

    • 檢查Zookeeper客戶端(RM)讀取數(shù)據(jù)是否超出其Buffer上限。

      • 問(wèn)題現(xiàn)象:RM日志內(nèi)存在異常,提示Zookeeper error len*** is out of range!或Unreasonable length = ***。

      • 處理方法:在EMR控制臺(tái)YARN服務(wù)的配置頁(yè)面,單擊yarn-env頁(yè)簽,更新參數(shù)yarn_resourcemanager_opts的參數(shù)值為-Djute.maxbuffer=4194304 ,然后重啟RM。

    • Zookeeper服務(wù)端寫(xiě)入數(shù)據(jù)是否超出其Buffer上限。

      • 問(wèn)題現(xiàn)象:Zookeeper日志內(nèi)存在異常,提示Exception causing close of session 0x1000004d5701b6a: Len error ***。

      • 處理方法:Zookeeper服務(wù)各節(jié)點(diǎn)新增或更新配置項(xiàng)-Djute.maxbuffer= (單位:bytes) ,將Buffer上限調(diào)大超過(guò)異常顯示的長(zhǎng)度。

    • 如果RM或Zookeeper日志都找不到異常,可能是因?yàn)镽M選主Zookeeper Ephemeral Node(${yarn.resourcemanager.zk-state-store.parent-path}/${yarn.resourcemanager.cluster-id}/ActiveStandbyElectorLock)被其他Session持有未釋放,可在zkCli命令窗口中stat該節(jié)點(diǎn)確認(rèn),默認(rèn)選主方式可能存在未知問(wèn)題或觸發(fā)Zookeeper問(wèn)題。

      建議修改選主方式,在yarn-site頁(yè)簽中,新增或更新配置項(xiàng)yarn.resourcemanager.ha.curator-leader-elector.enabled為true ,然后重啟RM。

RM組件OOM如何處理?

RM OOM包括多種問(wèn)題類型,您需要先根據(jù)RM日志確定問(wèn)題類型,可能的問(wèn)題類型及對(duì)應(yīng)的原因和解決方案如下:

  • Java heap space或GC overhead limit exceeded或頻繁FullGC

    • 原因

      • 直接原因:JVM堆空間不足,RM進(jìn)程內(nèi)部對(duì)象無(wú)法獲取到足夠的資源,并且在拋出OOM之前已經(jīng)進(jìn)行過(guò)一輪或多輪FullGC回收了失效的對(duì)象,仍無(wú)法獲取足夠的堆空間用于分配。

      • 原因分析:RM有很多常駐對(duì)象(不能被JVM回收的對(duì)象),包括集群、隊(duì)列(queue)、應(yīng)用、執(zhí)行任務(wù)容器(container)、節(jié)點(diǎn)(node)等各類信息。這些信息占用的堆空間隨著集群規(guī)模增大而增大,因此對(duì)于規(guī)模較大的集群需要保證RM進(jìn)程的內(nèi)存配置也較大。另一方面,由于需要保留應(yīng)用的歷史信息,隨著時(shí)間推移歷史應(yīng)用占用的存儲(chǔ)空間越來(lái)越大,即使是只有1個(gè)節(jié)點(diǎn)的最小規(guī)模集群,也需要確保有一定的存儲(chǔ)空間(建議不低于2 GB)。

    • 解決方案

      • 如果Master節(jié)點(diǎn)資源足夠,建議適當(dāng)增大RM堆內(nèi)存(yarn-env.sh配置項(xiàng)YARN_RESOURCEMANAGER_HEAPSIZE)。

      • 對(duì)于小規(guī)模集群,也可以考慮適當(dāng)減小需要存儲(chǔ)的歷史應(yīng)用數(shù)量(yarn-site.xml配置項(xiàng)yarn.resourcemanager.max-completed-applications,默認(rèn):10000)。

  • unable to create new native thread

    • 原因:RM所在節(jié)點(diǎn)上已用的總線程數(shù)達(dá)到系統(tǒng)上限,無(wú)法創(chuàng)建新的線程。

      線程數(shù)上限由用戶最大可用線程數(shù)(查看命令:ulimit -a | grep "max user processes")和PID最大可用數(shù)(查看命令:cat /proc/sys/kernel/pid_max)決定。

    • 解決方案

      • 如果可用線程數(shù)配置過(guò)低,調(diào)大相關(guān)系統(tǒng)配置。通常規(guī)格小的節(jié)點(diǎn)可用線程數(shù)需配置數(shù)萬(wàn)量級(jí),規(guī)格大的節(jié)點(diǎn)需配置十幾萬(wàn)或幾十萬(wàn)量級(jí)。

      • 如果可用線程數(shù)配置正常,通常是節(jié)點(diǎn)上存在個(gè)別問(wèn)題進(jìn)程占用過(guò)多線程導(dǎo)致,可以進(jìn)一步定位哪些進(jìn)程占用線程較多。

        執(zhí)行命令:ps -eLf | awk '{print $2}' | uniq -c | awk '{print $2"\t"$1}' | sort -nrk2 | head ,查看占用線程數(shù)最多的Top10進(jìn)程,格式:[進(jìn)程ID] [占用線程數(shù)]。

為什么節(jié)點(diǎn)啟動(dòng)任務(wù)時(shí)Localize失敗或任務(wù)日志無(wú)法采集與刪除?

  • 問(wèn)題現(xiàn)象:NM日志異常,提示java.io.IOException: Couldn't create proxy provider class org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider。

  • 可能原因:HDFS配置異常。

  • 處理方法:

    1. 以上是封裝后的異常,非根因,需要打開(kāi)DEBUG級(jí)別日志查看:

      • hadoop客戶端命令行環(huán)境(例如執(zhí)行hadoop fs -ls /命令),開(kāi)啟DEBUG調(diào)試信息。

        export HADOOP_LOGLEVEL=DEBUG
      • 有Log4j配置的運(yùn)行環(huán)境,Log4j末尾增加log4j.logger.org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider=DEBUG

    2. 以下示例的根因是用戶曾修改過(guò)NameServices配置,將emr-cluster修改為了hadoop-emr-cluster,但是擴(kuò)容節(jié)點(diǎn)時(shí)使用了修改前的配置。nameservices

    3. 在EMR控制臺(tái)HDFS服務(wù)的配置頁(yè)面,檢查各項(xiàng)配置是否正確。

資源本地化異常,該如何處理?

  • 問(wèn)題現(xiàn)象:

    • Job AM Container啟動(dòng)失敗,異常信息如下。

      Failed job diagnostics信息為:Application application_1412960082388_788293 failed 2 times due to AM Container for appattempt_1412960082388_788293_000002 exited with exitCode: -1000 due to: EPERM: Operation not permitted
    • 在資源本地化過(guò)程中(下載后解壓時(shí))報(bào)錯(cuò),NodeManager日志信息如下。

      INFO org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ResourceLocalizationService: Failed to download rsrc { { hdfs://hadoopnnvip.cm6:9000/user/heyuan.lhy/apv/small_apv_20141128.tar.gz, 1417144849604, ARCHIVE, null },pending,[(container_1412960082388_788293_01_000001)],14170282104675332,DOWNLOADING}
      EPERM: Operation not permitted
              at org.apache.hadoop.io.nativeio.NativeIO$POSIX.chmodImpl(Native Method)
              at org.apache.hadoop.io.nativeio.NativeIO$POSIX.chmod(NativeIO.java:226)
              at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:629)
              at org.apache.hadoop.fs.DelegateToFileSystem.setPermission(DelegateToFileSystem.java:186)
              at org.apache.hadoop.fs.FilterFs.setPermission(FilterFs.java:235)
              at org.apache.hadoop.fs.FileContext$10.next(FileContext.java:949)
              at org.apache.hadoop.fs.FileContext$10.next(FileContext.java:945)
              at org.apache.hadoop.fs.FSLinkResolver.resolve(FSLinkResolver.java:90)
              at org.apache.hadoop.fs.FileContext.setPermission(FileContext.java:945)
              at org.apache.hadoop.yarn.util.FSDownload.changePermissions(FSDownload.java:398)
              at org.apache.hadoop.yarn.util.FSDownload.changePermissions(FSDownload.java:412)
              at org.apache.hadoop.yarn.util.FSDownload.changePermissions(FSDownload.java:412)
              at org.apache.hadoop.yarn.util.FSDownload.call(FSDownload.java:352)
              at org.apache.hadoop.yarn.util.FSDownload.call(FSDownload.java:57)
              at java.util.concurrent.FutureTask.run(FutureTask.java:262)
              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
              at java.util.concurrent.FutureTask.run(FutureTask.java:262)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:744)
  • 問(wèn)題原因:壓縮包內(nèi)含有軟鏈接導(dǎo)致資源本地化異常。

  • 處理方法:刪除該壓縮包內(nèi)包含的軟鏈接。

Container啟動(dòng)失敗或運(yùn)行異常,報(bào)錯(cuò)提示No space left on device,該如何處理?

可能原因及排查思路如下:

  • 磁盤(pán)已滿。

  • 檢查/sys/fs/cgroup/cpu/hadoop-yarn/cgroup.clone_children/sys/fs/cgroup/cpu/cgroup.clone_children的Cgroups配置。

    1. 如果cgroup.clone_children的值為0,請(qǐng)修改為1,開(kāi)機(jī)啟動(dòng)項(xiàng)時(shí),設(shè)置命令echo 1 > /sys/fs/cgroup/cpu/cgroup.clone_children

    2. 如果沒(méi)有上述問(wèn)題,請(qǐng)檢查同級(jí)的cpuset.memscpuset.cpus文件,hadoop-yarn目錄中的值需要和上層一樣。

  • 可能是Cgroups目錄的子目錄數(shù)超出上限65535造成的,檢查YARN配置yarn.nodemanager.linux-container-executor.cgroups.delete-delay-ms或者yarn.nodemanager.linux-container-executor.cgroups.delete-timeout-ms

節(jié)點(diǎn)NM服務(wù)或任務(wù)運(yùn)行時(shí)無(wú)法正常解析域名,該如何處理?

  • 問(wèn)題現(xiàn)象:報(bào)錯(cuò)提示java.net.UnknownHostException: Invalid host name: local host is: (unknown)。

  • 問(wèn)題原因及處理方法:

    • 查看是否正確配置了DNS服務(wù)器。

      通過(guò)以下命令,檢查配置信息。

      cat /etc/resolv.conf
    • 查看防火墻是否設(shè)置了53端口的相關(guān)規(guī)則。

      如果設(shè)置了,請(qǐng)關(guān)閉防火墻。

    • 查看是否開(kāi)啟了DNS的NSCD緩存服務(wù)。

      通過(guò)以下命令,檢查服務(wù)狀態(tài)。

      systemctl status nscd

      如果開(kāi)啟了DNS的NSCD緩存服務(wù),可以執(zhí)行以下命令,停止緩存服務(wù)。

      systemctl stop nscd

NM組件OOM如何處理?

NM OOM包括多種問(wèn)題類型,您需要先根據(jù)NM日志確定問(wèn)題類型,可能的問(wèn)題類型及對(duì)應(yīng)的原因和解決方案如下:

  • Java heap space或GC overhead limit exceeded或頻繁FullGC

    • 原因

      • 直接原因:JVM堆空間不足,NM進(jìn)程內(nèi)部對(duì)象無(wú)法獲取到足夠的資源,并且在拋出OOM之前已經(jīng)進(jìn)行過(guò)一輪或多輪FullGC回收了失效的對(duì)象,仍無(wú)法獲取足夠的堆空間用于分配。

      • 原因分析:NM進(jìn)程中的常駐對(duì)象不多,一般只包含當(dāng)前節(jié)點(diǎn)、運(yùn)行應(yīng)用、執(zhí)行任務(wù)容器(Container)等基本信息,這部分占用空間不會(huì)很大。可能占用空間較大的是External Shuffle Service的Cache和Buffer,這部分受Shuffle Service相關(guān)配置(例如Spark:spark.shuffle.service.index.cache.size或spark.shuffle.file.buffer,MapReduce:mapreduce.shuffle.ssl.file.buffer.size或mapreduce.shuffle.transfer.buffer.size等)影響,并且與使用了Shuffle Service的運(yùn)行應(yīng)用數(shù)(或執(zhí)行任務(wù)容器數(shù))成正比。這些信息占用的堆空間隨著使用ShuffleService應(yīng)用數(shù)或任務(wù)容器數(shù)的增大而增大,因此對(duì)于規(guī)格較大可運(yùn)行任務(wù)較多的節(jié)點(diǎn)需要保證NM進(jìn)程的內(nèi)存配置也較大(建議最小不低于1 GB)。

    • 解決方案

      • 如果節(jié)點(diǎn)資源足夠,建議適當(dāng)增大NM堆內(nèi)存(yarn-env.sh配置項(xiàng)YARN_NODEMANAGER_HEAPSIZE)。

      • 檢查Shuffle Service相關(guān)配置是否合理,例如Spark Cache配置不應(yīng)該占用大部分堆內(nèi)存。

  • Direct buffer memory

    • 原因

      • 直接原因:堆外內(nèi)存溢出導(dǎo)致的OOM,通常與External Shuffle Service有關(guān),例如有的Shuffle Service服務(wù)的RPC調(diào)用使用了NIO DirectByteBuffer,就會(huì)用到堆外內(nèi)存。

      • 原因分析:堆外內(nèi)存跟使用ShuffleService的應(yīng)用數(shù)或任務(wù)容器數(shù)成正比。對(duì)于使用Shuffle Service的任務(wù)較多的節(jié)點(diǎn),需要確認(rèn)NM進(jìn)程的堆外內(nèi)存配置是否過(guò)小。

    • 解決方案

      檢查堆外內(nèi)存配置-XX:MaxDirectMemorySize(yarn-env.sh配置項(xiàng)YARN_NODEMANAGER_OPTS)是否合理。無(wú)此配置時(shí)默認(rèn)與堆內(nèi)存大小相同,不合理時(shí)適當(dāng)調(diào)大堆外內(nèi)存空間。

  • unable to create new native thread

    參見(jiàn)RM組件OOM如何處理?中的unable to create new native thread部分的內(nèi)容進(jìn)行分析解決。

ECS實(shí)例重啟后NM啟動(dòng)失敗:cgroup目錄丟失,如何處理?

  • 詳細(xì)異常信息:ResourceHandlerException: Unexpected: Cannot create yarn cgroup Subsystem:cpu Mount point:/proc/mounts User:hadoop Path:/sys/fs/cgroup/cpu/hadoop-yarn

  • 原因:ECS異常重啟可能是ECS內(nèi)核缺陷(已知問(wèn)題版本:4.19.91 -21.2.al7.x86_64)導(dǎo)致的。重啟后CPU cgroup失效問(wèn)題,原因是重啟后cgroup的內(nèi)存數(shù)據(jù)會(huì)被銷毀掉。

  • 解決方案:修改存量集群節(jié)點(diǎn)執(zhí)行和擴(kuò)容節(jié)點(diǎn)的引導(dǎo)腳本,在當(dāng)前環(huán)境中創(chuàng)建cgroup目錄并且用rc.local在以后ECS啟動(dòng)的時(shí)候創(chuàng)建目錄。

    # enable cgroups
    mkdir -p /sys/fs/cgroup/cpu/hadoop-yarn
    chown -R hadoop:hadoop /sys/fs/cgroup/cpu/hadoop-yarn
    # enable cgroups after reboot
    echo "mkdir -p /sys/fs/cgroup/cpu/hadoop-yarn" >> /etc/rc.d/rc.local
    echo "chown -R hadoop:hadoop /sys/fs/cgroup/cpu/hadoop-yarn" >> /etc/rc.d/rc.local
    chmod +x /etc/rc.d/rc.local

修改NM resource配置,保存重啟后未生效,如何處理?

  • 報(bào)錯(cuò)說(shuō)明:修改yarn.nodemanager.resource.cpu-vcoresyarn.nodemanager.resource.memory-mb參數(shù),保存重啟NM后,NM資源數(shù)未修改。

  • 問(wèn)題原因:由于機(jī)器組可能使用不同CPU內(nèi)存規(guī)格的實(shí)例,所以修改yarn.nodemanager.resource.cpu-vcoresyarn.nodemanager.resource.memory-mb參數(shù),需要修改節(jié)點(diǎn)組維度的配置才能生效。

  • 解決方案:在EMR控制臺(tái),選擇節(jié)點(diǎn)組維度,選擇需要配置的NM所在節(jié)點(diǎn)組修改資源數(shù)的配置,具體操作請(qǐng)參見(jiàn)管理配置項(xiàng)修改NM配置

節(jié)點(diǎn)出現(xiàn)Unhealthy問(wèn)題,如何處理?

  • 原因:

    • 磁盤(pán)檢查發(fā)現(xiàn)異常:當(dāng)正常目錄數(shù)或總目錄數(shù)比率低于磁盤(pán)健康比例(yarn-site.xml配置項(xiàng)yarn.nodemanager.disk-health-checker.min-healthy-disks,默認(rèn)值:0.25)時(shí),將節(jié)點(diǎn)標(biāo)記為UnHealthy。例如NM節(jié)點(diǎn)使用4塊磁盤(pán),當(dāng)4塊磁盤(pán)上的目錄均不正常時(shí)節(jié)點(diǎn)才會(huì)標(biāo)記為UnHealthy,否則只在NM狀態(tài)報(bào)告中顯示local-dirs are bad或log-dirs are bad,參見(jiàn)節(jié)點(diǎn)磁盤(pán)問(wèn)題:local-dirs are bad/log-dirs are bad,如何處理?

    • NM健康檢查腳本發(fā)現(xiàn)異常:該項(xiàng)檢查默認(rèn)未啟用,需要主動(dòng)配置健康檢查腳本(yarn-site.xml配置項(xiàng)yarn.nodemanager.health-checker.script.path)才能開(kāi)啟。

  • 解決方案

節(jié)點(diǎn)磁盤(pán)問(wèn)題:local-dirs are bad/log-dirs are bad,如何處理?

  • 原因:磁盤(pán)檢查發(fā)現(xiàn)異常。該項(xiàng)檢查默認(rèn)開(kāi)啟,周期性檢查local-dirs(任務(wù)運(yùn)行緩存目錄,包括任務(wù)運(yùn)行依賴的各類文件、中間數(shù)據(jù)文件等)與log-dirs(任務(wù)運(yùn)行日志目錄,包含全部日志運(yùn)行)是否滿足以下條件,只要有一項(xiàng)不滿足就會(huì)被標(biāo)記為bad。

    • 可讀

    • 可寫(xiě)

    • 可執(zhí)行

    • 磁盤(pán)空間使用率是否低于配置閾值(yarn-site.xml配置項(xiàng)yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage,默認(rèn):90%)

      磁盤(pán)剩余可用空間是否大于磁盤(pán)最小可用空間的配置值(yarn-site.xml配置項(xiàng)yarn.nodemanager.disk-health-checker.min-free-space-per-disk-mb,默認(rèn):0)

  • 解決方案

    • 一般都是磁盤(pán)空間不足引起,如果確認(rèn)存在下述場(chǎng)景之一,建議擴(kuò)容磁盤(pán):

      • NM節(jié)點(diǎn)規(guī)格較大,可運(yùn)行任務(wù)數(shù)較多。

      • 磁盤(pán)空間相對(duì)較小。

      • 任務(wù)運(yùn)行所依賴的數(shù)據(jù)或文件較大。

      • 任務(wù)運(yùn)行產(chǎn)生的中間數(shù)據(jù)較多。

      • 任務(wù)日志相對(duì)較大(磁盤(pán)空間占比高)。

    • 檢查yarn-site.xml配置項(xiàng)yarn.nodemanager.localizer.cache.target-size-mb,如果相對(duì)磁盤(pán)比例過(guò)大會(huì)造成歷史任務(wù)緩存占用磁盤(pán)空間過(guò)多(超出配置值后才能自動(dòng)清理)。

    • 壞盤(pán)問(wèn)題,請(qǐng)參見(jiàn)自助壞盤(pán)維修流程更換集群損壞的本地盤(pán)

報(bào)錯(cuò)提示User [dr.who] is not authorized to view the logs for application ***,該如何處理?

  • 問(wèn)題現(xiàn)象:打開(kāi)日志頁(yè)面時(shí),提示信息如下。ERROR_info

  • 問(wèn)題原因:訪問(wèn)NodeManager Log頁(yè)面時(shí)會(huì)檢查ACL規(guī)則。如果啟用了ACL規(guī)則,遠(yuǎn)程用戶就要符合以下任一個(gè)條件:

    • 是admin用戶。

    • 是app owner。

    • 滿足app自定義ACL規(guī)則。

  • 處理方法:檢查是否滿足以上條件中的任一條。

報(bào)錯(cuò)提示HTTP ERROR 401 Authentication required或HTTP ERROR 403 Unauthenticated users are not authorized to access this page,該如何處理?

  • 問(wèn)題現(xiàn)象:訪問(wèn)UI或REST API時(shí)報(bào)錯(cuò)HTTP ERROR 401或HTTP ERROR 403。HTTP ERROR 401詳細(xì)信息如下圖。

    ERROR 401

  • 問(wèn)題原因:YARN啟用了Simple認(rèn)證且不允許匿名訪問(wèn),詳情請(qǐng)參見(jiàn)Authentication for Hadoop HTTP web-consoles

  • 處理方法:

    • 方式一:URL參數(shù)中顯示指定遠(yuǎn)程用戶,例如,user.name=***。

    • 方式二:您可以在E-MapReduce控制臺(tái)的HDFS服務(wù)的配置頁(yè)簽,在搜索區(qū)域搜索參數(shù)hadoop.http.authentication.simple.anonymous.allowed,修改其參數(shù)值為true允許匿名訪問(wèn),參數(shù)含義請(qǐng)參見(jiàn)Authentication for Hadoop HTTP web-consoles。然后重啟服務(wù),請(qǐng)參見(jiàn)重啟服務(wù)

為什么TotalVcore顯示值不準(zhǔn)確?

在YARN UI右上方,Cluster或Metrics REST API結(jié)果中,TotalVcore顯示值不準(zhǔn)確。此問(wèn)題是由于社區(qū)2.9.2之前版本TotalVcore計(jì)算邏輯有問(wèn)題,詳情請(qǐng)參見(jiàn)https://issues.apache.org/jira/browse/YARN-8443

EMR-3.37.x和EMR-5.3.x及后續(xù)版本已修復(fù)此問(wèn)題。

TEZ UI展示的應(yīng)用信息不全,該如何處理?

您可以打開(kāi)瀏覽器的開(kāi)發(fā)者工具,排查并處理遇到的問(wèn)題:

  1. 如果是路徑為http://<rmAddress>/ws/v1/cluster/apps/APPID的異常,則可能原因是該應(yīng)用已經(jīng)被RM清理出去(YARN RM最多保留一定數(shù)量的歷史應(yīng)用信息,默認(rèn)1000個(gè),超出的會(huì)將歷史應(yīng)用按啟動(dòng)順序清理出去)。

  2. 如果是路徑為http://<tsAddress>/ws/v1/applicationhistory/...的異常,直接訪問(wèn)該URL(http://<tsAddress>/ws/v1/applicationhistory/... )返回500異常(提示找不到app),則可能原因是該應(yīng)用信息未成功存儲(chǔ)(RM發(fā)起,查看yarn.resourcemanager.system-metrics-publisher.enabled配置項(xiàng)),或已被Timeline Store清理(查看LevelDB TTL相關(guān)配置)。

  3. 如果是路徑為http://<tsAddress>/ws/v1/timeline/...的異常,直接訪問(wèn)該URL(http://<tsAddress>/ws/v1/timeline/...)返回正常(code為200),但是內(nèi)容是NotFound信息。

    • 查看AM日志(syslog)啟動(dòng)時(shí)打印信息,正常初始化信息如下:

       [INFO] [main] |history.HistoryEventHandler|: Initializing HistoryEventHandler withrecoveryEnabled=true, historyServiceClassName=org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService
       [INFO] [main] |ats.ATSHistoryLoggingService|: Initializing ATSHistoryLoggingService with maxEventsPerBatch=5, maxPollingTime(ms)=10, waitTimeForShutdown(ms)=-1, TimelineACLManagerClass=org.apache.tez.dag.history.ats.acls.ATSHistoryACLPolicyManager
    • 如果有以下異常信息,說(shuō)明AM運(yùn)行時(shí)yarn.timeline-service.enabled配置異常,可能原因?yàn)镕lowAgent問(wèn)題(FlowAgent里對(duì)Hive作業(yè)有2種實(shí)現(xiàn),一種是Hive命令,另外一種是Beeline命令,此時(shí)默認(rèn)配置yarn.timeline-service.enabled為false。)

      [WARN] [main] |ats.ATSHistoryLoggingService|: org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService is disabled due to Timeline Service being disabled, yarn.timeline-service.enabled set to false

為什么YARN UI頁(yè)面有一個(gè)正在運(yùn)行的Spark Thrift JDBC/ODBC Server任務(wù)?

如果您在創(chuàng)建集群時(shí)選擇了Spark服務(wù),集群會(huì)自動(dòng)啟動(dòng)一個(gè)默認(rèn)的Spark Thrift Server服務(wù)。該服務(wù)會(huì)占用一個(gè)YARN Driver的資源。在Spark Thrift Server中運(yùn)行的任務(wù),默認(rèn)會(huì)通過(guò)該Driver向YARN申請(qǐng)所需的資源。

yarn.timeline-service.leveldb-timeline-store.path是否支持使用OSS地址?

yarn.timeline-service.leveldb-timeline-store.path參數(shù)不支持使用OSS地址。

如果您創(chuàng)建的是Hadoop集群,則yarn.timeline-service.leveldb-timeline-store.path的默認(rèn)值與hadoop.tmp.dir參數(shù)相同。請(qǐng)不要修改HDFS的hadoop.tmp.dir參數(shù),因?yàn)檫@會(huì)影響yarn.timeline-service.leveldb-timeline-store.path的配置。

Timeline Server連接超時(shí)、CPU或Memory占用異常高問(wèn)題,該如何處理?

在Tez任務(wù)特別多的情況下,寫(xiě)入YARN的Timeline Server時(shí),可能會(huì)出現(xiàn)連接超時(shí)的問(wèn)題。這是因?yàn)門(mén)imeline Server進(jìn)程占用大量CPU導(dǎo)致節(jié)點(diǎn)CPU使用率達(dá)到極限,進(jìn)而影響到了作業(yè)開(kāi)發(fā)和其他非核心業(yè)務(wù)(例如報(bào)表生成),所以臨時(shí)停止TimelineServer進(jìn)程來(lái)減輕節(jié)點(diǎn)的CPU負(fù)載。您可以通過(guò)修改以下配置項(xiàng)來(lái)解決此問(wèn)題。

在EMR控制臺(tái)修改Tez和YARN服務(wù)的相應(yīng)配置,新增或修改配置的具體操作,請(qǐng)參見(jiàn)管理配置項(xiàng)

  1. 在EMR控制臺(tái)Tez服務(wù)的配置頁(yè)面的tez-site.xml頁(yè)簽,新增參數(shù)為tez.yarn.ats.event.flush.timeout.millis,參數(shù)值為60000的配置項(xiàng),該參數(shù)用來(lái)設(shè)置Tez任務(wù)將事件寫(xiě)入YARN的Timeline Server時(shí)的超時(shí)時(shí)間。

  2. 在EMR控制臺(tái)YARN服務(wù)的配置頁(yè)面的yarn-site.xml頁(yè)簽,新增或修改以下配置項(xiàng)。修改完配置項(xiàng)后需要在YARN服務(wù)的狀態(tài)頁(yè)面重啟下TimelineServer。

    參數(shù)

    參數(shù)值

    說(shuō)明

    yarn.timeline-service.store-class

    org.apache.hadoop.yarn.server.timeline.RollingLevelDBTimelineStore

    用于指定YARN Timeline Server的事件存儲(chǔ)類。

    yarn.timeline-service.rolling-period

    daily

    用于設(shè)置YARN Timeline Server的事件滾動(dòng)周期

    yarn.timeline-service.leveldb-timeline-store.read-cache-size

    4194304

    用于設(shè)置YARN Timeline Server LevelDB存儲(chǔ)的讀取緩存大小。

    yarn.timeline-service.leveldb-timeline-store.write-buffer-size

    4194304

    用于設(shè)置YARN Timeline Server LevelDB存儲(chǔ)的寫(xiě)入緩沖區(qū)大小。

    yarn.timeline-service.leveldb-timeline-store.max-open-files

    500

    用于設(shè)置YARN Timeline Server LevelDB存儲(chǔ)的最大打開(kāi)文件數(shù)。