Cloud HadoopでHive Queryを実行する

目次
始める前に
アーキテクチャの例
Hiveテーブルの生成
Hiveクエリの実行
クラスタの終了

このページではCloud Hadoopクラスタを生成し、Object Storageにデータを保存した後、HueとBeelineを通じて簡単なHive Queryを実行する方法をご説明します。

始める前に

次のような順番でCloud Hadoopを設定してください。

  1. Object Storage バケットを生成する
  2. Cloud Hadoopクラスタを生成する

アーキテクチャの例

引き続き保管する必要のあるデータはObject Storage バケットに保存し、Cloud Hadoopクラスタは必要な時のみ使います。

Hive Queryを実行すると次のような順番でクエリが実行されます。

  1. Hive ClientでCloud HadoopクラスタにあるHiveサーバにクエリを提出します。
  2. サーバはクエリを処理してマスターサーバに設置された Hive Metadata データベース(MySQL)にメタデータをリクエストします。
  3. サーバはObject Storageのバケット内に保存されたデータをロードします。
  4. Hiveサーバはクライアントに結果を表示します。

Hiveテーブルの生成

このセクションではNAVERクラウドプラットフォームObject Storage バケットにサンプルデータファイルをアップロードして、Hiveでこのデータを使用できるようにHive External Tableを生成します。

Object Storageバケットにあるデータを使用するためには hive-site.xmlに次のような構成が必要です。

fs.s3a.access.key=API-ACCESS-KEY
fs.s3a.connection.ssl.enabled=false
fs.s3a.endpoint=http://kr.objectstorage.ncloud.com
fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
fs.s3a.secret.key=API-SECRET-KEY
  1. バケットにサンプルデータファイルをアップロード

    サンプルデータをダウンロードしてデータセットファイルをObject Storage バケットにアップロードします。

    提供されるサンプルデータは Lahman's Basebasll Database 2012バージョンの一部であり、データの全ての著作権はSean Lahmanにあります。

    Hiveでデータファイルのlocationをフォルダ単位で読み取るため、フォルダ一つにデータセット一つを保存されることをお勧めします。

  2. Hive External Tableの生成

    Ambari Hive View2.0またはHue Hive 編集機で以下の文を用いてHive External Tableを生成します。ここで locationはデータセットファイルが保存されたbucket pathを指定します。

     DROP table allstarfull;
    
     CREATE external TABLE if not EXISTS `allstarfull` (
         `playerID` VARCHAR(20),
         `yearID` INT,
         `gameNum` INT,
         `gameID` VARCHAR(30),
         `teamID` VARCHAR(4),
         `lgID` VARCHAR(4),
         `GP` INT,
         `startingPos` INT
     )
     ROW FORMAT DELIMITED
     FIELDS TERMINATED BY ','
     location 's3a://deepdrive-hue/input/lahman2012/allstarfull';
    

Hiveクエリの実行

Cloud Hadoopで提供する多様なツールを使用してHiveクエリを実行できます。このセクションでは次のようなツールを使ってクエリを実行する方法をご案内します。

  • HueのHive Interpreter
  • Hive Clients の中でSQLLine CLIに基づいたBeeline

HueのHive Interpreter

HueにログインしてHive Interpreterで簡単なHiveQLクエリを使用してS3にアップロードした ファイルがHiveテーブルと接続されたか確認します。

SELECT * FROM allstarfull LIMIT 10;

結果は次の通りです。

Beeline

  1. Hive Clientsが設置されたホストに直接アクセスしてBeelineセッションをスタートします。

     beeline -u "jdbc:hive2://[HIVE-SERVER2-SERVER]:10000" -n hive
    

    ホストアクセスは ノード直接アクセスガイドをご参照ください。

  2. Beeline プロンプトが表示されたらHiveQLクエリを実行します。今回は結果を出力せずに Object Storageに保存します。

     beeline> INSERT OVERWRITE DIRECTORY 's3a://deepdrive-hue/output/' ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
     SELECT playerid, sum(gp) from allstarfull group by playerid;
    

    参考 クエリを保存する前にObject Storageバケットに指定した位置(ディレクトリ)が存在するか確認します。

  3. 結果が正常に保存されたか確認します。

     hadoop fs -cat s3a://deepdrive-hue/output/000000_0
    

    結果は次の通りです。

     aaronha01,24
     aasedo01,1
     abreubo01,2
     adamsac01,0
     adcocjo01,2
     ageeto01,2
     aguilri01,3
     aguirha01,1
     alexado01,0
     alfoned01,1
     allendi01,6
     allenjo02,1
     alleyge01,1
     allisbo01,2
     alomaro01,12
     ...
    

クラスタの終了

作業が実行されていない時にコストがかかるのを防ぐためには、Cloud Hadoopクラスタを終了します。これ以上不要なデータセットファイルはバケットから削除するか、バケット自体を削除します。

削除が完了したファイルまたはバケットはリカバリーできません。

Cloud Hadoop クラスタの終了

Cloud Hadoop クラスタを終了すると、ノードのローカルファイルシステムや HDFS内に保存されたファイルが全て無くなります。必要なファイルはObject Stroageバケットにコピーするなど、別途コピーしておく必要があります。

Cloud Hadoopコンソールから終了するクラスタを選択して 削除 ボタンをクリックします。

Object Stroage ファイルまたはバケットを削除する

Object Storageコンソールから削除するファイルを選択して 編集 > 削除するをクリックします。

バケットを削除する際は、バケットの右側ボタンをクリックして バケットを削除をクリックします。

に対する検索結果は~件です。 ""

    に対する検索結果がありません。 ""

    処理中...