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

HDInsight は柔軟性を備えており、クラスター内のワーカー ノード数をスケールアップおよびスケールダウンするオプションがあります。HDInsight provides elasticity with options 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.

定期的なバッチ プロセスの前には、クラスターをスケールアップしてクラスターに十分なリソースを確保するようにします。Scale up your cluster before periodic batch processing so the cluster has adequate resources.  プロセスが完了し、使用量が減少したら、HDInsight クラスターをスケールダウンしてワーカー ノードを減らします。After processing completes, and usage goes down, scale down the HDInsight cluster to fewer worker nodes.

次に示す方法のいずれかを使用して、クラスターを手動でスケーリングできます。You can scale a cluster manually using one of the methods outlined below. また、自動スケーリング オプションを使用して、特定のメトリックに応じて自動的にスケールアップおよびスケールダウンすることもできます。You can also use autoscale options to automatically scale up and down in response to certain 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 CLUSTERNAME -TargetInstanceCount NEWSIZESet-AzHDInsightClusterSize -ClusterName CLUSTERNAME -TargetInstanceCount NEWSIZE
PowerShell AzureRMPowerShell AzureRM Set-AzureRmHDInsightClusterSize -ClusterName CLUSTERNAME -TargetInstanceCount NEWSIZESet-AzureRmHDInsightClusterSize -ClusterName CLUSTERNAME -TargetInstanceCount NEWSIZE
Azure CLIAzure CLI az hdinsight resize --resource-group RESOURCEGROUP --name CLUSTERNAME --workernode-count NEWSIZEaz hdinsight resize --resource-group RESOURCEGROUP --name CLUSTERNAME --workernode-count NEWSIZE
Azure クラシック CLIAzure Classic CLI azure hdinsight cluster resize CLUSTERNAME NEWSIZE
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), jobs won't be affected. スケーリング処理の実行中に新しいジョブを安全に送信できます。New jobs can be safely submitted while the scaling process is running. スケーリング操作が失敗した場合、その失敗によってクラスターは機能状態のままになります。If the scaling operation fails, the failure will leave your cluster in a functional state.

ノードを 削除 (スケールダウン) すると、保留中または実行中のジョブは、スケーリング操作の完了時に失敗します。If you remove nodes (scale down), pending or running jobs will fail when the scaling operation completes. この失敗の原因は、スケーリング処理中にいくつかのサービスが再起動されることにあります。This failure is because of some of the services restarting during the scaling process. 手動によるスケーリング操作中に、クラスターがセーフ モードで停止することがあります。Your cluster may 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 クラスター内のワーカー ノード数をシームレスに増やすことができます。You can seamlessly increase the number of worker nodes in a running Hadoop cluster without impacting any jobs. 処理の進行中に新しいジョブを送信することもできます。New jobs can also be submitted while the operation is in progress. スケーリング操作の失敗は正常に処理されます。Failures in a scaling operation are gracefully handled. クラスターは常に機能状態のままになります。The cluster is always left in a functional state.

    Hadoop クラスターのデータ ノード数を減らしてスケールダウンすると、一部のサービスは再起動されます。When a Hadoop cluster is scaled down with fewer data nodes, some services 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's running. 地域サーバーは、スケール設定処理の完了の数分以内に自動的に分散されます。Regional Servers are automatically balanced within a few minutes of completing the scaling operation. ただし、リージョン サーバーの負荷分散を手動で調整することができます。However, you can manually balance the regional servers. クラスター ヘッドノードにログインし、次のコマンドを実行します。Log in to the cluster headnode and run the following commands:

    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 while Storm is running. ただし、スケール設定処理が正常に完了した後、トポロジのバランス再調整が必要になります。However, after a successful completion of the scaling operation, you'll need to rebalance the topology. これにより、トポロジがクラスター内のノードの新しい数に基づいて並列処理の設定を再調整できます。Rebalancing allows the topology to readjust parallelism settings based on the new number of nodes in the cluster. 実行中のトポロジを再調整するには、次のオプションのいずれかを使用します。To rebalance running topologies, use one of the following options:

    • Storm Web UIStorm web UI

      次の手順により、Storm UI を使用してトポロジを再調整します。Use the following steps to rebalance a topology using the Storm UI.

      1. Web ブラウザーで https://CLUSTERNAME.azurehdinsight.net/stormui を開きます。ここで、CLUSTERNAME は実行中の Storm クラスターの名前です。Open https://CLUSTERNAME.azurehdinsight.net/stormui in your web browser, where CLUSTERNAME is the name of your Storm cluster. メッセージが表示されたら、HDInsight クラスター管理者 (admin) の名前と、クラスターの作成時に指定したパスワードを入力します。If prompted, enter the HDInsight cluster administrator (admin) name and password you specified when creating the cluster.

      2. 再調整するトポロジを選択し、 [Rebalance] (再調整) ボタンをクリックします。Select the topology you wish to rebalance, then select the Rebalance button. 再調整の操作が実行されるまでの待ち時間を入力します。Enter the delay before the rebalance operation is done.

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

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

      サーバーに接続し、次のコマンドを使用してトポロジを再調整します。Connect to the server and use the following command to rebalance a topology:

      storm rebalance TOPOLOGYNAME
      

      また、トポロジによって最初に提供された並列処理のヒントをオーバーライドするパラメーターも指定できます。You can also specify parameters to override the parallelism hints originally provided by the topology. たとえば、以下のコードは、mytopology トポロジを再構成して、5 個の worker プロセス、blue-spout コンポーネント用の 3 個の実行プログラム、yellow-bolt コンポーネント用の 10 個の実行プログラムにします。For example, the code below reconfigures the mytopology topology to 5 worker processes, 3 executors for the blue-spout component, and 10 executors for the yellow-bolt component.

      ## 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
      
  • KafkaKafka

    スケーリング操作の後で、パーティションのレプリカを再調整する必要があります。You should rebalance partition replicas after scaling operations. 詳しくは、「HDInsight 上の Apache Kafka によるデータの高可用性」をご覧ください。For more information, see the High availability of data with Apache Kafka on HDInsight document.

  • Apache Hive LLAPApache Hive LLAP

    N 個のワーカー ノードにスケーリングした後、HDInsight は自動的に次の構成を設定し、Hive を再起動します。After scaling to N worker nodes, HDInsight will automatically set the following configurations and restart Hive.

    • 同時実行クエリの最大合計数: hive.server2.tez.sessions.per.default.queue = min(N, 32)Maximum Total Concurrent Queries: hive.server2.tez.sessions.per.default.queue = min(N, 32)
    • Hive の LLAP で使用されるノードの数: num_llap_nodes = NNumber of nodes used by Hive's LLAP: num_llap_nodes = N
    • Hive LLAP デーモンを実行するためのノードの数: num_llap_nodes_for_llap_daemons = NNumber of Node(s) for running Hive LLAP daemon: num_llap_nodes_for_llap_daemons = N

クラスターを安全にスケールする方法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. このクラスターは、新しいポータル ページで開かれます。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] ページから [クイック リンク] を選択し、アクティブなヘッド ノードにポインターを置き、 [Resource Manager UI] を選択します。From the YARN page, select Quick Links and hover over the active head node, then select Resource Manager UI.

    Apache Ambari クイック リンク Resource Manager UI

https://<HDInsightClusterName>.azurehdinsight.net/yarnui/hn/cluster を使用すると Resource Manager UI に直接アクセスできます。You may directly access the Resource Manager 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:

Resource Manager 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 管理インターフェイスが使用されます。When you scale down a cluster, HDInsight uses Apache Ambari management interfaces to first decommission the extra worker nodes. ノードによって、その HDFS ブロックが他のオンライン ワーカー ノードにレプリケートされます。The nodes 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. スケーリングが完了すると HDFS は復帰するはずです。HDFS 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 はセーフ モードになり、Ambari によってアラートが生成されます。When the expected number of block copies aren't available, HDFS enters safe mode and Ambari generates alerts. HDFS は、スケーリング操作のためにセーフ モードに切り替わる場合があります。HDFS may enter safe mode for a scaling operation. 必要な数のノードがレプリケーション用に検出されない場合、クラスターはセーフ モードで停止する可能性があります。The cluster may get stuck in safe mode if the required number of nodes aren't detected for replication.

セーフ モードがオンになっている場合のエラーの例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 was that Hive depends on temporary files in HDFS while running queries. HDFS がセーフ モードになると、Hive は HDFS に書き込めなくなるため、クエリを実行できません。When HDFS enters safe mode, Hive can't run queries because it can't write to HDFS. HDFS 内の一時ファイルは、個々のワーカー ノード VM にマウントされているローカル ドライブに配置されます。Temp files in HDFS are located in the local drive mounted to the individual worker node VMs. これらのファイルは、他のワーカー ノードの少なくとも 3 つのレプリカにレプリケートされます。The files are replicated among 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 Resource Manager UI のページを見て、Hive で実行中のクエリがないことを確認してください。Be sure that Hive doesn't have any queries running by looking in the Yarn Resource Manager 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

ワーカー ノードを 3 つ未満にスケールダウンすると、クラスターがセーフ モードで頻繁に停止する場合は、3 つ以上のワーカー ノードを保持します。If your clusters get stuck in safe mode frequently when scaling down to fewer than three worker nodes, then keep at least three worker nodes.

3 つのワーカー ノードを持つことは、1 つのワーカー ノードのみにスケールダウンするよりもコストがかかります。Having three worker nodes is more costly than scaling down to only one worker node. ただし、この操作により、クラスターがセーフ モードで停止するのを防ぐことができます。However, this action will prevent your cluster from getting stuck in safe mode.

HDInsight を 1 つのワーカー ノードにスケール ダウンするScale HDInsight down to one worker node

クラスターのノード数を 1 ノードにスケール ダウンしても、ワーカー ノード 0 は引き続き存続します。Even when the cluster is scaled down to one node, worker node 0 will still survive. ワーカー ノード 0 を使用停止にすることはできません。Worker node 0 can never be decommissioned.

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

最後のオプションは、セーフ モードを終了するコマンドを実行することです。The final option is to execute the leave safe mode command. レプリケーション対象の Hive ファイルがあるために HDFS がセーフ モードに切り替わった場合は、次のコマンドを実行してセーフ モードを終了します。If HDFS entered safe mode because of Hive file under-replication, 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

HDInsight クラスターのスケーリングに関する具体的な情報については、以下を参照してください。For specific information on scaling your HDInsight cluster, see: