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

E-MapReduce:HiveServer2 の負荷分散

最終更新日:Jan 11, 2025

HiveServer2 が E-MapReduce(EMR)クラスターの複数のノードにデプロイされている場合、ZooKeeper またはサーバーロードバランサー(SLB)を使用して HiveServer2 の負荷を分散できます。このトピックでは、HiveServer2 の負荷分散に使用できる方法について説明します。 EMR クラスターで Kerberos 認証が有効になっているかどうかによって、方法を選択できます。

前提条件

高可用性 EMR クラスターが作成されていること。詳細については、「クラスターの作成」をご参照ください。HA

制限事項

このトピックは、[高サービス可用性] が有効になっているクラスターにのみ適用されます。

一般的な EMR クラスター

このセクションでは、[kerberos 認証] が有効になっていないクラスターについて、HiveServer2 の負荷を分散する方法について説明します。

ZooKeeper を使用して HiveServer2 の負荷を分散する

デフォルトでは、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 に接続するには、EMR コンソールの Hue サービスページの [hue] タブで次のパラメーターを追加します。

    パラメーター

    説明

    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 を使用して HiveServer2 の負荷を分散する

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

  2. HiveServer2 がデプロイされている Elastic Compute Service(ECS)インスタンスを [デフォルトサーバーグループ] に追加し、ビジネス要件に基づいて ECS インスタンスの重みを設定します。

    詳細については、「デフォルトサーバーグループのバックエンドサーバーの追加と管理」をご参照ください。image

  3. [リスナープロトコルの選択] パラメーターを TCP に設定し、ビジネス要件に基づいて [リスニングポート] パラメーターを設定します。 [バックエンドプロトコル/ポート] パラメーターを 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 アドレス、または SLB インスタンスの IP アドレスに関連付けられているホスト名を示します。

      2. <slb_port>:SLB インスタンスのフロントエンドリスニングポートを示します。

    この負荷分散方式に基づいて Hue を HiveServer2 に接続するには、EMR コンソールの Hue サービスページの [hue] タブで次のパラメーターを変更します。

    パラメーター

    説明

    hive_server2_host

    SLB インスタンスの IP アドレス、または SLB インスタンスの IP アドレスに関連付けられているホスト名。

    hive_server2_port

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

Kerberos 認証が有効になっている EMR クラスター

このセクションでは、[kerberos 認証] が有効になっているクラスターについて、HiveServer2 の負荷を分散する方法について説明します。

ZooKeeper を使用して HiveServer2 の負荷を分散する

  1. kinit コマンドを実行して、Ticket Granting Ticket(TGT)を取得します。詳細については、「Kerberos 認証を使用して Hive クライアントにアクセスする」をご参照ください。

  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 のアドレスです。

      Hue は、この負荷分散方式に基づいて EMR Kerberos クラスターの HiveServer2 に接続できません。 EMR Kerberos クラスターの HiveServer2 に Hue を接続するには、SLB を使用して負荷分散を実装します。

SLB を使用して HiveServer2 の負荷を分散する

このトピックの 一般的な EMR クラスター セクションに記載されている手順に従って、SLB インスタンスを作成および設定できます。 Kerberos クラスターの HiveServer2 にアクセスするには、HiveServer2 に必要な Kerberos プリンシパルを設定する必要があります。

この例では、SLB インスタンスの IP アドレスは 121.40.**.**、フロントエンドリスニングポートは 10000 です。ビジネス要件に基づいて IP アドレスとフロントエンドリスニングポートを変更できます。

  1. kinit コマンドを実行して、TGT を取得します。詳細については、「Kerberos 認証を使用して Hive クライアントにアクセスする」をご参照ください。

  2. IP アドレス 121.40.**.** に対応する Hive プリンシパルを作成し、新しく生成された keytab ファイルにプリンシパルをエクスポートします。

    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 CLI を使用して Key Distribution Center(KDC)に接続し、addprinc コマンドと xst コマンドを実行します。

      重要

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

  3. 次のコマンドを実行して、slb.keytab ファイルを HiveServer2 がデプロイされているすべてのノードに転送し、slb.keytab ファイルの内容を各ノードの /etc/ecm/hive-conf/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

    image

  5. Hive の設定を変更します。

    EMR コンソールの Hive サービスページの [設定] タブで、hive.server2.authentication.kerberos.principal パラメーターを検索し、前の手順で作成したプリンシパルに値を設定します。この例では、値は hive/121.40.**.**@EMR.**.COM です。設定を保存し、設定を有効にします。image

  6. HiveServer を再起動します。

    1. EMR コンソールの Hive サービスページの [ステータス] タブで、HiveServer を見つけ、[アクション] 列の [再起動] をクリックします。

    2. 表示されるダイアログボックスで、[実行理由] パラメーターを設定し、[OK] をクリックします。

    3. [確認] メッセージで、[OK] をクリックします。

  7. master-1-1 ノードで次のコマンドを実行して、HiveServer2 にアクセスします。

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