Azure HDInsight クラスターを自動的にスケール調整するAutomatically scale Azure HDInsight clusters

重要

自動スケーリング機能は、2019年 5月 8日より後に作成された Spark、Hive、および MapReduce のクラスターでのみ機能します。The Autoscale feature only works for Spark, Hive and MapReduce clusters created after May 8th 2019.

Azure HDInsight のクラスター自動スケーリング機能では、クラスター内のワーカー ノードの数が自動的にスケールアップおよびスケールダウンされます。Azure HDInsight’s cluster Autoscale feature automatically scales the number of worker nodes in a cluster up and down. 現在、クラスター内の他の種類のノードはスケーリングできません。Other types of nodes in the cluster can't be scaled currently. 新しい HDInsight クラスターの作成中に、ワーカー ノードの最小数と最大数を設定できます。During the creation of a new HDInsight cluster, a minimum and maximum number of worker nodes can be set. その後、自動スケーリングによって分析負荷のリソース要件が監視され、ワーカー ノードの数がスケールアップまたはスケールダウンされます。Autoscale then monitors the resource requirements of the analytics load and scales the number of worker nodes up or down. この機能に対して追加料金は発生しません。There's no additional charge for this feature.

クラスターの互換性Cluster compatibility

次の表では、自動スケーリング機能と互換性のあるクラスターの種類とバージョンについて説明します。The following table describes the cluster types and versions that are compatible with the Autoscale feature.

VersionVersion SparkSpark HiveHive LLAPLLAP hbaseHBase KafkaKafka StormStorm MLML
HDInsight 3.6 (ESP なし)HDInsight 3.6 without ESP はい (2.3 のみ)Yes 2.3 Only はいYes いいえNo いいえNo いいえNo いいえNo いいえNo
HDInsight 4.0 (ESP なし)HDInsight 4.0 without ESP はいYes はいYes いいえNo いいえNo いいえNo いいえNo いいえNo
HDInsight 3.6 (ESP あり)HDInsight 3.6 with ESP はい (2.3 のみ)Yes 2.3 Only はいYes いいえNo いいえNo いいえNo いいえNo いいえNo
HDInsight 4.0 (ESP あり)HDInsight 4.0 with ESP はいYes はいYes いいえNo いいえNo いいえNo いいえNo いいえNo

動作のしくみHow it works

HDInsight クラスターでは、負荷ベースのスケーリングまたはスケジュール ベースのスケーリングを選択できます。You can choose load-based scaling or schedule-based scaling for your HDInsight cluster. 負荷ベースのスケーリングでは、ユーザーが設定した範囲内でクラスター内のノードの数が変更され、最適な CPU 使用率と最小のランニング コストが保証されます。Load-based scaling changes the number of nodes in your cluster, within a range that you set, to ensure optimal CPU utilization and minimize running cost.

スケジュール ベースのスケーリングでは、特定の時点で有効な条件に基づいて、クラスター内のノードの数が変更されます。Schedule-based scaling changes the number of nodes in your cluster based on conditions that take effect at specific times. これらの条件により、目的のノード数にクラスターがスケーリングされます。These conditions scale the cluster to a desired number of nodes.

メトリックの監視Metrics monitoring

自動スケールはクラスターを継続的に監視し、次のメトリックを収集します。Autoscale continuously monitors the cluster and collects the following metrics:

  • 保留中の CPU の合計: すべての保留中のコンテナーの実行を開始するために必要なコアの総数。Total Pending CPU: The total number of cores required to start execution of all pending containers.
  • 保留中のメモリの合計: すべての保留中のコンテナーの実行を開始するために必要なメモリの合計 (MB 単位)。Total Pending Memory: The total memory (in MB) required to start execution of all pending containers.
  • 空き CPU の合計: アクティブなワーカー ノード上のすべての未使用のコアの合計。Total Free CPU: The sum of all unused cores on the active worker nodes.
  • 空きメモリの合計: アクティブなワーカー ノード上の未使用のメモリの合計 (MB 単位)。Total Free Memory: The sum of unused memory (in MB) on the active worker nodes.
  • ノードごとの使用済みメモリ: ワーカー ノード上の負荷。Used Memory per Node: The load on a worker node. 10 GB のメモリが使用されているワーカー ノードは、使用済みメモリが 2 GB のワーカー ノードより多くの負荷がかかっていると見なされます。A worker node on which 10 GB of memory is used, is considered under more load than a worker with 2 GB of used memory.
  • ノードごとのアプリケーション マスターの数: ワーカー ノード上で実行されているアプリケーション マスター (AM) コンテナーの数。Number of Application Masters per Node: The number of Application Master (AM) containers running on a worker node. 2 つの AM コンテナーをホストしているワーカー ノードは、ホストしている AM コンテナーがないワーカー ノードより重要であると見なされます。A worker node that is hosting two AM containers, is considered more important than a worker node that is hosting zero AM containers.

上のメトリックは 60 秒ごとにチェックされます。The above metrics are checked every 60 seconds. 自動スケーリングでは、これらのメトリックに基づいてスケールアップおよびスケールダウンの決定が行われます。Autoscale makes scale-up and scale-down decisions based on these metrics.

負荷ベースのクラスターのスケールアップLoad-based cluster scale-up

次の条件が検出されると、自動スケーリングによりスケールアップ要求が発行されます。When the following conditions are detected, Autoscale will issue a scale-up request:

  • 保留中の CPU の合計が空き CPU の合計を超えて 3 分以上が経過した。Total pending CPU is greater than total free CPU for more than 3 minutes.
  • 保留中のメモリの合計が空きメモリの合計を超えて 3 分以上が経過した。Total pending memory is greater than total free memory for more than 3 minutes.

HDInsight サービスによって、現在の CPU とメモリの要件を満たすために必要な新しいワーカー ノードの数が計算された後、必要な数のノードを追加するスケールアップ要求が発行されます。The HDInsight service calculates how many new worker nodes are needed to meet the current CPU and memory requirements, and then issues a scale-up request to add the required number of nodes.

負荷ベースのクラスターのスケールダウンLoad-based cluster scale-down

次の条件が検出されると、自動スケーリングによりスケールダウン要求が発行されます。When the following conditions are detected, Autoscale will issue a scale-down request:

  • 保留中の CPU の合計が空き CPU の合計を下回って 10 分以上が経過した。Total pending CPU is less than total free CPU for more than 10 minutes.
  • 保留中のメモリの合計が空きメモリの合計を下回って 10 分以上が経過した。Total pending memory is less than total free memory for more than 10 minutes.

ノードごとの AM コンテナーの数および現在の CPU とメモリの要件に基づき、自動スケーリングにより、特定の数のノードを削除する要求が発行されます。Based on the number of AM containers per node and the current CPU and memory requirements, Autoscale issues a request to remove a certain number of nodes. また、サービスでは、現在のジョブの実行に基づいて、削除候補のノードも検出されます。The service also detects which nodes are candidates for removal based on current job execution. スケールダウン操作では、最初にノードの使用が停止された後、クラスターから削除されます。The scale down operation first decommissions the nodes, and then removes them from the cluster.

作業開始Get started

負荷ベースの自動スケーリングでクラスターを作成するCreate a cluster with load-based Autoscaling

クラスターで自動スケーリングを使用するには、クラスターを作成するときに、 [自動スケーリングの有効化] オプションを有効にする必要があり ます。To use Autoscale on a cluster, the Enable autoscale option must be enabled when the cluster is created.

負荷ベースのスケーリングで自動スケーリング機能を有効にするには、通常のクラスターの作成プロセスの一部として、次の手順を行います。To enable the Autoscale feature with load-based scaling, complete the following steps as part of the normal cluster creation process:

  1. [Configuration + pricing](構成と価格) タブで、 [自動スケーリングの有効化] チェックボックスをオンにします。On the Configuration + pricing tab, check the Enable autoscale checkbox.

  2. [Autoscale type](自動スケーリングの種類) で、 [Load-based](負荷ベース) を選択します。Select Load-based under Autoscale type.

  3. 次のプロパティに希望する値を入力します。Enter the desired values for the following properties:

    • [ワーカー ノード] の初期の [Number of nodes](ノードの数)Initial Number of nodes for Worker node.
    • ワーカー ノードの [最小] の数。Min number of worker nodes.
    • ワーカー ノードの [最大] の数。Max number of worker nodes.

    ワーカー ノードの負荷ベースの自動スケーリングを有効にする

ワーカー ノードの初期の数には、最小数から最大数までの数を指定する必要があります。The initial number of worker nodes must fall between the minimum and maximum, inclusive. この値によって、クラスターが作成されるときのその初期サイズが定義されます。This value defines the initial size of the cluster when it's created. ワーカー ノードの最小数は、3 以上に設定する必要がありますThe minimum number of worker nodes should be set to three or more. . クラスターを 3 つのノード未満にスケーリングすると、ファイル レプリケーションが不十分なためにセーフ モードでスタックする場合があります。Scaling your cluster to fewer than three nodes can result in it getting stuck in safe mode because of insufficient file replication. 詳細については、「[セーフ モードでスタックする]( https://docs.microsoft.com/ azure/hdinsight/hdinsight-scaling-best-practices#getting-stuck-in-safe-mode)」を参照してください。See [Getting stuck in safe mode]( https://docs.microsoft.com/ azure/hdinsight/hdinsight-scaling-best-practices#getting-stuck-in-safe-mode) for more information.

スケジュール ベースの自動スケーリングでクラスターを作成するCreate a cluster with schedule-based Autoscaling

スケジュール ベースのスケーリングで自動スケーリング機能を有効にするには、通常のクラスターの作成プロセスの一部として、次の手順を行います。To enable the Autoscale feature with schedule-based scaling, complete the following steps as part of the normal cluster creation process:

  1. [Configuration + pricing](構成と価格) タブで、 [自動スケーリングの有効化] チェックボックスをオンにします。On the Configuration + pricing tab, check the Enable autoscale checkbox.

  2. [ワーカー ノード][Number of nodes](ノードの数) を入力します。これは、クラスターのスケールアップの制限を制御します。Enter the Number of nodes for Worker node, which controls the limit for scaling up the cluster.

  3. [Autoscale type](自動スケーリングの種類) で、 [Schedule-based](スケジュール ベース) オプションを選択ます。Select the option Schedule-based under Autoscale type.

  4. [構成] をクリックして [Autoscale configuration](自動スケーリングの構成) ウィンドウを開きます。Click Configure to open the Autoscale configuration window.

  5. タイムゾーンを選択し、 [+ Add condition](+ 条件の追加) をクリックしますSelect your timezone and then click + Add condition

  6. 新しい条件を適用する曜日を選択します。Select the days of the week that the new condition should apply to.

  7. 条件を有効にする時刻と、クラスターのスケーリング後のノード数を編集します。Edit the time the condition should take effect and the number of nodes that the cluster should be scaled to.

  8. 必要に応じて、さらに条件を追加します。Add more conditions if needed.

    ワーカー ノードのスケジュールベースの作成を有効にする

ノードの数は、3 から条件追加前に入力したワーカー ノードの最大数の間にする必要があります。The number of nodes must be between 3 and the maximum number of worker nodes that you entered before adding conditions.

最後の作成手順Final creation steps

負荷ベースとスケジュール ベースの両方のスケーリングに対して、 [ノード サイズ] の下のドロップダウン リストから VM を選択して、ワーカー ノードの VM の種類を選択します。For both load-based and schedule-based scaling, select the VM type for worker nodes by selecting a VM from the drop-down list under Node size. ノードの種類ごとに VM の種類を選択すると、クラスター全体の概算のコスト範囲を表示できるようになります。After you choose the VM type for each node type, you can see the estimated cost range for the whole cluster. 予算に合わせて VM の種類を調整します。Adjust the VM types to fit your budget.

ワーカー ノードのノード サイズに対するスケジュールベースの自動スケーリングを有効にする

サブスクリプションには、リージョンごとに容量のクォータがあります。Your subscription has a capacity quota for each region. ヘッド ノードのコアの総数とワーカー ノードの最大数の合計が容量のクォータを超えることはできません。The total number of cores of your head nodes combined with the maximum number of worker nodes can’t exceed the capacity quota. ただし、このクォータはソフト制限です。それを簡単に増やすためのサポート チケットをいつでも作成できます。However, this quota is a soft limit; you can always create a support ticket to get it increased easily.

注意

合計のコア クォータ制限を超えた場合は、"最大ノードがこのリージョン内の使用可能なコア数を超えました。別のリージョンを選択するか、またはサポートに連絡してクォータを増やしてください" というエラー メッセージが表示されます。If you exceed the total core quota limit, You will receive an error message saying 'the maximum node exceeded the available cores in this region, please choose another region or contact the support to increase the quota.'

Azure portal を使用した HDInsight クラスターの作成に関する詳細については、「Azure Portal を使用した HDInsight の Linux ベースのクラスターの作成」を参照してください。For more information on HDInsight cluster creation using the Azure portal, see Create Linux-based clusters in HDInsight using the Azure portal.

Resource Manager テンプレートでクラスターを作成するCreate a cluster with a Resource Manager template

負荷ベースの自動スケーリングLoad-based autoscaling

以下の JSON スニペットに示すように、プロパティ minInstanceCountmaxInstanceCountcomputeProfile > workernode セクションに autoscale ノードを追加することで、Azure Resource Manager テンプレートで負荷ベースの自動スケーリングを使用する HDInsight クラスターを作成できます。You can create an HDInsight cluster with load-based Autoscaling an Azure Resource Manager template, by adding an autoscale node to the computeProfile > workernode section with the properties minInstanceCount and maxInstanceCount as shown in the json snippet below.

{
  "name": "workernode",
  "targetInstanceCount": 4,
  "autoscale": {
      "capacity": {
          "minInstanceCount": 3,
          "maxInstanceCount": 10
      }
  },
  "hardwareProfile": {
      "vmSize": "Standard_D13_V2"
  },
  "osProfile": {
      "linuxOperatingSystemProfile": {
          "username": "[parameters('sshUserName')]",
          "password": "[parameters('sshPassword')]"
      }
  },
  "virtualNetworkProfile": null,
  "scriptActions": []
}

Resource Manager テンプレートを使用してクラスターを作成する方法の詳細については、「Resource Manager テンプレートを使用して HDInsight で Apache Hadoop クラスターを作成する」を参照してください。For more information on creating clusters with Resource Manager templates, see Create Apache Hadoop clusters in HDInsight by using Resource Manager templates.

スケジュール ベースの自動スケーリングSchedule-based autoscaling

computeProfile > workernode セクションに autoscale ノードを追加することで、Azure Resource Manager テンプレートでスケジュール ベースの自動スケーリングを使用する HDInsight クラスターを作成できます。You can create an HDInsight cluster with schedule-based Autoscaling an Azure Resource Manager template, by adding an autoscale node to the computeProfile > workernode section. autoscale ノードには、timezone および変更を実行するタイミングが記述されている schedule を含む recurrence が含まれます。The autoscale node contains a recurrence that has a timezone and schedule that describes when the change will take place.

{
  "autoscale": {
    "recurrence": {
      "timeZone": "Pacific Standard Time",
      "schedule": [
        {
          "days": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday"
          ],
          "timeAndCapacity": {
            "time": "11:00",
            "minInstanceCount": 10,
            "maxInstanceCount": 10
          }
        },
      ]
    }
  },
  "name": "workernode",
  "targetInstanceCount": 4,
}

実行中のクラスターの自動スケーリングの有効化および無効化Enable and disable Autoscale for a running cluster

Azure ポータルの使用Using the Azure portal

実行中のクラスターで自動スケーリングを有効にするには、 [設定][クラスター サイズ] を選択します。To enable Autoscale on a running cluster, select Cluster size under Settings. [自動スケーリングの有効化] をクリックします。Then click Enable autoscale. 使用する自動スケーリングの種類を選択し、負荷ベースまたはスケジュール ベースのスケーリングのオプションを入力します。Select the type of Autoscale that you want and enter the options for load-based or schedule-based scaling. 最後に、 [保存] をクリックします。Finally, click Save.

ワーカー ノードの実行中のクラスターに対するスケジュールベースの自動スケーリングを有効にする

REST API の使用Using the REST API

REST API を使用して、実行中のクラスターでの自動スケーリングを有効または無効にするには、下のコード スニペットに示すように、自動スケーリング エンドポイントへの POST 要求を作成します。To enable or disable Autoscale on a running cluster using the REST API, make a POST request to the Autoscale endpoint as shown in the code snippet below:

https://management.azure.com/subscriptions/{subscription Id}/resourceGroups/{resourceGroup Name}/providers/Microsoft.HDInsight/clusters/{CLUSTERNAME}/roles/workernode/autoscale?api-version=2018-06-01-preview

要求ペイロードでは適切なパラメーターを使用します。Use the appropriate parameters in the request payload. 自動スケーリングを有効にするには、下の json ペイロードを使用できます。The json payload below could be used to enable Autoscale. 自動スケーリングを無効にするには、ペイロード {autoscale: null} を使用します。Use the payload {autoscale: null} to disable Autoscale.

{ autoscale: { capacity: { minInstanceCount: 3, maxInstanceCount: 2 } } }

すべてのペイロード パラメーターの完全な説明については、前のセクションの負荷ベースの自動スケーリングの有効化を参照してください。See the previous section on enabling load-based autoscale for a full description of all payload parameters.

ベスト プラクティスBest practices

負荷ベースまたはスケジュール ベースのスケーリングを選択するChoosing load-based or schedule-based scaling

どちらのモードを選択するかを決定する前に、次の要因を検討してください。Consider the following factors before making a decision on which mode to choose:

  • クラスターの作成時に自動スケーリングを有効にします。Enable Autoscale during cluster creation.
  • ノードの最小数は、少なくとも 3 つにする必要があります。The minimum number of nodes should be at least three.
  • 負荷変動: クラスターの負荷は、特定の日の特定の時刻に一貫性のあるパターンに従っていますか。Load variance: does the load of the cluster follow a consistent pattern at specific times, on specific days. そうでない場合、負荷ベースのスケジューリングが適切な選択肢になります。If not, load based scheduling is a better option.
  • SLA 要件:自動スケーリングは、予測型ではなく反応型です。SLA requirements: Autoscale scaling is reactive instead of predictive. 負荷が増加し始めるタイミングと、クラスターがそのターゲット サイズに達している必要があるタイミングとの間に十分な遅延がありますか。Will there be a sufficient delay between when the load starts to increase and when the cluster needs to be at its target size? 厳密な SLA 要件があり、負荷が、固定した既知のパターンである場合は、「スケジュール ベース」が適切な選択肢になります。If there are strict SLA requirements and the load is a fixed known pattern, ‘schedule based’ is a better option.

スケールアップ操作またはスケールダウン操作の待ち時間について検討するConsider the latency of scale up or scale down operations

スケーリング操作が完了するには 10 分から 20 分かかる可能性があります。It can take 10 to 20 minutes for a scaling operation to complete. カスタマイズしたスケジュールを設定する場合は、この遅延を考慮してください。When setting up a customized schedule, plan for this delay. たとえば、午前 9時にクラスター サイズを 20 にする必要がある場合は、スケーリング操作が午前 9時までに完了するように、スケジュールのトリガーを午前 8時 30分などの早い時刻に設定する必要があります。For example, if you need the cluster size to be 20 at 9:00 AM, set the schedule trigger to an earlier time such as 8:30 AM so that the scaling operation has completed by 9:00 AM.

スケール ダウンの準備Preparation for scaling down

クラスターのスケール ダウン プロセス中、自動スケーリングはターゲット サイズを満たすためにノードを使用停止にします。During cluster scaling down process, Autoscale will decommission the nodes to meet the target size. これらのノードに実行中のタスクがある場合、自動スケーリングはそれらのタスクが完了するまで待機します。If there are running tasks on those nodes, Autoscale will wait until the tasks are completed. 各ワーカー ノードは HDFS でのロールも果たすため、一時データは残りのノードに移動されます。Since each worker node also serves a role in HDFS, the temp data will be shifted to the remaining nodes. したがって、残りのノードに、すべての一時データをホストするのに十分なスペースがあることを確認する必要があります。So you should make sure there's enough space on the remaining nodes to host all the temp data.

実行中のジョブは引き続き実行されて終了します。The running jobs will continue to run and finish. 保留中のジョブは、少ない数の使用可能ワーカー ノードで通常どおりにスケジュールされるのを待ちます。The pending jobs will wait to be scheduled as normal with fewer available worker nodes.

クラスターの最小サイズMinimum cluster size

クラスターを 3 つ未満のノードにスケールダウンしないでください。Do not scale your cluster down to fewer than three nodes. クラスターを 3 つ未満のノードにスケーリングすると、ファイル レプリケーションが不十分なためにセーフ モードでスタックする場合があります。Scaling your cluster to fewer than three nodes can result in it getting stuck in safe mode because of insufficient file replication. 詳細については、「[セーフ モードでスタックする]( https://docs.microsoft.com/ azure/hdinsight/hdinsight-scaling-best-practices#getting-stuck-in-safe-mode)」を参照してください。See [Getting stuck in safe mode]( https://docs.microsoft.com/ azure/hdinsight/hdinsight-scaling-best-practices#getting-stuck-in-safe-mode) for more information.

監視Monitoring

クラスターの状態Cluster status

Azure portal に表示されるクラスターの状態は、自動スケーリング アクティビティの監視に役立ちます。The cluster status listed in the Azure portal can help you monitor Autoscale activities.

ワーカー ノードのクラスター状態に対する負荷ベースの自動スケーリングを有効にする

表示される可能性があるすべてのクラスター状態メッセージを、以下の一覧で説明します。All of the cluster status messages that you might see are explained in the list below.

クラスターの状態Cluster status 説明Explanation
実行中Running クラスターは正常に動作しています。The cluster is operating normally. 以前のすべての自動スケーリング アクティビティは、正常に完了しました。All of the previous Autoscale activities have completed successfully.
更新中Updating クラスターの自動スケーリング構成は更新されています。The cluster Autoscale configuration is being updated.
HDInsight 構成HDInsight configuration クラスターのスケールアップまたはスケールダウン操作が進行中です。A cluster scale up or scale down operation is in progress.
更新エラーUpdating Error 自動スケーリング構成の更新中に HDInsight で問題が発生しました。HDInsight encountered issues during the Autoscale configuration update. お客様は、更新の再試行または自動スケーリングの無効化を選択できます。Customers can choose to either retry the update or disable autoscale.
ErrorError クラスターに何らかの問題があり、使用できません。Something is wrong with the cluster, and it isn't usable. このクラスターを削除し、新しいクラスターを作成してください。Delete this cluster and create a new one.

クラスターの現在のノード数を見るには、クラスターの [概要] ページの [クラスター サイズ] グラフに移動するか、または [設定][クラスター サイズ] をクリックします。To view the current number of nodes in your cluster, go to the Cluster size chart on the Overview page for your cluster, or click Cluster size under Settings.

操作の履歴Operation history

クラスター メトリックの一部として、クラスターのスケールアップおよびスケールダウンの履歴を表示できます。You can view the cluster scale-up and scale-down history as part of the cluster metrics. また、過去の 1 日、1 週間、またはその他の期間中のすべてのスケーリング アクションを一覧表示することもできます。You can also list all scaling actions over the past day, week, or other period of time.

[監視][メトリック] を選択します。Select Metrics under Monitoring. その後、 [メトリック] ドロップダウン ボックスから [メトリックの追加][Number of Active Workers](アクティブなワーカーの数) をクリックします。Then click Add metric and Number of Active Workers from the Metric dropdown box. 右上にあるボタンをクリックして、時間範囲を変更します。Click the button in the upper right to change the time range.

ワーカー ノードのスケジュールベースの自動スケーリング メトリックを有効にする

次の手順Next steps