Hive を使用する

Prev Next

VPC環境で利用できます。

Data Forestは、ユーザーごとに独立した Apache HiveServer2(以下、HS2)サービス環境を構築できます。Hive Metastoreが必要で、Data Forestが提供する Hive Metastoreを使用することになります。Hiveは、データ保存システムに保存された大量のデータを分析・処理する SQLベースのデータウェアハウス(Data Warehouse)ソリューションです。

参考
  • HIVESERVER2-LDAPアプリは、LDAP方式で HS2にアクセスするユーザーを認証します。Kerberos認証はサポートしていません。
  • HS2アプリでは、アプリを起動したユーザーとクラスタ運用者以外のユーザーはログインできません。ログインが必要な場合、HS2アプリオーナーは他のユーザーにログイン権限を与えることができます。

HIVESERVER2-LDAPアプリの詳細情報の確認

アプリの作成が完了すると、詳細情報を確認できます。アプリの詳細情報の StatusStableの場合、アプリが正常に起動されたことを意味します。
アプリの詳細情報を確認する方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールの VPC環境で、i_menu > Services > Big Data & Analytics > Data Forestメニューを順にクリックします。
  2. 左側の Data Forest > Appsメニューをクリックします。
  3. アプリを所有するアカウントを選択します。
  4. 詳細情報を確認するアプリをクリックします。
  5. アプリの詳細情報を確認します。
    df-hive_2-1_updated_ko
    • Quick links
      • supervisor-hs2-auth-ldap-0: HS2を管理できる supervisor URL
      • shell-hs2-auth-ldap-0: HS2ウェブシェル(web shell) URL
      • webui-hs2-auth-ldap-0: HS2 Web UIにアクセスできる URL
        • home: 実行中のセッションや最近実行された Hiveクエリなどを確認可能
        • configuration: HS2の configurationを xml形式で確認可能
        • Metrics Dump: リアルタイムの JMXメトリクスを json形式で確認可能
        • Stack Trace: すべての有効化されたスレッドの stack traceを確認可能
        • LLAP Daemon: Hive LLAP Daemonsのステータスを確認可能
        • local logs: ログを確認可能。運用者のみアクセス可能
    • Connection String: HS2アプリにアクセスできる URL
      • JDBC connection string(inside-of-cluster) : Beeline、Zeppelin、Hue、ユーザー定義プログラムで JDBCへのアクセス時に使用される Connection String。このアドレスは、Data Forest内部ネットワークで HS2にアクセスする際に使用
      • JDBC connection string: Data Forestの外部ネットワークから HS2にアクセスする際に使用するアドレス。ユーザーの PCからは JDBC connected string(inside-of-cluster) にアクセス不可。内部と外部の区別が難しい場合は、JDBC connection stringを使用可能
      • JDBC connection string(inside-of-cluster) Example: Exampleリンクを使用する前にパスワードパラメータの changemeをユーザーアカウントパスワードに変更して使用
      • JDBC connection string Example: Exampleリンクを使用する前に、パスワードパラメータの changemeをユーザーアカウントのパスワードに変更して使用
    • コンポーネント: デフォルトで指定された値が推奨リソースです。HIVESERVER2-LDAP-3.1.0タイプは、hs2-auth-ldapコンポーネント1つで構成されています。
      • hs2-auth-ldap: ユーザーに LDAP方式の認証を処理するためのコンポーネント

例)

HS2のアクセス画面は、次の通りです。

df_hiveserver_vpc_ko

Beelineで HiveServer2アプリにアクセス

beeline -u {JDBC connection string} -n {username} -p {password} コマンドで HS2にアクセスする方法は、次の通りです。

# Kerberos認証
$ curl -s -L -u test01:$PASSWORD -o df.test01.keytab "https://sso.kr.df.naverncp.com/gateway/koya-auth-basic/webhdfs/v1/user/test01/df.test01.keytab?op=OPEN"
$ ls -al
total 20
drwxr-s--- 4 test01 hadoop  138 Dec 16 17:57 .
drwxr-s--- 4 test01 hadoop   74 Dec 16 17:44 ..
-rw-r--r-- 1 test01 hadoop  231 Dec 16 17:36 .bashrc
-rw------- 1 test01 hadoop  302 Dec 16 17:36 container_tokens
-rw-r--r-- 1 test01 hadoop  245 Dec 16 17:57 df_beta.test01.keytab
lrwxrwxrwx 1 test01 hadoop  101 Dec 16 17:36 gotty -> /data1/hadoop/yarn/local/usercache/test01/appcache/application_1607671243914_0024/filecache/10/gotty
-rwx------ 1 test01 hadoop 6634 Dec 16 17:36 launch_container.sh
drwxr-S--- 3 test01 hadoop   19 Dec 16 17:53 .pki
drwxr-s--- 2 test01 hadoop    6 Dec 16 17:36 tmp
$ kinit example -kt df.example.keytab 

# HS2にアクセス
$ beeline -u "jdbc:hive2://hs2-auth-ldap.new-hiveserver2.test01.kr.df.naverncp.com:10001/;transportMode=http;httpPath=cliservice" -n test01 -p '{password}'

正常にアクセスすると、以下のように出力されます。

Connected to: Apache Hive (version 3.1.0.3.1.0.0-78)
Driver: Hive JDBC (version 3.1.0.3.1.0.0-78) 
Transaction isolation: TRANSACTION_REPEATABLE_READ

Zeppelinで Hiveを使用する

  1. Zeppelinにアクセスして画面右上のアカウント名をクリックし、interpreterメニューをクリックします。
    df-hive_12_vpc_ko

  2. JDBCインタープリターを検索します。
    df-quick-start_zeppelin03_ko

  3. アプリ詳細情報の Connection String > JDBC connection string Exampleを参照し、hive url Properitesに以下のように設定を追加します。
    df-hive_011_vpc_ko(1)

    参考

    アカウント作成時に設定したパスワードに記号が含まれている場合、urlエンコードで置き換えて入力する必要があります。

コンテナでシェルにアクセス

ユーザーは HS2アプリコンテナからウェブブラウザを通じてシェル(/bin/bash)にアクセスできます。シェルにアクセスしてコンテナの状況を簡単に確認でき、シェル内で設定ファイルの変更やファイルのダウンロードなどの書き込みタスクを実行できます。

  1. Quick linksリストから shell-hs2-auth-ldap-0にアクセスします。
  2. シェルにアクセスするためにログインします。
    • ユーザー名: HS2アプリを実行したユーザーのアカウント名を入力
    • パスワード: アカウントのパスワードを入力
注意
  • HS2コンテナを起動した機器障害などで HS2コンテナが他のノードで再起動した場合、書き込み内容は失われます。書き込み内容は永続的に保持されないので、シェルは読み取り専用で使用してください。
  • セキュリティのため、HS2アプリを起動したアプリのオーナーアカウントとクラスタ運用者のみシェルにアクセスできるように制限されています。例えば、ユーザー「foo」が起動した HS2アプリのシェルにユーザー「bar」はログインできません。

Hive使用時の注意事項

Hiveルール

公共の HS2とは異なり、SHOW DATABASES;コマンドで他のユーザーのすべてのデータベースリストを出力できます。ただし、許可なく他のユーザーのデータベースにアクセスすることはできません。
HS2アプリを使用する際は、共有 Hive を使用するのガイドを必ず熟知し、ルールを遵守してください。

データベースの命名制限

Hiveのデータベースの命名制限と同じルールを使用します。HS2アプリでは、ルールに反する名前でも CREATE DATABASE コマンドは失敗しません。HS2アプリではシステム上、データベースの命名規則を強制的に適用できないので、データベースを作成する際にルールに反しないようにご注意ください。データベースの命名規則に違反した場合、HS2アプリで作成したデータベースは、公共の HS2で照会されません。

参考

公共の HS2では、ルールに反する名前の場合、エラーが発生します。そのため、データベース作成タスクは HS2アプリではなく、公共の HS2で行うことをお勧めします。

参考

データベース作成時に以下のようなエラーが発生した場合、HDFSのユーザーホームディレクトリに「warehouse」フォルダが作成されているかご確認ください。

ERROR : FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:java.lang.reflect.UndeclaredThrowableException)

Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:java.lang.reflect.UndeclaredThrowableException) (state=08S01,code=1)