HueからHiveやImpalaの実行時にリソースプールを変更したい問題

f:id:yassan0627:20190305110112p:plain

分析用のクラスタでの運用の話。

クラスタへのデータ投入やETLなどのジョブと分析用のジョブを共存共栄したいという要望がある。 基本的に分析系のジョブは重たくなりやすいので、他に影響与えないように隔離したい。

beelineを使う場合は、以下のようにすると、リソースプールを例えば root.analysts として実行出来るのだけれど、、、

beeline -u jdbc:hive2://hiveserver2:10000/ -n analysts -f test.sql --hiveconf mapred.job.queue.name=root.analysts

ちなみに、impalaの場合は以下の感じ。

impala-shell -i hostname:portnum -B -q "set REQUEST_POOL=root.analysts; select * from hoge;"

ただし、リソースプールの指定には、下図のように動的リソースプールの設定も必要で、そこに指定したものだけが指定出来た。
f:id:yassan0627:20190305133710p:plain
※↑超適当です

本題。
今回は、Hueから実行した場合にも同様にリソースプールを別にしたい。

HueからのImpala実行について

HueからのImpala実行については、下図のように、クエリに環境変数をセットするとリソースプールを変更することが出来た(確認はCludera ManagerのImpalaのクエリ詳細から確認)
f:id:yassan0627:20190305104044j:plain

ただし、事前に以下のように、変更できるよう設定の追加が必要 f:id:yassan0627:20190305115703p:plain

他にも debug_action,explain_level,mem_limit,optimize_partition_key_scans,query_timeout_s などがある。

また、 root.users.analysts を指定しても機能しなかった。なんでだろ。 配置ルール的には無かったら作成としているのに。
階層的に root.users の子だから root.* は行けても、 root.users.* はダメなのか?

課題

Hue使った場合のデフォルト指定ってどうやるんだろ?

HueからHive実行について(うまくいかん)

同じ様にHueからのHive実行も、リソースプールを分けたい。
試しに Cloudera ManagerのHueの設定で、 hive-site.xml の設定をで、下図の様にすれば、リソースプール指定出来ると思ったがダメだった。

f:id:yassan0627:20190304201211p:plain

ちょっと調べてみると、以下の記事を発見。

hadoop - Is there a configuration setting for Hive on Hue (CDH 5.9.3) that limits the number of containers that can be used? - Stack Overflow によると、

Hue is a UI and cannot control how many resources Hive uses. This is controlled by YARN via scheduling policies. For CDH clusters, the fair scheduler is generally used.

http://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/FairScheduler.html

You should look at the following for some background information on how to set this up.
* Untangling Apache Hadoop YARN, Part 3: Scheduler Concepts
* Untangling Apache Hadoop YARN, Part 4: Fair Scheduler Queue Basics

との事/(^o^)\ナンテコッタ

また、Hueでログインしたユーザがリソースプールとして、 root.users.(Hueのログインユーザ名) として実行される事も分かった。 今使っているアカウントは、データ投入で使っているアカウントと同じなので、新規で分析用につくるのも微妙(ディレクトリ変えたくないし権限も変わるので)。。。

さてさて、どうしようかな。


CDH v5.14


追記

HueからのHive実行時のリソースプールの指定について

Impalaと同様に下図のように指定すると一応、リソースプールの指定は出来た。
f:id:yassan0627:20190306180612p:plain
mapred.job.queue.nameリソースプール名 を指定すると、指定したリソースプールで実行することが分かった。

とは言え、デフォルトで指定が出来ないので不便なのはそのままだけど。