yarn 日誌聚集配置

日誌聚集相關配置參數

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

日誌聚合/集

        yarn資源管理器模式提供了日誌聚合功能,通過參數yarn.log-aggregation-enable來開啓,這個參數默認是false。

如果開啓了,你可以在yarn模式下在命令行中使用yarn logs -applicationId 來查看你的應用程序的運行日誌。但必須保證,

1.開啓了該功能

2.程序必須運行完 因爲yarn要進行聚合。另外,如果開啓了日誌聚合,本地的日誌文件就會刪除,從而騰出更多空間。(通過開啓日誌監控服務進程來解決在web頁面看不了日誌的問題

(1) yarn.log-aggregation-enable

參數解釋:是否啓用日誌聚集功能。

默認值:false

(2) yarn.log-aggregation.retain-seconds

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

默認值:-1

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

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

默認值:-1

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

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

默認值:/tmp/logs

(5) yarn.log-aggregation.retain-seconds

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

默認值:日誌將被轉移到目錄

${yarn.nodemanager.remote-app-log-dir}/${user}/${thisParam}下

 

yarn logs -applicationId 無法導出logs日誌 Log aggregation has not completed or is not enabled.

一:前面操作正確


二:執行

[hadoop@hadoop001 shell]$ yarn logs -applicationId application_1545664455577_0006

三:報錯

18/12/25 13:51:59 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
/tmp/logs/hadoop/logs/application_1545664455577_0006does not exist.
Log aggregation has not completed or is not enabled.

四:解決:yarn-site.xml在這個文件下面添加

<!--log-->
 <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
 </property>
 <property>
        <name>yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds</name>
        <value>3600</value>
 </property>
 <property>
        <name>yarn.nodemanager.remote-app-log-dir</name>
        <value>/tmp/logs</value>
 </property>
sbin/stop-all.sh
sbin/start-all.sh

還有一種可能:

[hadoop@hadoop001 hadoop]$ hdfs dfs -ls /tmp/logs
ls: `/tmp/logs': No such file or directory
[hadoop@hadoop001 hadoop]$ hdfs dfs -ls /tmp
Found 1 items
drwxr-xr-x   - hadoop supergroup          0 2018-12-25 17:47 /tmp/hadoop-yarn
[hadoop@hadoop001 hadoop]$ hdfs dfs -mkdir /tmp/logs
[hadoop@hadoop001 hadoop]$ hdfs dfs -ls /tmp
Found 2 items
drwxr-xr-x   - hadoop supergroup          0 2018-12-25 17:47 /tmp/hadoop-yarn
drwxr-xr-x   - hadoop supergroup          0 2018-12-25 17:53 /tmp/logs

開啓Hadoop/Yarn的日誌監控功能,解決web端查看日誌時的Java.lang.Exception:Unknown container問題

問題描述

今天在yarn上跑一個hadoop任務時,通過yarn的web管理後臺(serveraddress:8088)想查看該任務的的任務時,發現提示如下錯誤:

Java.lang.Exception:Unknown container.Container either has not started or has already completed or doesn;t belong to this node at all.


解放方法

下來查詢官方文檔後,才瞭解到yarn的日誌監控功能默認是處於關閉狀態的,需要我們進行開啓,開啓步驟如下:

    Ps:下面配置的文件的位置在hadoop根目錄 etc/haddop文件夾下,比較老版本的Hadoop是在hadoop根目錄下的conf文件夾中

一、在yarn-site.xml文件中添加日誌監控支持

該配置中添加下面的配置:

<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
 <!-- 日誌服務器的地址 -->
 <property>
         <name>yarn.log.server.url</name>
         <value>http://master:19888/jobhistory/logs</value>
 </property>

二、在mapred-site.xml文件中添加日誌服務的配置

該配置文件中添加如下配置:

<property>
    <!-- 表示提交到hadoop中的任務採用yarn來運行,要是已經有該配置則無需重複配置 -->
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property>
  <!--日誌監控服務的地址,一般填寫爲nodenode機器地址 -->
    <name>mapreduce.jobhistroy.address</name>
    <value>master:10020</value>
</property>
<property>
    <name>mapreduce.jobhistroy.webapp.address</name>
    <value>master:19888</value>
</property>

 

三、將修改後的配置文件拷貝到集羣中的其他機器(單機版hadoop可以跳過該步驟)

快捷一點可以使用 scp 命令將配置文件拷貝覆蓋到其他機器

scp yarn-site.xml skyler@slave1:/hadoopdir/etc/hadoop/
scp mapred-site.xml skyler@slave1:/hadoopdir/etc/hadoop/
…其他datanode機器同理

四、重新啓動集羣的Hdfs和Yarn服務

在namenode機器上分別對hdfs和yarn服務進行重啓   

sbin/stop-dfs.sh
sbin/start-dfs.sh
sbin/stop-yarn.sh
sbin/start-yarn.sh

五、 開啓日誌監控服務進程

在nodenode機器上執行

sbin/mr-jobhistory-daemon.sh start historyserver

命令,執行完成後使用jps命令查看是否啓動成功,若啓動成功則會顯示出JobHistoryServer服務

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章