簡體   English   中英

AWS EMR如何調整大小

[英]How AWS EMR resize

我今天在使用AWS EMR時遇到了一些問題。

EMR為我們調整群集大小提供了非常簡單的方法,添加刪除一些節點很容易。

在apache hadoop中,我們可以修改slaves文件來更改添加或刪除節點。 但我發現EMR中的slaves文件只包含localhost ,我找不到任何其他配置來指示slave的位置。

EMR如何在主節點中添加或刪除群集中的節點,甚至沒有重啟過程?

master和slaves文件僅由shell腳本使用,如start-all.sh,start-dfs.sh等。這些文件不會被hadoop中的任何其他函數使用。 從hadoop集群角度來看,這些文件未定義namenode,secondary namenode,worker節點的位置。 EMR未使用這些shell腳本來啟動集群。 core-site.xml中的屬性fs.default.namefs.defaultFS定義namenode主機。 以此配置開頭的所有數據節點都將報告給namenode並添加到集群中。 類似地,resourcemanager主機在所有節點的yarn-site.xml中定義。

我們不需要重新啟動集群中的任何進程來添加新節點。 一旦datanode啟動,它將報告給namenode,這樣節點將為HDFS做出貢獻。 類似地,一旦nodemanager啟動,它將向集群的資源管理器報告,它將為處理層做出貢獻。

在EMR中,我們有3種類型的節點。

  • 主節點
  • 核心節點
  • 任務節點

對於EMR集群,主節點將只有一個。 該節點是具有namenode和所有主服務的節點,如Resourcemanager,HBase Master等。

核心節點是具有存儲和處理能力的節點,這意味着它具有數據節點和節點管理器。 我們可以增加核心節點的數量,但我們不能減少數量,因為它會導致數據丟失。

任務節點是僅具有處理能力的節點。 這基本上用於服務瞬態負載。 這只有nodemanager。 沒有數據節點與此節點關聯。 我們可以增加或減少任務節點的數量。

在調整群集大小時,現有群集不會受到干擾。 在EMR中不調用start-all.sh,stop-all.sh等腳本。 它啟動單個服務並啟動集群。 因此不考慮主文件和從屬文件中的條目。

您可以通過AWS控制台擴展/收縮群集。 在此輸入圖像描述

使用resize選項更改群集的大小。

您還可以通過控制台將“任務”節點添加到群集。

在AWS EMR上使用自動擴展,您可以在群集上的節點中擴展和擴展。 可以使用Cloudwatch指標(YARNMemoryAvailablePercentage和ContainerPendingRatio)觸發橫向擴展操作。 以下示例政策

    "AutoScalingPolicy":
{
 "Constraints":
  {
   "MinCapacity": 10,
   "MaxCapacity": 50
  },

 "Rules":
 [
  {"Name": "Compute-scale-up",
   "Description": "Scale out based on ContainerPending Mterics",
   "Action":
    {
     "SimpleScalingPolicyConfiguration":
      {"AdjustmentType": "CHANGE_IN_CAPACITY",
       "ScalingAdjustment": 1,
       "CoolDown":0}
  },
   "Trigger":
    {"CloudWatchAlarmDefinition":
      {"AlarmNamePrefix": "compute-scale-up",
       "ComparisonOperator": "GREATER_THAN_OR_EQUAL",
       "EvaluationPeriods": 3,
       "MetricName": "ContainerPending",
       "Namespace": "AWS/ElasticMapReduce",
       "Period": 300,
       "Statistic": "AVERAGE",
       "Threshold": 10,
       "Unit": "COUNT",
       "Dimensions":
        [
          {"Key": "JobFlowId",
           "Value": "${emr:cluster_id}"}
        ]
      }
    }
  },
  {"Name": "Compute-scale-down",
   "Description": "Scale in",
   "Action":
    {
      "SimpleScalingPolicyConfiguration":
      {"AdjustmentType": "CHANGE_IN_CAPACITY",
       "ScalingAdjustment": -1,
       "CoolDown":300}
    },
   "Trigger":
    {"CloudWatchAlarmDefinition":
      {"AlarmNamePrefix": "compute-scale-down",
       "ComparisonOperator": "GREATER_THAN_OR_EQUAL",
       "EvaluationPeriods": 3,
       "MetricName": "MemoryAvailableMB",
       "Namespace": "AWS/ElasticMapReduce",
       "Period": 300,
       "Statistic": "AVERAGE",
       "Threshold": 24000,
       "Unit": "COUNT",
       "Dimensions":
        [
          {"Key": "JobFlowId",
           "Value": "${emr:cluster_id}"}
        ]
      }
    }
  }
 ]
}

您可以參考此博客了解更多詳情https://aws.amazon.com/blogs/big-data/dynamically-scale-applications-on-amazon-emr-with-auto-scaling/

暫無
暫無

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

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