Amazon EMR の以前の AMI バージョンの Hive アプリケーションの仕様。 - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EMR の以前の AMI バージョンの Hive アプリケーションの仕様。

ログファイル

Amazon EMR AMI バージョン 2.x および 3.x を使用する場合、Hive ログは /mnt/var/log/apps/ に保存されます。Hive の複数のバージョンを同時にサポートするために、ログファイル名は次の表に示すように、実行する Hive のバージョンによって異なります。

Hive のバージョン ログファイル名
0.13.1 hive.log
注記

このバージョンからは、Amazon EMR で、バージョニング無効のファイル名 hive.log が使用されます。マイナーバージョンは、メジャーバージョンと同じログの場所を共有します。

0.11.0 hive_0110.log
注記

0.11.0.1 のような Hive 0.11.0 のマイナーバージョンでは、ログファイルの場所は Hive 0.11.0 と同じです。

0.8.1 hive_081.log
注記

Hive 0.8.1.1 のような Hive 0.8.1 のマイナーバージョンでは、ログファイルの場所は Hive 0.8.1 と同じです。

0.7.1 hive_07_1.log
注記

Hive 0.7.1.3 や Hive 0.7.1.4 といった Hive 0.7.1 のマイナーバージョンでは、ログファイルの場所は Hive 0.7.1 と同じです。

0.7 hive_07.log
0.5 hive_05.log
0.4 hive.log

分割入力機能

0.13.1 より前の Hive バージョン (Amazon EMR AMI バージョン 3.11.0 より前) を使用して分割入力機能を実装するには、次のようにします。

hive> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveCombineSplitsInputFormat; hive> set mapred.min.split.size=100000000;

この機能は Hive 0.13.1 で廃止されました。Amazon EMR AMI バージョン 3.11.0 で同じ分割入力形式の機能を得るには、以下を使用します。

set hive.hadoop.supports.splittable.combineinputformat=true;

Thrift サービスポート

Thrift は RPC のフレームワークで、これによって定義されるコンパクトなバイナリシリアライズ形式を使用して、後から分析に使用するためのデータ構造を維持します。通常、Hive は次のポートで稼働するようにサーバーを設定します。

Hive のバージョン ポート番号
Hive 0.13.1 10000
Hive 0.11.0 10004
Hive 0.8.1 10003
Hive 0.7.1 10002
Hive 0.7 10001
Hive 0.5 10000

thrift サービスの詳細については、http://wiki.apache.org/thrift/ を参照してください。

Hive を使用してパーティションを復元する

Amazon EMR の Hive クエリ言語には、Amazon S3 内にあるテーブルデータからテーブルのパーティションを復元するステートメントが含まれています。次の例でこれを示します。

CREATE EXTERNAL TABLE (json string) raw_impression PARTITIONED BY (dt string) LOCATION 's3://elastic-mapreduce/samples/hive-ads/tables/impressions'; ALTER TABLE logs RECOVER PARTITIONS;

パーティションのディレクトリおよびデータは、テーブル定義で指定された場所に格納し、名前は Hive の表記規則に従って、dt=2009-01-01 のように記述する必要があります。

注記

Hive 0.13.1 以降では、この機能は msck repair table を使用してネイティブにサポートされるため、recover partitions はサポートされません。詳細については、https://cwiki.apache.org/confluence/display/Hive/ LanguageManual +DDL を参照してください。

Hive 変数をスクリプトに渡す

AWS CLI を使用して Hive のステップに変数を渡すには、次のコマンドを入力し、myKey を EC2 キーペアの名前に置き換え、mybucket をバケット名に置き換えます。この例で、SAMPLE は、先頭に -d スイッチが付いた変数の値です。この変数は Hive スクリプトで ${SAMPLE} のように定義されます。

注記

読みやすくするために、Linux 行連続文字 (\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

aws emr create-cluster --name "Test cluster" --ami-version 3.9 \ --applications Name=Hue Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey \ --instance-type m3.xlarge --instance-count 3 \ --steps Type=Hive,Name="Hive Program",ActionOnFailure=CONTINUE,\ Args=[-f,s3://elasticmapreduce/samples/hive-ads/libs/response-time-stats.q,-d,\ INPUT=s3://elasticmapreduce/samples/hive-ads/tables,-d,OUTPUT=s3://mybucket/hive-ads/output/,\ -d,SAMPLE=s3://elasticmapreduce/samples/hive-ads/]

外部メタストアの場所を指定する

次の手順では、Hive メタストアの場所として設定したデフォルト値を上書きし、新しく設定したメタストアの場所を使用してクラスターを起動する方法を示します。

EMR クラスターの外にメタストアを作成するには
  1. Amazon RDS を使用して MySQL または Aurora データベースを作成します。

    Amazon RDS データベースの作成方法については、「Amazon RDS の開始方法」を参照してください。

  2. データベースと ElasticMapReduce-Master セキュリティグループ間の JDBC 接続を許可するようにセキュリティグループを変更します。

    アクセス用のセキュリティグループの変更方法については、「Amazon RDS ユーザーガイド」の「Amazon RDS セキュリティグループ」を参照してください。

  3. JDBC 設定値は、hive-site.xml に格納されています。

    1. 以下を含む hive-site.xml 設定ファイルを作成します。

      <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mariadb://hostname:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> <description>Username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>password</value> <description>Password to use against metastore database</description> </property> </configuration>

      hostname は、データベースを実行する Amazon RDS インスタンスの DNS アドレスです。usernamepassword は、データベースの認証情報です。MySQL データベースインスタンスおよび Aurora データベースインスタンスへの接続の詳細については、「Amazon RDS ユーザーガイド」の「MySQL データベースエンジンを実行している DB インスタンスへの接続」および「Athena DB クラスターへの接続」を参照してください。

      JDBC ドライバーは Amazon EMR によってインストールされます。

      注記

      値のプロパティには、スペースや改行を含めることはできません。すべてを 1 行にする必要があります。

    2. Amazon S3 上の hive-site.xml などの場所に s3://mybucket/hive-site.xml ファイルを保存します。

  4. クラスターを作成し、カスタマイズされた hive-site.xml ファイルの Amazon S3 の場所を指定します。

    次のコマンドの例では、これを行う AWS CLI コマンドを示しています。

    注記

    読みやすくするために、Linux 行連続文字 (\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

    aws emr create-cluster --name "Test cluster" --ami-version 3.10 \ --applications Name=Hue Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey \ --instance-type m3.xlarge --instance-count 3 \ --bootstrap-actions Name="Install Hive Site Configuration",\ Path="s3://region.elasticmapreduce/libs/hive/hive-script",\ Args=["--base-path","s3://elasticmapreduce/libs/hive","--install-hive-site",\ "--hive-site=s3://mybucket/hive-site.xml","--hive-versions","latest"]

JDBC を使用して Hive に接続する

JDBC を介して Hive に接続するには、JDBC ドライバをダウンロードして、SQL クライアントをインストールする必要があります。以下の例は、SQL Workbench/J を使用して、JDBC を使用している Hive に接続する方法を示しています。

JDBC ドライバをダウンロードするには
  1. アクセスする Hive のバージョンに対応しているドライバをダウンロードし、展開します。Hive バージョンは、Amazon EMR クラスターを作成するときに選択した AMI に応じて異なります。

  2. SQL Workbench/J をインストールします。詳細については、SQL Workbench/J ユーザーズマニュアルの「Installing and starting SQL Workbench/J」を参照してください。

  3. クラスターマスターノードへの SSH トンネルを作成します。Hive のバージョンによって、接続するポートが異なります。Linux ssh ユーザーの場合は以下の表、Windows ユーザーの場合は PuTTY コマンドのコマンドの例が提供されています。

    Linux SSH コマンド
    Hive のバージョン コマンド
    0.13.1 ssh -o ServerAliveInterval=10 -i path-to-key-file -N -L 10000:localhost:10000 hadoop@master-public-dns-name
    0.11.0 ssh -o ServerAliveInterval=10 -i path-to-key-file -N -L 10004:localhost:10004 hadoop@master-public-dns-name
    0.8.1 ssh -o ServerAliveInterval=10 -i path-to-key-file -N -L 10003:localhost:10003 hadoop@master-public-dns-name
    0.7.1 ssh -o ServerAliveInterval=10 -i path-to-key-file -N -L 10002:localhost:10002 hadoop@master-public-dns-name
    0.7 ssh -o ServerAliveInterval=10 -i path-to-key-file -N -L 10001:localhost:10001 hadoop@master-public-dns-name
    0.5 ssh -o ServerAliveInterval=10 -i path-to-key-file -N -L 10000:localhost:10000 hadoop@master-public-dns-name
    Windows PuTTY のトンネルの設定
    Hive のバージョン トンネルの設定
    0.13.1 送信元ポート:10000 送信先:: 10000 master-public-dns-name
    0.11.0 送信元ポート:10004 送信先:: 10004 master-public-dns-name
    0.8.1 送信元ポート:10003 デスティネーション:: 10003 master-public-dns-name
  4. SQL Workbench に JDBC ドライバを追加します。

    1. [Select Connection Profile] (接続プロファイルの選択) ダイアログボックスで [Manage Drivers] (ドライバーの管理) を選択します。

    2. [Create a new entry] (新しいエントリーの作成) (空白のページ) アイコンを選択します。

    3. 名前フィールドに、Hive JDBC と入力します。

    4. [Library] で [Select the JAR file(s)] アイコンをクリックします。

    5. 次の表に示すように JAR ファイルを選択します。

      Hive ドライババージョン 追加する JAR ファイル
      0.13.1
      hive_metastore.jar hive_service.jar HiveJDBC3.jar libfb303-0.9.0.jar libthrift-0.9.0.jar log4j-1.2.14.jar ql.jar slf4j-api-1.5.8.jar slf4j-log4j12-1.5.8.jar TCLIServiceClient.jar
      0.11.0
      hadoop-core-1.0.3.jar hive-exec-0.11.0.jar hive-jdbc-0.11.0.jar hive-metastore-0.11.0.jar hive-service-0.11.0.jar libfb303-0.9.0.jar commons-logging-1.0.4.jar slf4j-api-1.6.1.jar
      0.8.1
      hadoop-core-0.20.205.jar hive-exec-0.8.1.jar hive-jdbc-0.8.1.jar hive-metastore-0.8.1.jar hive-service-0.8.1.jar libfb303-0.7.0.jar libthrift-0.7.0.jar log4j-1.2.15.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar
      0.7.1
      hadoop-0.20-core.jar hive-exec-0.7.1.jar hive-jdbc-0.7.1.jar hive-metastore-0.7.1.jar hive-service-0.7.1.jar libfb303.jar commons-logging-1.0.4.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar
      0.7
      hadoop-0.20-core.jar hive-exec-0.7.0.jar hive-jdbc-0.7.0.jar hive-metastore-0.7.0.jar hive-service-0.7.0.jar libfb303.jar commons-logging-1.0.4.jar slf4j-api-1.5.6.jar slf4j-log4j12-1.5.6.jar
      0.5
      hadoop-0.20-core.jar hive-exec-0.5.0.jar hive-jdbc-0.5.0.jar hive-metastore-0.5.0.jar hive-service-0.5.0.jar libfb303.jar log4j-1.2.15.jar commons-logging-1.0.4.jar
    6. [Please select one driver] (ドライバーを 1 つ選択してください) ダイアログボックスで次の表に従ってドライバを選択し、[OK] をクリックします。

      Hive のバージョン ドライバのクラス名
      0.13.1
      com.amazon.hive.jdbc3.HS2Driver
      0.11.0
      org.apache.hadoop.hive.jdbc.HiveDriver.jar
      0.8.1
      org.apache.hadoop.hive.jdbc.HiveDriver.jar
      0.7.1
      org.apache.hadoop.hive.jdbc.HiveDriver.jar
      0.7
      org.apache.hadoop.hive.jdbc.HiveDriver.jar
      0.5
      org.apache.hadoop.hive.jdbc.HiveDriver.jar
  5. [Select Connection Profile] (接続プロファイルの選択) ダイアログボックスに戻ったら、[ドライバー] フィールドが [Hive JDBC] に設定されていることを確認し、次の表に従って [URL] フィールドに JDBC 接続文字列を入力します。

    Hive のバージョン JDBC 接続文字列
    0.13.1 jdbc:hive2://localhost:10000/default
    0.11.0 jdbc:hive://localhost:10004/default
    0.8.1 jdbc:hive://localhost:10003/default

    クラスターが AMI バージョン 3.3.1 以降を使用している場合は、[Select Connection Profile] (接続プロファイルの選択) ダイアログボックスの [ユーザー名] フィールドに hadoop と入力します。