Azure HDInsight クラスターのスケーリングScale Azure HDInsight clusters

HDInsight では、クラスター内のワーカー ノードの数をスケールアップおよびスケールダウンできるようにすることで、柔軟性が提供されます。HDInsight provides elasticity by giving you the option to scale up and scale down the number of worker nodes in your clusters. この柔軟性により、クラスターを数時間後または週末に縮小したり、ビジネスの需要のピーク時に拡張したりできます。This elasticity, allows you to shrink a cluster after hours or on weekends, and expand it during peak business demands.

定期的なバッチ処理がある場合は、操作の数分前に HDInsight クラスターをスケールアップして、クラスターに十分なメモリと CPU パワーを持たせることができます。If you have periodic batch processing, the HDInsight cluster can be scaled up a few minutes prior to that operation, so that your cluster has adequate memory and CPU power.  その後、処理が完了し、使用量が再び減少したら、HDInsight クラスターをスケールダウンしてワーカー ノードの数を減らすことができます。 Later, after the processing is done, and usage goes down again, you can scale down the HDInsight cluster to fewer worker nodes.

以下に示す方法のいずれかを使用して、クラスターを手動でスケーリングできます。または、自動スケーリング オプションを使用して、CPU、メモリ、およびその他のメトリックに応じてシステムを自動的にスケールアップ/ダウンします。You can scale a cluster manually using one of the methods outlined below, or use autoscale options to have the system automatically scale up and down in response to CPU, memory, and other metrics.

注意

HDInsight バージョン 3.1.3 以降を使用しているクラスターのみがサポートされます。Only clusters with HDInsight version 3.1.3 or higher are supported. クラスターのバージョンがわからない場合、[プロパティ] ページを確認できます。If you are unsure of the version of your cluster, you can check the Properties page.

クラスターをスケーリングするユーティリティUtilities to scale clusters

Microsoft では、クラスターをスケーリングするための次のユーティリティを提供しています。Microsoft provides the following utilities to scale clusters:

ユーティリティUtility [説明]Description
PowerShell AzPowerShell Az Set-AzHDInsightClusterSize -ClusterName <Cluster Name> -TargetInstanceCount <NewSize>Set-AzHDInsightClusterSize -ClusterName <Cluster Name> -TargetInstanceCount <NewSize>
PowerShell AzureRMPowerShell AzureRM Set-AzureRmHDInsightClusterSize -ClusterName <Cluster Name> -TargetInstanceCount <NewSize>Set-AzureRmHDInsightClusterSize -ClusterName <Cluster Name> -TargetInstanceCount <NewSize>
Azure CLIAzure CLI az hdinsight resize --resource-group <Resource group> --name <Cluster Name> --target-instance-count <NewSize>az hdinsight resize --resource-group <Resource group> --name <Cluster Name> --target-instance-count <NewSize>
Azure CLIAzure CLI azure hdinsight cluster resize <clusterName> <Target Instance Count>azure hdinsight cluster resize <clusterName> <Target Instance Count>
Azure PortalAzure portal HDInsight クラスターのウィンドウを開き、左側のメニューの [クラスター サイズ] を選択し、[クラスター サイズ] ウィンドウでワーカー ノードの数を入力して、[保存] を選択します。Open your HDInsight cluster pane, select Cluster size on the left-hand menu, then on the Cluster size pane, type in the number of worker nodes, and select Save.

Azure portal のスケール クラスター オプション

これらの方法のいずれかを使用すると、HDInsight クラスターを数分以内にスケールアップまたはスケールダウンできます。Using any of these methods, you can scale your HDInsight cluster up or down within minutes.

重要

  • Azure クラシック CLI は非推奨です。クラシック デプロイ モデルでのみ使用してください。The Azure classic CLI is deprecated and should only be used with the classic deployment model. その他すべてのデプロイについては、Azure CLI を使用してください。For all other deployments, use the Azure CLI.
  • PowerShell AzureRM モジュールは非推奨です。The PowerShell AzureRM module is deprecated. 可能な限り、Az モジュールを使用してください。Please use the Az module whenever possible.

スケーリング操作の影響Impact of scaling operations

実行中の HDInsight クラスターにノードを追加 (スケールアップ) するときに、保留中または実行中のジョブが影響を受けることはありません。When you add nodes to your running HDInsight cluster (scale up), any pending or running jobs will not be affected. スケーリング処理の実行中に新しいジョブを安全に送信できます。New jobs can be safely submitted while the scaling process is running. スケーリング操作が何らかの理由で失敗した場合、クラスターの機能状態が維持されるように失敗が処理されます。If the scaling operation fails for any reason, the failure will be handled to leave your cluster in a functional state.

ノードを削除 (スケールダウン) すると、保留中または実行中のジョブは、スケーリング操作の完了時に失敗します。If you remove nodes (scale down), any pending or running jobs will fail when the scaling operation completes. この失敗の原因は、スケーリング処理中にいくつかのサービスが再起動されることにあります。This failure is due to some of the services restarting during the scaling process. 手動のスケーリング操作中に、クラスターがセーフ モードでスタックするリスクもあります。There is also a risk that your cluster can get stuck in safe mode during a manual scaling operation.

データ ノード数を変更した場合の影響は、HDInsight でサポートされているクラスターの種類ごとに異なります。The impact of changing the number of data nodes varies for each type of cluster supported by HDInsight:

  • Apache HadoopApache Hadoop

    保留中または実行中のジョブに影響を与えることなく、実行中の Hadoop クラスター内の worker ノードの数をシームレスに増加できます。You can seamlessly increase the number of worker nodes in a Hadoop cluster that is running without impacting any pending or running jobs. 処理の進行中に新しいジョブを送信することもできます。New jobs can also be submitted while the operation is in progress. スケール設定処理の失敗は正常に処理され、クラスターは常に機能状態になります。Failures in a scaling operation are gracefully handled so that the cluster is always left in a functional state.

    データ ノードの数を減らして Hadoop クラスターのスケールを小さくした場合、クラスター内の一部のサービスが再起動されます。When a Hadoop cluster is scaled down by reducing the number of data nodes, some of the services in the cluster are restarted. この動作により、スケール設定処理の完了時に、実行中および保留中のすべてのジョブが失敗します。This behavior causes all running and pending jobs to fail at the completion of the scaling operation. ただし、処理が完了した後にジョブを再送信できます。You can, however, resubmit the jobs once the operation is complete.

  • Apache HBaseApache HBase

    実行中の HBase クラスターに対して、ノードの追加または削除をシームレスに実行できます。You can seamlessly add or remove nodes to your HBase cluster while it is running. 地域サーバーは、スケール設定処理の完了の数分以内に自動的に分散されます。Regional Servers are automatically balanced within a few minutes of completing the scaling operation. ただし、クラスターのヘッドノードにログインし、コマンド プロンプト ウィンドウから次のコマンドを実行して、地域サーバーを手動で分散することもできます。However, you can also manually balance the regional servers by logging in to the headnode of cluster and running the following commands from a command prompt window:

    pushd %HBASE_HOME%\bin
    hbase shell
    balancer
    

    HBase シェルの使用の詳細については、「HDInsight で Apache HBase の例を使用する」を参照してください。For more information on using the HBase shell, see Get started with an Apache HBase example in HDInsight.

  • Apache StormApache Storm

    実行中の Storm クラスターに対して、データ ノードの追加または削除をシームレスに実行できます。You can seamlessly add or remove data nodes to your Storm cluster while it is running. ただし、スケール設定処理が正常に完了した後、トポロジのバランス再調整が必要になります。However, after a successful completion of the scaling operation, you will need to rebalance the topology.

    バランス再調整は、次の 2 つの方法で実行できます。Rebalancing can be accomplished in two ways:

    • Storm Web UIStorm web UI

    • コマンド ライン インターフェイス (CLI) ツールCommand-line interface (CLI) tool

      詳細については、Apache Storm に関するドキュメントを参照してください。Refer to the Apache Storm documentation for more details.

      Storm Web UI は、HDInsight クラスターで使用できます。The Storm web UI is available on the HDInsight cluster:

      HDInsight Storm のスケールのバランス調整

      Storm トポロジのバランスを再調整する CLI コマンドの例を次に示します。Here is an example CLI command to rebalance the Storm topology:

      ## Reconfigure the topology "mytopology" to use 5 worker processes,
      ## the spout "blue-spout" to use 3 executors, and
      ## the bolt "yellow-bolt" to use 10 executors
      $ storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10
      

クラスターを安全にスケールする方法How to safely scale down a cluster

ジョブを実行してクラスターをスケールダウンするScale down a cluster with running jobs

スケールダウン操作中に実行中のジョブが失敗するのを回避するため、次の 3 つのことを試すことができます。To avoid having your running jobs fail during a scale down operation, you can try three things:

  1. ジョブが完了するのを待ってから、クラスターをスケールダウンする。Wait for the jobs to complete before scaling down your cluster.
  2. ジョブを手動で終了する。Manually end the jobs.
  3. スケーリング操作の完了後に、ジョブを再送信する。Resubmit the jobs after the scaling operation has concluded.

保留中または実行中のジョブの一覧を表示するには、次の手順に従って YARN Resource Manager UI を使用できます。To see a list of pending and running jobs, you can use the YARN Resource Manager UI, following these steps:

  1. Azure portal でご自身のクラスターを選択します。From the Azure portal, select your cluster. 手順については、「クラスターの一覧と表示」を参照してください。See List and show clusters for the instructions. このクラスターは、新しいポータル ページで開かれます。The cluster is opened in a new portal page.

  2. メイン ビューから、 [クラスター ダッシュボード] > [Ambari ホーム] に移動します。From the main view, navigate to Cluster dashboards > Ambari home. クラスターの資格情報を入力します。Enter your cluster credentials.

  3. Ambari UI から、左側のメニューにあるサービスの一覧で [YARN] を選択します。From the Ambari UI, select YARN on the list of services on the left-hand menu.

  4. [YARN] ページから [クイック リンク] を選択し、アクティブなヘッド ノードにポインターを置き、 [ResourceManager UI] を選択します。From the YARN page, select Quick Links and hover over the active head node, then select ResourceManager UI.

    Apache Ambari クイック リンク ResourceManager UI

https://<HDInsightClusterName>.azurehdinsight.net/yarnui/hn/cluster を使用すると ResourceManager UI に直接アクセスできます。You may directly access the ResourceManager UI with https://<HDInsightClusterName>.azurehdinsight.net/yarnui/hn/cluster.

ジョブの一覧が、現在の状態と共に表示されます。You see a list of jobs, along with their current state. このスクリーンショットでは、現在実行中のジョブが 1 つあります。In the screenshot, there's one job currently running:

ResourceManager UI アプリケーション

その実行中のアプリケーションを手動で中止するには、SSH シェルから次のコマンドを実行します。To manually kill that running application, execute the following command from the SSH shell:

yarn application -kill <application_id>

次に例を示します。For example:

yarn application -kill "application_1499348398273_0003"

セーフ モードでスタックするGetting stuck in safe mode

クラスターをスケールダウンすると、HDInsight は Apache Ambari 管理インターフェイスを使用して、まず不要なワーカー ノードを削除します。これにより、それらの HDFS ブロックが他のオンライン ワーカー ノードにレプリケートされます。When you scale down a cluster, HDInsight uses Apache Ambari management interfaces to first decommission the extra worker nodes, which replicate their HDFS blocks to other online worker nodes. その後、HDInsight によってクラスターが安全にスケールダウンされます。After that, HDInsight safely scales the cluster down. スケーリング操作中は、HDFS がセーフ モードになり、スケーリングが終了すると元の状態に戻ります。HDFS goes into safe mode during the scaling operation, and is supposed to come out once the scaling is finished. ただし、場合によっては、レプリケーション中のファイル ブロックが原因で、スケーリング操作中に HDFS がセーフ モードでスタックします。In some cases, however, HDFS gets stuck in safe mode during a scaling operation because of file block under-replication.

既定では、HDFS は 1 の dfs.replication 設定 (各ファイル ブロックの使用可能なコピーの数を制御する) で構成されます。By default, HDFS is configured with a dfs.replication setting of 1, which controls how many copies of each file block are available. ファイル ブロックの各コピーは、クラスターの別々のノードに格納されます。Each copy of a file block is stored on a different node of the cluster.

HDFS で想定されている数のブロックのコピーが使用できないことが検出されると、HDFS はセーフ モードになり、Ambari によってアラートが生成されます。When HDFS detects that the expected number of block copies aren't available, HDFS enters safe mode and Ambari generates alerts. スケーリング操作中に HDFS がセーフ モードになったが、その後、レプリケーションに必要な数のノードが検出されないためにセーフ モードを終了できない場合は、そのクラスターがセーフ モードでスタックする場合があります。If HDFS enters safe mode for a scaling operation, but then cannot exit safe mode because the required number of nodes are not detected for replication, the cluster can become stuck in safe mode.

セーフ モードがオンになっている場合のエラーの例Example errors when safe mode is turned on

org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /tmp/hive/hive/819c215c-6d87-4311-97c8-4f0b9d2adcf0. Name node is in safe mode.
org.apache.http.conn.HttpHostConnectException: Connect to active-headnode-name.servername.internal.cloudapp.net:10001 [active-headnode-name.servername. internal.cloudapp.net/1.1.1.1] failed: Connection refused

/var/log/hadoop/hdfs/ フォルダーから、クラスターがスケーリングされた時刻付近の名前ノード ログを確認すると、セーフ モードに入った時刻がわかります。You can review the name node logs from the /var/log/hadoop/hdfs/ folder, near the time when the cluster was scaled, to see when it entered safe mode. ログ ファイルの名前は Hadoop-hdfs-namenode-<active-headnode-name>.* です。The log files are named Hadoop-hdfs-namenode-<active-headnode-name>.*.

上記のエラーの根本原因は、Hive がクエリの実行中に HDFS 内の一時ファイルを利用することです。The root cause of the previous errors is that Hive depends on temporary files in HDFS while running queries. HDFS がセーフ モードになると、Hive は HDFS に書き込めなくなるため、クエリを実行できません。When HDFS enters safe mode, Hive cannot run queries because it cannot write to HDFS. HDFS 内の一時ファイルは、各ワーカー ノード VM にマウントされたローカル ドライブにあり、最低 3 つのレプリカにあるその他のワーカー ノード間でレプリケートされます。The temp files in HDFS are located in the local drive mounted to the individual worker node VMs, and replicated amongst other worker nodes at three replicas, minimum.

HDInsight がセーフ モードでスタックするのを防ぐ方法How to prevent HDInsight from getting stuck in safe mode

HDInsight がセーフ モードのままにならないようにする方法はいくつかあります。There are several ways to prevent HDInsight from being left in safe mode:

  • HDInsight をスケールダウンする前にすべての Hive ジョブを停止します。Stop all Hive jobs before scaling down HDInsight. または、実行中の Hive ジョブとの競合を回避するようにスケールダウン処理をスケジュールします。Alternately, schedule the scale down process to avoid conflicting with running Hive jobs.
  • スケールダウンする前に、HDFS 内にある Hive のスクラッチ tmp ディレクトリ ファイルを手動でクリーンアップします。Manually clean up Hive's scratch tmp directory files in HDFS before scaling down.
  • HDInsight を最低 3 つのワーカー ノードにスケールダウンするだけです。Only scale down HDInsight to three worker nodes, minimum. ワーカー ノードが 1 つにならないようにします。Avoid going as low as one worker node.
  • 必要に応じて、セーフ モードを終了するコマンドを実行します。Run the command to leave safe mode, if needed.

以下のセクションでは、これらのオプションについて説明します。The following sections describe these options.

すべての Hive ジョブを停止するStop all Hive jobs

すべての Hive ジョブを停止してから、1 つのワーカー ノードにスケールダウンします。Stop all Hive jobs before scaling down to one worker node. ワークロードがスケジュールされている場合は、Hive の処理が完了した後でスケールダウンします。If your workload is scheduled, then execute your scale-down after Hive work is done.

スケーリングの前に Hive ジョブを停止することで、tmp フォルダー内のスクラッチ ファイルの数を最小限に抑えることができます (存在する場合)。Stopping the Hive jobs before scaling, helps minimize the number of scratch files in the tmp folder (if any).

Hive のスクラッチ ファイルを手動でクリーンアップするManually clean up Hive's scratch files

Hive で一時ファイルが残っている場合は、これらのファイルを手動でクリーンアップしてからスケールダウンすることで、セーフ モードを回避できます。If Hive has left behind temporary files, then you can manually clean up those files before scaling down to avoid safe mode.

  1. hive.exec.scratchdir 構成プロパティを見て、Hive の一時ファイルに使用されている場所を確認します。Check which location is being used for Hive temporary files by looking at the hive.exec.scratchdir configuration property. このパラメーターは /etc/hive/conf/hive-site.xml 内で設定されます。This parameter is set within /etc/hive/conf/hive-site.xml:

    <property>
        <name>hive.exec.scratchdir</name>
        <value>hdfs://mycluster/tmp/hive</value>
    </property>
    
  2. Hive サービスを停止し、すべてのクエリとジョブが完了していることを確認します。Stop Hive services and be sure all queries and jobs are completed.

  3. 上記で見つかったスクラッチ ディレクトリ hdfs://mycluster/tmp/hive/ のコンテンツを一覧表示して、ファイルが含まれているかどうかを確認します。List the contents of the scratch directory found above, hdfs://mycluster/tmp/hive/ to see if it contains any files:

    hadoop fs -ls -R hdfs://mycluster/tmp/hive/hive
    

    ファイルが存在する場合の出力例は次のとおりです。Here is a sample output when files exist:

    sshuser@scalin:~$ hadoop fs -ls -R hdfs://mycluster/tmp/hive/hive
    drwx------   - hive hdfs          0 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c
    drwx------   - hive hdfs          0 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c/_tmp_space.db
    -rw-r--r--   3 hive hdfs         27 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c/inuse.info
    -rw-r--r--   3 hive hdfs          0 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c/inuse.lck
    drwx------   - hive hdfs          0 2017-07-06 20:30 hdfs://mycluster/tmp/hive/hive/c108f1c2-453e-400f-ac3e-e3a9b0d22699
    -rw-r--r--   3 hive hdfs         26 2017-07-06 20:30 hdfs://mycluster/tmp/hive/hive/c108f1c2-453e-400f-ac3e-e3a9b0d22699/inuse.info
    
  4. Hive がこれらのファイルの処理を終了していることがわかっている場合は、これらを削除できます。If you know Hive is done with these files, you can remove them. YARN ResourceManager UI のページを見て、Hive で実行中のクエリがないことを確認してください。Be sure that Hive does not have any queries running by looking in the Yarn ResourceManager UI page.

    HDFS からファイルを削除するコマンドラインの例:Example command line to remove files from HDFS:

    hadoop fs -rm -r -skipTrash hdfs://mycluster/tmp/hive/
    

HDInsight を 3 つ以上のワーカー ノードにスケーリングするScale HDInsight to three or more worker nodes

2 つ以下のワーカー ノードにスケールダウンしたときに、クラスターがセーフ モードで頻繁にスタックし、前述の手順が機能しない場合は、3 つ以上のワーカー ノードを保持することで、クラスターがすべてセーフ モードになるのを回避できます。If your clusters get stuck in safe mode frequently when scaling down to fewer than three worker nodes, and the previous steps don't work, then you can avoid your cluster going in to safe mode altogether by keeping at least three worker nodes.

3 つのワーカー ノードを保持するのは 1 つだけのワーカー ノードにスケールダウンするよりも高コストですが、クラスターがセーフ モードでスタックするのを防ぐことができます。Retaining three worker nodes is more costly than scaling down to only one worker node, but it will prevent your cluster from getting stuck in safe mode.

セーフ モードを終了するコマンドを実行するRun the command to leave safe mode

最後のオプションは、セーフ モードを終了するコマンドを実行することです。The final option is to execute the leave safe mode command. HDFS がセーフ モードになる原因が、レプリケーション中の Hive ファイルだということがわかっている場合は、次のコマンドを実行してセーフ モードを終了することができます。If you know that the reason for HDFS entering safe mode is because of Hive file under-replication, you can execute the following command to leave safe mode:

hdfs dfsadmin -D 'fs.default.name=hdfs://mycluster/' -safemode leave

Apache HBase クラスターをスケールダウンするScale down an Apache HBase cluster

リージョン サーバーは、スケーリング操作の完了から数分以内に自動的に調整されます。Region servers are automatically balanced within a few minutes after completing a scaling operation. リージョン サーバーを手動で調整するには、次の手順を完了します。To manually balance region servers, complete the following steps:

  1. SSH を使用して HDInsight クラスターに接続します。Connect to the HDInsight cluster using SSH. 詳細については、HDInsight での SSH の使用に関するページを参照してください。For more information, see Use SSH with HDInsight.

  2. HBase シェルを起動します。Start the HBase shell:

    hbase shell
    
  3. 次のコマンドを使用して、リージョン サーバーを手動で調整します。Use the following command to manually balance the region servers:

    balancer
    

次のステップNext steps