Hadoopチュートリアル: HiveServer2とSentryでHiveクエリエディタ

Published on 24 October 2013 in Hive / Tutorial / Video - 4 minutes read

原文

HueはHiveクエリをサブミットするためのウェブインタフェースを提供しています。HueはHiveクエリをサービスするための独自サーバー、Beeswaxを持っていました。Hue2.5では、より洗練され強力なサービス、Apache HiveServer2がサポートされています。

Beeswax Hiveエディタ

HiveServer2の統合により、HueはSentryの恩恵を得ていることに感謝します。セキュリティが提供されることに加え、Hueのインタフェースはより強固になりました。例えば、データベースやテーブルの権限がないユーザーは、クエリエディタやメタストアアプリでそれらを見ることができなくなります。

HiveServer2もメタストアへの効率的なアクセスを提供します。

この一番上にあるBeeswax Hive UIは、生産性を向上するウェブエディタです:

  • 構文のハイライトと自動補完
  • いくつかのクエリをサブミットし、後から進捗を確認
  • UDFの統合
  • 多数のクエリ実行
  • クエリの一部分を選択して送信
  • クエリ結果のダウンロードと保存
  • メタデータを通してナビゲート

ビデオは近日公開します!

Hue 2.x

私たちはHueの最新バージョン(2.5)の使用を推奨しています。 hue.iniのBeeswaxセクションを更新し、HueがHiveServer2を指すようにします。:

[beeswax]
  beeswax_server_host=<FQDN of Beeswax server>
  server_interface=hiveserver2
  beeswax_server_port=10000

Hue 3.x

Hue 3では、もうBeeswaxdをバンドルしておらず、デフォルトでHiveServer2を使うように設定されています。HiveServer2がHueと同じマシンではない場合、hue.iniを下記のように更新します:

[beeswax]
 hive_server_host=<FQDN of HiveServer2>

他のHive固有の設定(例:セキュリティ、impersonation:なりすまし)は、ローカルの/etc/hive/conf/hive-site.xmlから読み込みます。私たちは、元のHiveの設定と確実に同期され続ける(あるいは、HueとHiveを同じマシンに配置する)ことを推奨しています。

トラブルシューティング

AuthorizationException: User 'hue/test.com' does not have privileges to execute 'CREATE' on: default.sample_08"

‘hue’ユーザーはSentryで設定されておらず、CREATE tableの権限を持っていません。(以下で説明する)impersonationは、Sentryの場合には素晴らしいということに気づくでしょう。impersonationのユーザー権限(例: ‘bob’)が、’hue’ユーザーの1人の代わりに使用されるようになります。

org.apache.hive.service.cli.HiveSQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Got exception: org.apache.hadoop.security.AccessControlException Permission denied: user=hive, access=WRITE, inode="/user/test/data":test:supergroup:drwxr-xr-x

デフォルトでHiveServer2は、現在、Hiveのwarehouse(デフォルトで’/user/hive/warehouse’)を所有しており、データファイルは’hive’ユーザーに属している必要があることを意味しています。テーブルの作成時にこのエラーが生じた場合は、データディレクトリ(ここでは/user/test/data)のパーミッションを全員が’書き込める’ようにするか、ユーザーをimpersonateすることを’hive’に許可を与えることで、HiveServer2を古いBeeswaxの振る舞いに戻します。

Hadoopのproxy userとして’hive’を追加し、hive-site.xmlを編集します:

<property>
   <name>hive.server2.enable.doAs</name>
   <value>true</value>
 </property>

その後HiveServer2をリスタートします:

sudo service hive-server2 restart

その他のYARNを使用しているときの一般的なエラー:

Cannot initialize Cluster. Please check your configuration for mapreduce.framework.name and the correspond server addresses.

これはHADOOP_MAPRED_HOME環境変数が設定されていません:

export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce

HADOOP_HOMEも間違っています。

TTransportException('Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found',)

Hueにはシステムの SASL lib が欠けています。

HiveServer2は3つの認証モードをサポートしています:

  • NOSASL
  • NONE (デフォルト)
  • KERBEROS

NOSASLのみがSASLを必要としないので、これに切り替えるか足りないパッケージをインストールするかのどちらかです。

まとめ

Hue は非常に使いやすいユーザーインタフェースでHiveクエリを実行するための素晴らしい環境を提供しています。Beeswaxdは素晴らしいサービスでしたが、HiveServer2が好まれており、廃止される可能性があります。HiveServer2はより安定性とセキュリティを提供しています。

追記として、あなたがもっと速いSQLクエリを探しているなら、Impala Editorをテストすることをお勧めします!

ご質問やフィードバックがあれば、hue-user や @gethue.comまでお気軽にお尋ね下さい!


comments powered by Disqus

More recent stories

10 June 2021
Hue4.10(新しいSQLエディタコンポーネント、REST API、小さなファイルのインポート、Slackアプリなど)がリリースされました!
Read More
29 May 2021
Sqlスクラッチパッドコンポーネントとパブリック REST API を使用して、5 分で独自の SQL エディター (BYOE) を構築する
Read More
26 May 2021
改善されたHueのImporter -- ファイルの選択、方言の選択、テーブルの作成
Read More