簡體   English   中英

如何減少Hadoop中從屬節點的心跳時間

[英]How to decrease heartbeat time of slave nodes in Hadoop

我正在研究AWS EMR。

我想盡快獲得死亡任務節點的信息。 但根據hadoop的默認設置,心跳每10分鍾共享一次。

這是mapred-default中的默認鍵值對-mapreduce.jobtracker.expire.trackers.interval:600000ms

我試圖使用- 此鏈接將默認值修改為6000ms

之后,無論何時從EMR集群中終止任何ec2機器,我都無法看到狀態變化那么快。(在6秒內)

資源管理器REST API- http:// MASTER_DNS_NAME:8088 / ws / v1 / cluster / nodes

問題-

  1. 在正在運行的EMR集群(Hadoop集群)中檢查mapreduce.jobtracker.expire.trackers.interval值的命令是什么?
  2. 這是我用來獲取狀態更改的正確鍵嗎? 如果不是,請提出其他解決方案。
  3. 資源管理器UI中節點的DECOMMISSIONING與DECOMMISSIONED與LOST狀態之間有什么區別?

更新資料

我嘗試了很多次,但是顯示出模棱兩可的行為。 有時,它進入了DECOMMISSIONING / DECOMMISIONED狀態,有時它在10分鍾后直接變成了LOST狀態。

我需要快速更改狀態,以便觸發一些事件。

這是我的示例代碼-

List<Configuration> configurations = new ArrayList<Configuration>();

        Configuration mapredSiteConfiguration = new Configuration();
        mapredSiteConfiguration.setClassification("mapred-site");
        Map<String, String> mapredSiteConfigurationMapper = new HashMap<String, String>();
        mapredSiteConfigurationMapper.put("mapreduce.jobtracker.expire.trackers.interval", "7000");
        mapredSiteConfiguration.setProperties(mapredSiteConfigurationMapper);

        Configuration hdfsSiteConfiguration = new Configuration();
        hdfsSiteConfiguration.setClassification("hdfs-site");
        Map<String, String> hdfsSiteConfigurationMapper = new HashMap<String, String>();
        hdfsSiteConfigurationMapper.put("dfs.namenode.decommission.interval", "10");
        hdfsSiteConfiguration.setProperties(hdfsSiteConfigurationMapper);

        Configuration yarnSiteConfiguration = new Configuration();
        yarnSiteConfiguration.setClassification("yarn-site");
        Map<String, String> yarnSiteConfigurationMapper = new HashMap<String, String>();
        yarnSiteConfigurationMapper.put("yarn.resourcemanager.nodemanagers.heartbeat-interval-ms", "5000");
        yarnSiteConfiguration.setProperties(yarnSiteConfigurationMapper);

        configurations.add(mapredSiteConfiguration);
        configurations.add(hdfsSiteConfiguration);
        configurations.add(yarnSiteConfiguration);

這是我更改為AWS EMR(內部Hadoop)的設置,以減少從運行狀態更改為其他狀態(DECOMMISSIONING / DECOMMISIONED / LOST)之間的時間。

  1. 您可以使用“ hdfs getconf”。 請參考這篇文章從命令行獲取紗線配置

  2. 這些鏈接提供有關節點管理器運行狀況檢查以及您必須檢查的屬性的信息:

https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ClusterSetup.html

https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/NodeManager.html

請參閱以下鏈接中的“ yarn.resourcemanager.nodemanagers.heartbeat-interval-ms”:

https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

  1. 您的查詢在此鏈接中得到回答:

    https://issues.apache.org/jira/browse/YARN-914

請參考“附件”和“子任務”區域。 簡而言之,如果當前正在運行的應用程序主服務器和任務容器已正確關閉(和/或在其他不同節點中重新啟動),則可以說節點管理器已被建議停用(正常),否則為LOST。

更新

“ dfs.namenode.decommission.interval”用於HDFS數據節點的停用,如果僅關注節點管理器,則無所謂。 在特殊情況下,數據節點不必是計算節點。

嘗試用yarn.nm.liveness-monitor.expiry-interval-ms(默認值為600000-這就是為什么您報告狀態在10分鍾內更改為LOST,並根據需要將其設置為較小的值),而不是mapreduce.jobtracker.expire .trackers.interval。

您已將“ yarn.resourcemanager.nodemanagers.heartbeat-interval-ms”設置為5000,這意味着,心跳將在5秒內發送到資源管理器一次,而默認值為1000。根據需要將其設置為較小的值。

  1. hdfs getconf -confKey mapreduce.jobtracker.expire.trackers.interval

  2. 如另一個答案中所述:應當根據您的網絡設置yarn.resourcemanager.nodemanagers.heartbeat-interval-ms ,如果您的網絡具有較高的延遲,則應設置一個更大的值。

3.當有正在運行的容器時,它處於“ 退役”狀態,並且等待它們完成,以便那些節點可以退役。

當它在此過程中停留太長時間時,它處於丟失狀態。 經過設置的超時並且無法完成節點的退役后,將達到此狀態。

DECOMMISSIONED是節點的退役完成。

參考: 調整正在運行的群集的大小

對於YARN NodeManager停用,您可以通過在/etc/hadoop/conf/yarn-site.xml;設置yarn.resourcemanager.decommissioning.timeout來手動調整節點等待停用的時間/etc/hadoop/conf/yarn-site.xml; 此設置是動態傳播的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM