Amazon EMR
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 インスタンスに接続する」および「Aurora 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 送信先: master-public-dns-name:10000
    0.11.0 ソースポート: 10004 送信先: master-public-dns-name:10004
    0.8.1 ソースポート: 10003 送信先: master-public-dns-name:10003
  4. SQL Workbench に JDBC ドライバを追加します。

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

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

    3. [Name] フィールドに、「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] (接続プロファイルの選択) ダイアログボックスに戻ったら、[Driver] (ドライバー) フィールドが [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 (接続プロファイルの選択)] ダイアログボックスの [Username (ユーザー名)] フィールドに「hadoop」と入力します。