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

E-MapReduce:Hive への接続方法

最終更新日:Mar 27, 2026

E-MapReduce (EMR) クラスター内の Hive には、Hive クライアント、Beeline、または Java Database Connectivity (JDBC) を使用して接続します。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

  • Hive がインストール済みの EMR クラスターがあり、マスターノードで パブリックネットワーク IP の割り当て スイッチが有効になっていること。クラスターの作成手順については、「クラスターの作成」をご参照ください。

  • クラスターのマスターノードにログイン済みであること。「クラスターへのログイン」をご参照ください。

本トピックで言及されるクラスタータイプ:

クラスタータイプ 説明
一般クラスター Kerberos 認証 および 高可用性サービス の両方が無効になっています。
高セキュリティクラスター Kerberos 認証 が有効になっています。
高可用性クラスター 高可用性サービス が有効になっており、クラスター作成時に ZooKeeper を選択する必要があります。

注意事項

  • マスターノード名とパブリック IP アドレスは、ノード タブで確認できます。「クラスターへのログイン」をご参照ください。デフォルトのマスターノード名は master-1-1 です。Hadoop クラスターの場合は emr-header-1 です。

    image

  • HiveServer2 では、デフォルトでユーザー名とパスワードによる認証は実行されません。認証を有効にするには、Lightweight Directory Access Protocol (LDAP) 認証を有効化します。「LDAP 認証の使用」をご参照ください。

一般クラスターへの Hive 接続

Hive クライアントの使用

次のコマンドを実行します。

hive

終了するには、quit; または exit; を実行します。

Beeline の使用

次のコマンドを実行します。

beeline -u jdbc:hive2://master-1-1:10000

終了するには、!quit または !exit を実行します。

JDBC の使用

重要

続行する前に、Java 環境の設定、Java 開発ツールのインストール、および環境変数の設定が完了していることを確認してください。

  1. hadoop-common および hive-jdbc を、pom.xml ファイルの依存関係として追加します。

    <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>

    バージョンは、EMR コンソールの ソフトウェア情報 セクション(基本情報 タブ内)に表示される Hadoop-Common および Hive のバージョンと一致していることを確認してください。

  2. HiveServer2 への接続およびデータクエリを行うコードを作成します。

    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();
            }
    
            // <マスターノードのパブリック IP アドレス> を実際のパブリック IP アドレスに置き換えます
            Connection con = DriverManager.getConnection(
                "jdbc:hive2://<マスターノードのパブリック IP アドレス>: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 ファイルの実行には、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 アドレスを使用してアクセスします。あるいは、ネットワーク製品を用いて相互接続を構築したうえで、内部ネットワーク経由でのアクセスを実現することも可能です。ネットワーク接続のテスト方法は以下のとおりです。

    • パブリックネットワーク: telnet <master-1-1 のパブリック IP アドレス> 10000

    • 内部ネットワーク: telnet <master-1-1 の内部 IP アドレス> 10000

    java -jar emr-hiveserver2-1.0.jar

高セキュリティクラスターへの Hive 接続

高セキュリティクラスターでは Kerberos 認証が必須です。Hive クライアントまたは Beeline を使用して接続する前に、Kerberos プリンシパルを設定し、チケット発行チケット (TGT) を取得してください。

Kerberos 認証の設定

  1. Kerberos 管理 CLI を起動します。

    • master-1-1(キー配布センター (KDC) ノード)で、root ユーザーとして実行します。

      kadmin.local

      出力に以下が含まれている場合、CLI が準備完了です。

      Authenticating as principal hadoop/admin@EMR.C-85D4B8D74296****.COM with password.
      kadmin.local:
    • その他の任意のノードまたはゲートウェイで実行します。

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

      プレースホルダーを以下の値に置き換えます。

      プレースホルダー
      <admin-user> root/admin(EMR 内で自己管理される KDC の場合)
      <admin-password> EMR コンソールの Kerberos サービスの 設定 タブに表示される admin_pwd

      出力に以下が含まれている場合、CLI が準備完了です。

      Authenticating as principal root/admin with password.
      kadmin:
  2. test という名前の Kerberos プリンシパルを作成します。

    説明

    ユーザー名とパスワードは必ず保存してください。TGT の作成に必要です。

    addprinc -pw 123456 test

    プリンシパルは、出力に以下が含まれる場合に作成されます。

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

    管理 CLI を終了するには、quit を実行します。

  3. システムユーザーを作成し、そのユーザーに切り替えます。

    useradd test
    su test
  4. TGT を作成します。

    kinit

    プロンプトが表示されたら、test ユーザーのパスワード(本例では 123456)を入力します。

Hive クライアントの使用

上記の Kerberos 設定を完了した後、次のコマンドを実行します。

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

Beeline の使用

上記の Kerberos 設定を完了した後、次のコマンドを実行します。

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 領域名です。「realm」パラメーターを、EMR コンソールの Kerberos サービスの [設定] タブで検索します。
image

高可用性クラスターへの Hive 接続

高可用性クラスターでは、複数の HiveServer2 インスタンスが公開されています。クラスターの構成に合ったサービス検出モードで Beeline を使用します。

ZooKeeper サービス検出による Beeline の使用

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

マルチサーバー方式のサービス検出による Beeline の使用

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

トラブルシューティング

ポート 10000 で Hive に接続できない

症状: HiveServer2 へのポート 10000 経由の接続がタイムアウトするか、拒否されます。

原因: HiveServer2 が実行されていないか、セキュリティグループがポート 10000 のトラフィックを許可していません。

解決策:

  1. HiveServer2 が実行中であることを確認します。HiveServer2 がデプロイされているノードで、次のコマンドを実行します。

    netstat -tulnp | grep 10000

    プロセスが表示されない場合、HiveServer2 は実行されていません。問題の診断には、HiveServer2 の起動ログを確認してください。

  2. セキュリティグループでポート 10000 が開放されていることを確認します。EMR コンソールで 基本情報 タブに移動し、クラスターセキュリティグループ の横にあるリンクをクリックします。セキュリティグループの詳細 タブで、ポート 10000 が開放されていることを確認します。開放されていない場合は、有効化してください。「セキュリティグループの管理」をご参照ください。

高可用性および Kerberos 認証の両方が有効になっている

症状: クラスターで 高可用性サービス および Kerberos 認証 の両方が有効になっており、Hive への接続が必要です。

原因: この組み合わせでは、Kerberos 認証情報および負荷分散された HiveServer2 エンドポイントが必要となりますが、標準の Beeline コマンドでは自動的に処理されません。

解決策: Kerberos プリンシパルを作成し TGT を取得したうえで、JDBC を使用して接続します。「HiveServer2 の負荷分散」をご参照ください。