すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:HiveServer2 の負荷分散

最終更新日:Jun 21, 2026

E-MapReduce (EMR) クラスターで複数の HiveServer2 サービスを実行する場合、ZooKeeper と Server Load Balancer (SLB) を使用して、複数のノードに負荷を分散させることができます。このトピックでは、標準クラスターと Kerberos が有効なクラスターの両方で HiveServer2 の負荷分散を設定および使用する方法について説明します。

制限事項

このトピックは、[High Service Availability] が有効になっているクラスターにのみ適用されます。

まず、高可用性クラスターを作成する必要があります。詳細については、「クラスターの作成」をご参照ください。高可用性 機能を有効にする必要があります。この機能が有効になると、EMR はマスターノードを異なる基盤ハードウェアに分散させ、障害のリスクを低減します。

標準 E-MapReduce クラスター

以下の方法は、[Kerberos ID 認証] が無効になっているクラスターに適用されます。

ZooKeeper による負荷分散

高可用性クラスターには、デフォルトで ZooKeeper がインストールされています。次の方法を使用すると、ZooKeeper が接続用の HiveServer2 インスタンスを選択し、負荷分散を実現します。

  1. SSH 経由でクラスターに接続します。詳細については、「クラスターへのログオン」をご参照ください。

  2. 次のコマンドを実行します。ZooKeeper は、接続に利用可能な HiveServer2 インスタンスを選択します。

    beeline -u 'jdbc:hive2://master-1-1:2181,master-1-2:2181,master-1-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2'
    説明

    コマンド内の master-1-1:2181,master-1-2:2181,master-1-3:2181 は、ZooKeeper の接続文字列です。

    Hue が負荷分散された HiveServer2 インスタンスに接続できるようにするには、Hue 設定の [hue] タブで、次の 3 つのカスタムパラメーターを追加します。

    パラメーター

    説明

    zookeeper.clusters.default.hostports

    ZooKeeper の接続文字列です。実際の値に置き換えてください。例:master-1-1:2181,master-1-2:2181,master-1-3:2181。

    beeswax.hive_discovery_hs2

    値を true に設定します。

    beeswax.hive_discovery_hiveserver2_znode

    値を /hiveserver2 に設定します。

SLB による負荷分散

  1. SLB インスタンスを作成します。詳細については、「CLB インスタンスの作成と管理」をご参照ください。

  2. HiveServer2 サービスを実行する ECS インスタンスを [default server group] に追加します。必要に応じて、各 ECS インスタンスの重みを設定します。

    詳細については、「デフォルトサーバーグループの管理」をご参照ください。

  3. TCP リスナーを設定します。フロントエンドリスナーポートはカスタマイズできます。[Backend Protocol/Port] を TCP:10000 に設定します。

    要件に基づいてスケジューリングアルゴリズムを選択します。詳細については、「TCP リスナーの追加」をご参照ください。

  4. HiveServer2 に接続します。

    1. SSH 経由でクラスターに接続します。詳細については、「クラスターへのログオン」をご参照ください。

    2. 次のコマンドを実行して、ロードバランサー経由で HiveServer2 サービスに接続します。

      beeline -u 'jdbc:hive2://<slb_ip_or_host>:<slb_port>'

      次のパラメーターを実際の値に置き換えます:

      1. <slb_ip_or_host>:SLB インスタンスの IP アドレスまたはバインドされたホスト名。

      2. <slb_port>:SLB インスタンスのフロントエンドリスナーポート。

    このロードバランサーを介して Hue が HiveServer2 と通信できるようにするには、Hue 設定の [hue] タブで次のパラメーターを変更します。

    パラメーター

    説明

    hive_server2_host

    SLB インスタンスの IP アドレスまたはバインドされたホスト名。

    hive_server2_port

    SLB インスタンスのフロントエンドリスナーポート。

Kerberos が有効な EMR クラスター

以下の方法は、[Kerberos ID 認証] が有効になっているクラスターに適用されます。

ZooKeeper による負荷分散

  1. kinit コマンドを実行して Kerberos で認証し、チケット認可チケットを取得します。詳細については、「Kerberos 認証の使用」をご参照ください。

  2. HiveServer2 に接続します。

    1. SSH 経由でクラスターに接続します。詳細については、「クラスターへのログオン」をご参照ください。

    2. 次のコマンドを実行します。ZooKeeper は、接続に利用可能な HiveServer2 インスタンスを選択します。

      beeline -u 'jdbc:hive2://master-1-1:2181,master-1-2:2181,master-1-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2'
      説明

      コマンド内の master-1-1:2181,master-1-2:2181,master-1-3:2181 は、ZooKeeper の接続文字列です。

      Kerberos が有効な EMR クラスターでは、Hue は ZooKeeper 経由で負荷分散された HiveServer2 への接続をサポートしていません。そのため、Hue から接続する場合は SLB 方式を使用してください。

SLB による負荷分散

標準 E-MapReduce クラスター」のセクションで説明しているように、SLB インスタンスを作成および設定できます。Kerberos が有効なクラスターでは、HiveServer2 が正常に接続するために、Kerberos プリンシパルも設定する必要があります。

この例では、SLB の IP アドレスが 121.40.**.** で、フロントエンドリスナーポートが 10000 であると仮定します。これらを実際の値に置き換えてください。

  1. kinit コマンドを実行して Kerberos で認証し、チケット認可チケットを取得します。詳細については、「Kerberos 認証の使用」をご参照ください。

  2. 121.40.**.** アドレス用の Hive プリンシパルを作成し、キータブをエクスポートします。

    1. クラスターの master-1-1 ノードにログオンします。詳細については、「クラスターへのログオン」をご参照ください。

    2. 次のコマンドを実行して、Kerberos 管理ツールを起動します:

      kadmin.local
    3. 次のコマンドを実行してプリンシパルを作成し、/tmp/slb.keytab にエクスポートします:

      addprinc -randkey hive/121.40.**.**
      xst -k /tmp/slb.keytab hive/121.40.**.**
      exit

      お使いの EMR Kerberos クラスターが外部の MIT Kerberos インスタンスと統合されている場合は、kadmin.local または kadmin を使用して KDC に接続し、addprinc および xst コマンドを実行します。

      重要

      Kerberos キータブを複数回エクスポートすると、以前のキータブファイルが無効になる場合があります。slb.keytab には、最新のプリンシパルのみが含まれていることを確認してください。プリンシパルを再度エクスポートする必要がある場合は、まず以前に生成されたキータブファイルを削除する必要があります。

  3. slb.keytab ファイルを、HiveServer2 サービスが実行されているすべてのノードに転送します。次に、各ノードで ktutil ツールを使い、次のコマンドを実行して slb.keytab の内容を /etc/taihao-apps/hive-conf/keytab/hive.keytab ファイルにマージします:

    ktutil
    rkt /tmp/slb.keytab
    wkt /etc/taihao-apps/hive-conf/keytab/hive.keytab
    quit
  4. 次のコマンドを実行して、hive.keytab ファイルの内容を表示します:

    klist -kt /etc/taihao-apps/hive-conf/keytab/hive.keytab
    [root@master-1-1(172.16.xxx) ~]# klist -kt /etc/taihao-apps/hive-conf/keytab/hive.keytab
    Keytab name: FILE:/etc/taihao-apps/hive-conf/keytab/hive.keytab
    KVNO Timestamp              Principal
    ---- ------------------- ------------------------------------------------------
       2 10/30/2024 14:12:05 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:12:05 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:12:06 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:12:06 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:12:06 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:12:06 hive/master-1-1.c-7d27ce0e7xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E7xxx.COM
       2 10/30/2024 14:26:56 hive/121.40.xxx @EMR.C-7D27CE0E7xxx.COM
  5. クラスターの Hive 設定を変更します。

    EMR コンソールで、Hive サービスの Configure タブに移動します。[hive.server2.authentication.kerberos.principal] パラメーターを検索し、その値を前の手順で作成したプリンシパル hive/121.40.**.**@EMR.**.COM に変更します。その後、設定を保存して適用します。

  6. HiveServer2 サービスを再起動します。

    1. EMR コンソールで、Hive サービスの Status タブに移動します。HiveServer2 の行で、[Actions] 列の 再起動 をクリックします。

    2. 実行理由を入力し、OK をクリックします。

    3. Confirm ダイアログボックスで、OK をクリックします。

  7. master-1-1 ノードで、次のコマンドを実行して HiveServer2 に接続します:

    beeline -u 'jdbc:hive2://121.40.**.**:10000/default;principal=hive/121.40.**.**@EMR.**.COM'