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

E-MapReduce:Hive の接続方法

最終更新日:Jun 22, 2026

このトピックでは、Hive クライアント、Beeline、JDBC の 3 つの方法を使用して E-MapReduce の Hive に接続する方法について説明します。

前提条件

  • Hive サービスが有効になっているクラスター (DataLake やカスタムなど) を作成し、リモートログインを許可するためにマスターノードの Assign Public Network IP スイッチをオンにしていること。 クラスターの作成方法の詳細については、「クラスターの作成」をご参照ください。

    • 一般クラスター:Kerberos Authentication または High Service Availability が有効になっていないクラスター。

    • 高セキュリティクラスター:Kerberos Authenticationスイッチをオンにして作成されたクラスターです。

    • HA クラスター:High Service Availability スイッチをオンにして作成されたクラスターです。なお、HA クラスターを作成する場合、ZooKeeper サービスも選択する必要があります。

  • クラスターのマスターノードにログインしていること。 詳細については、「クラスターへのログイン」をご参照ください。

注意事項

  • master-1-1<マスターノードのパブリック IP アドレス>:マスターノードのホスト名とパブリック IP アドレスです。この情報は、EMR コンソールの送信先クラスターの Nodes ページで取得できます。詳細については、「クラスターへのログイン」をご参照ください。

    通常、マスターノードのホスト名は master-1-1 です。 ご利用のクラスターが Hadoop クラスターの場合、ホスト名は emr-header-1 です。

  • HiveServer2 は、デフォルトではユーザー名とパスワードを検証しません。 ユーザー名とパスワードによる認証を有効にするには、LDAP 認証をオンにします。 詳細については、「LDAP 認証の使用」をご参照ください。

操作手順

通常クラスター

Hive クライアントを使用した接続

  1. 次のコマンドを実行して Hive に接続します。

    hive
  2. オプション: `quit;` または `exit;` を実行して Hive を終了します。

Beeline クライアントを使用した接続

  1. 次のコマンドを実行して Hive に接続します。

    beeline -u jdbc:hive2://master-1-1:10000
  2. オプション: `!quit` または `!exit` を実行して Beeline を終了します。

JDBC を使用した接続

重要

開始する前に、Java 環境と Java 開発ツールがインストールされ、関連する環境変数が設定されていることを確認してください。

  1. `pom.xml` ファイルでプロジェクトの依存関係 (hadoop-common と hive-jdbc) を設定します。 次の例は、追加された依存関係を示しています。

    <dependencies>
            <dependency>
                <groupId>org.apache.hive</groupId>
                <artifactId>hive-jdbc</artifactId>
                <version>3.1.3</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-common</artifactId>
                <version>3.2.1</version>
            </dependency>
    </dependencies>

    hadoop-common および hive-jdbc のバージョンが、お使いの EMR クラスター内の Hadoop-Common および Hive のバージョンと一致することを確認してください。このソフトウェア情報は、EMR コンソールで送信先クラスターの Software Information セクション配下にある 基本情報 タブで確認できます。

  2. HiveServer2 に接続し、Hive テーブルデータを操作するコードを記述します。 次の例は、サンプルコードを示しています。

    import java.sql.*;
    public class App
    {
        private static String driverName = "org.apache.hive.jdbc.HiveDriver";
        public static void main(String[] args) throws SQLException {
            try {
                Class.forName(driverName);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            Connection con = DriverManager.getConnection(
                "jdbc:hive2://<Master node public IP address>:10000", "root", "");
            Statement stmt = con.createStatement();
            String sql = "select * from sample_tbl limit 10";
            ResultSet res = stmt.executeQuery(sql);
            while (res.next()) {
                System.out.println(res.getString(1) + "\t" + res.getString(2));
            }
        }
    }
    説明

    この方法では、ポート 10000 を開く必要があります。 詳細については、「セキュリティグループの管理」をご参照ください。

  3. プロジェクトをビルドし (JAR ファイルを生成)、JAR ファイルを実行環境にアップロードします。

    重要

    JAR ファイルは hadoop-common と hive-jdbc に依存します。 これらの依存パッケージが実行環境の環境変数に含まれていない場合は、ダウンロードして設定するか、JAR ファイルに直接パッケージ化してください。 JAR ファイルの実行時にいずれかの依存関係が欠落している場合、次のいずれかのエラーが表示されます:

    • hadoop-common の欠落: java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration

    • hive-jdbc の欠落: java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver

    この例では、生成された JAR ファイルの名前は `emr-hiveserver2-1.0.jar` です。 この JAR ファイルを E-MapReduce クラスターのマスターノードにアップロードします。

  4. JAR ファイルが正しく実行されるかテストします。

    重要

    JAR ファイルを実行するサーバーと E-MapReduce クラスターは、同じ VPC とセキュリティグループ内にあり、それらの間にネットワーク接続が存在する必要があります。 異なる VPC またはネットワーク環境にある場合は、パブリック IP アドレスを使用してクラスターにアクセスするか、Alibaba Cloud のネットワークプロダクトを使用して接続を確立してから内部ネットワーク経由でアクセスします。 ネットワーク接続をテストするには:

    • パブリックネットワーク: telnet public IP address of master-1-1 10000

    • プライベートネットワーク: telnet private IP address of master-1-1 10000

    java -jar emr-hiveserver2-1.0.jar

高セキュリティクラスター

Hive クライアントを使用した接続

  1. 次のコマンドを実行して、Kerberos admin.local ツールを起動します。

    • Kerberos キー配布センター (KDC) サーバーが実行されている master-1-1 ノードに `root` ユーザーとしてログインしている場合は、次のコマンドを実行して管理ツールに直接アクセスできます。

      kadmin.local

      次の出力は、`kadmin.local` コマンドラインインターフェイスに入ったことを示します:

      Authenticating as principal hadoop/admin@EMR.C-85D4B8D74296****.COM with password.
      kadmin.local:
    • 別のノードにログインしている場合、またはゲートウェイを使用している場合は、次のコマンドを実行して管理ツールにアクセスします。

      kadmin -p <admin-user> -w <admin-password>
      説明

      E-MapReduce が提供する KDC を使用する場合は、次のパラメーターに注意してください:

      • <admin-user>: 値は root/admin に固定されています。

      • <admin-password>:E-MapReduce コンソールで、Kerberos サービスの Configure タブに移動し、admin_pwd パラメーターの値を取得します。

      次の出力は、`kadmin` コマンドラインインターフェイスに入ったことを示します:

      Authenticating as principal root/admin with password.
      kadmin:
  2. 次のコマンドを実行して、`test` という名前のプリンシパルを作成します。

    この例では、パスワードは `123456` です。

    addprinc -pw 123456 test

    次の出力は、プリンシパルが正常に作成されたことを示します:

    Principal "test@EMR.C-85D4B8D74296****.COM" created.
    説明

    ユーザー名とパスワードを記録してください。 チケット発行チケット (TGT) を作成する際に必要になります。

    quit コマンドを実行して、Kerberos admin.local ツールを終了します。

  3. Hive クライアントを実行するマシンにログインし、次のコマンドを実行して `test` ユーザーを作成し、切り替えます。

    useradd test
    su test
  4. 次のコマンドを実行して TGT を作成します。

    kinit

    Enter キーを押し、`test` ユーザーのパスワードを入力します。 この例では、パスワードは `123456` です。

  5. hive コマンドを実行して Hive クライアントにアクセスします。

    hive

Beeline クライアントを使用した接続

  1. 次のコマンドを実行して、Kerberos admin.local ツールを起動します。

    • Kerberos キー配布センター (KDC) サーバーが実行されている master-1-1 ノードに `root` ユーザーとしてログインしている場合は、次のコマンドを実行して管理ツールに直接アクセスできます。

      kadmin.local

      次の出力は、`kadmin.local` コマンドラインインターフェイスに入ったことを示します:

      Authenticating as principal hadoop/admin@EMR.C-85D4B8D74296****.COM with password.
      kadmin.local:
    • 別のノードにログインしている場合、またはゲートウェイを使用している場合は、次のコマンドを実行して管理ツールにアクセスします。

      kadmin -p <admin-user> -w <admin-password>
      説明

      E-MapReduce が提供する KDC を使用する場合は、次のパラメーターに注意してください:

      • <admin-user>: 値は root/admin に固定されています。

      • <admin-password>: E-MapReduce コンソールで、Kerberos サービスの Configure タブに移動して、admin_pwd パラメーターの値を取得します。

      次の出力は、`kadmin` コマンドラインインターフェイスに入ったことを示します:

      Authenticating as principal root/admin with password.
      kadmin:
  2. 次のコマンドを実行して、`test` という名前のプリンシパルを作成します。

    この例では、パスワードは `123456` です。

    addprinc -pw 123456 test

    次の出力は、プリンシパルが正常に作成されたことを示します:

    Principal "test@EMR.C-85D4B8D74296****.COM" created.
    説明

    ユーザー名とパスワードを記録してください。 チケット発行チケット (TGT) を作成する際に必要になります。

    quit コマンドを実行して、Kerberos admin.local ツールを終了します。

  3. Hive クライアントを実行するマシンにログインし、次のコマンドを実行して `test` ユーザーを作成し、切り替えます。

    useradd test
    su test
  4. 次のコマンドを実行して TGT を作成します。

    kinit

    Enter キーを押し、`test` ユーザーのパスワードを入力します。 この例では、パスワードは `123456` です。

  5. 次のコマンドを実行して Hive クライアントにアクセスします。

    beeline -u "jdbc:hive2://master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com:10000/;principal=hive/_HOST@EMR.c-56187feb57f0****.COM"

    次のプレースホルダーを実際の情報に置き換えてください:

    • master-1-1.c-56187feb57f0****.cn-hangzhou.emr.aliyuncs.com: ドメイン名を含む完全修飾ホスト名。 ホスト名は、HiveServer2 サービスが実行されているノード (通常は master-1-1 ノード) で `hostname -f` コマンドを実行して取得できます。

    • EMR.c-56187feb57f0****.COM: 領域名です。 E-MapReduce コンソールで Kerberos サービスの Configure タブに移動し、realm パラメーターの値を確認できます。

HA クラスター

Beeline クライアントを使用した接続

選択したサービス検出モード (`zooKeeper` または `multiServers`) に応じて、対応するコマンドを使用して Beeline 接続を設定します。

  • zooKeeper モードの使用

    beeline -u 'jdbc:hive2://master-1-1:2181,master-1-2:2181,master-1-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2'
  • multiServers モードの使用

    beeline -u 'jdbc:hive2://master-1-1:10000,master-1-2:10000,master-1-3:10000/default;serviceDiscoveryMode=multiServers'

よくある質問

Hive への接続時に「ポート到達不能」エラーが発生した場合はどうすればよいですか?

Hive への接続時にポート到達不能エラーが発生した場合は、次の 2 つの観点からトラブルシューティングを行ってください。

  • HiveServer2 サービスが実行中であることを確認します。

    HiveServer2 ノードで、次のコマンドを実行して、サービスプロセスが指定されたポート (デフォルトは 10000) をリッスンしているかどうかを確認します。

    netstat -tulnp | grep 10000

    出力に HiveServer2 関連のサービスプロセスが含まれていることを確認してください。 そのようなプロセスが表示されない場合は、HiveServer2 の起動ログを確認して、正しく起動したことを確認します。

  • セキュリティグループがポート 10000 のトラフィックを許可しているかどうかを確認します。

    EMR コンソールの送信先クラスターの基本情報 ページで、Cluster Security Group の横にあるリンクをクリックします。[セキュリティグループの詳細] ページで、ポート 10000 がオープンしていることを確認します。オープンしていない場合は、ポート 10000 をオープンします。詳細については、「セキュリティグループの管理」をご参照ください。

高可用性と高セキュリティの両方が有効になっている場合、Hive に接続するにはどうすればよいですか?

高可用性と高セキュリティの両方が有効になっている場合は、まず Kerberos 認証情報 (Kerberos プリンシパルを作成して TGT を取得) を取得し、次に JDBC メソッドを使用して Hive に接続します。 詳細については、「HiveServer2 の負荷分散」をご参照ください。