Hive を使用する

Prev Next

最新のコンテンツが反映されていません。早急にアップデート内容をご提供できるよう努めております。最新のコンテンツ内容は韓国語ページをご参照ください。

VPC環境で利用できます。

このガイドでは、Object Storageバケットにデータを保存した後、Hueと Beelineを用いて簡単な Hiveクエリを実行する方法について説明します。

アーキテクチャの例

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

chadoop-4-5-007.png

Hiveクエリを実行すると、次のステップ通りにクエリが実行されます。

  1. Hiveクライアントから Cloud Hadoopクラスタにある Hiveサーバにクエリを提出
  2. サーバはクエリを処理し、マスターサーバにインストールされたメタデータ DB(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>

Hiveテーブルを作成する方法は、次の通りです。

  1. サンプルデータをダウンロードします。圧縮を展開した後、AllstarFull.csv ファイルを Object Storageバケットにアップロードします。

    • Hiveでは、データファイルの locationをフォルダ単位で読み込むため、1つのフォルダにつき1つのデータを保存します(推奨)。
    参考

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

    chadoop-4-5-001_ja.png

  2. Hue Hiveエディタ で、下記の構文で Hive External Tableを作成します。

  • location: データセットファイルが保存されたバケットパスを指定
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クエリを実行できます。このガイドでは、以下の<Hiveクエリ実行ツールの例>でクエリを実行する方法について説明します。

  • <Hiveクエリ実行ツールの例>
  • Hueの Hiveインタプリタ
  • Hiveクライアントのうち、SQLLine CLIをベースにした Beeline

Hueの Hiveインタプリタ

Hueの Hiveインタプリタを用いて Hiveクエリを実行する方法は、次の通りです。

  1. Hueにログインし、Hiveインタプリタで HiveQLクエリを実行します。

    SELECT * FROM allstarfull LIMIT 10;
    
  2. 結果画面を通じて s3にアップロードしたファイルが Hiveテーブルと連携されたか確認します。
    chadoop-4-5-002_ja.png

Beeline

Beelineを用いて Hiveクエリを実行する方法は、次の通りです。

  1. Hiveクライアントがインストールされたホストに SSHで直接アクセスし、以下のコマンドで Beelineセッションを開始します。

    • [HIVE-SERVER2-SERVER] にはマスターノード(m-00x)ホスト名を入力します。
    beeline -u "jdbc:hive2://[HIVE-SERVER2-SERVER]:10000" -n hive
    
    参考

    ホストへのアクセス方法は、SSHでクラスタノードにアクセスガイドをご参照ください。

  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
    

    chadoop-4-5-003_ja.png

  4. 結果は次の通りです。

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

Hueの LLAPを有効化

Hueのエディタリストで LLAPを有効にする方法は、次の通りです。

参考

Cloud Hadoopコンソールで作成したクラスタを選択した後、 [Application別に見る] を通じて Ambari Web UIにアクセスできます。詳細は、Ambari UIガイドをご参照ください。

  1. Ambariに接続し、 [Hive] > [CONFIGS] > [SETTINGS] で Hive LLAPを有効にします。設定を追加した後、 [SAVE] ボタンを押して保存し、 [RESTART] ボタンを押して再起動します。

chadoop-4-5-008_ko.png

  1. [Hue] > [CONFIGS] > [Hue Service Module] で Hue Hive LLAP Moduleを有効にします。設定を追加した後、[SAVE] ボタンを押して保存し、[RESTART] ボタンを押して再起動します。

chadoop-4-5-009_ko.png

  1. Hueのエディタリストで LLAPエディタが有効になっていることが確認できます。

chadoop-4-5-010_ja.png