impala」タグアーカイブ

impalaでmrubyを動かす

この記事は【2015年12月27日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

以前impalaのudfについて調べていて、何か書いてみたいなと思っていた。最近、mysqlでmrubyを動かしている例があると知り、ちょうどmrubyも触ってみたいと思っていたので、今回はimpala udfとmrubyをテーマに、impalaのudfでmrubyが実行できるimpala-udf-mrb_evalを書いてみた。

c++、mruby、どちらも経験が浅いのでコードは稚拙ですが、一応こんな感じで動作します。大規模なデータセットで試してはないですが大きなデータセットで試すと現状だと十分なパフォーマンスがでない。。ですが、表現が広がっていい感じです。

参考リンク

Using UDF’s jar of Hive with Impala

この記事は【2015年11月13日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

I tried to use UDF’s jar of Hive with Impala, but ClassCastException has been thrown. I created a function reflect(string, string, string...) whose symbol is org.apache.hadoop.hive.ql.udf.generic.GenericUDFReflect class.

And log of Impala Daemon is the following:

So I looked into com.cloudera.impala.hive.executor.UdfExecutor and found that the symbol class must be extended org.apache.hadoop.hive.ql.exec.UDF. GenericUDFReflect does not extend UDF but GenericUDF.

I replaced classes which extend GenericUDF with ones which extend UDF. They looks like they work well. Let me show you some examples.

User-Defined Functions (UDFs)

Create file /tmp/impala-scratch/…. with errno=2 description=Error(2): No such file or directory

この記事は【2015年6月3日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

impalaでクエリを実行すると,以下のようなエラーが出ることがある。
クエリはエラーになる。

以下のcommunityサイトで質問されている方がいた。

community.cloudera.com

impala2.0からサポートされている’spill to disk’の機能だ。巨大なデータのソートやjoin,grouping,分析関数の実行時などメモリ消費がリミットを超える場合でもout of memoryで終了するのではなく,パフォーマンスの低下を許容しつつdiskも使って何とか結果を返してくれる。

このspill to diskで使用されるのが,--scratch_dirs="path_to_directory"で,ドキュメントによるとデフォルトでは/tmp/impala-scratchとなっている。スレーブノードのローカルディスク上で/tmp/impala-scratchを探すとやはりいない。恐らくこのディレクトリは自分で作成しないといけない?と思われる。

上記サイトでも言及されているように/tmpは消去される可能性もあることを想定し,今回は/var/tmpに作成することにした。

そして,Cloudera Managerではscratch_dirsの設定を行なう入力フォームが以下のように用意されている。設定を変更してimpalaサービスの再起動を行なう。

参考リンク

Impala queries in Hue remain to be "in flight".

この記事は【2014年2月1日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

単純なログ検索しか行なっていないけれど,HueからImpalaクエリを実行して爆速!と喜んでいたのだが,クエリがCMのActivityMonitorではRUNNINGのまま,Impala Query UIでもXX queries in flightのように表示されていつまで経っても終了しない。 

環境は以下。

  • CDH4.4
  • Hue2.5
  • Impala1.2.2
  • Cloudera Manager4.8

impala-shell経由やJDBC経由で実行したクエリについてはCompletedになっているようだが,Hueで実行した場合にこの現象が見られる。どうも,色々調べてみると同現象に類似した内容のレポートがあがっているようで,known issuesらしい。ここでの現象もおそらくこれに該当するかと。hue close impala queryのようなキーワードでひっかかる。

Hueの将来のバージョンにおいては,リソースのcleaningを完全に保証するものではないものの,Hueで実行されたクエリについてcleaningできるようになる?(下記リンクより)

また,Impalaにおいてはアイドル状態のクエリ,セッションを強制的にcloseするコマンドラインオプションが追加されている。CMからは,Impaladのコマンドライン引数安全バルブで指定できる。しかし,これらを設定してもこの問題については試した限りでは上手くいかなかった。Hueからの実行については,キャンセルするしかないか。。

参考

Impalaのmetadataの更新

この記事は【2014年1月16日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

fluentdでHDFSへ書き込んだログをImpalaですぐに実行したい。

Impala1.2.Xで,Impalad,Catalogd + StateStoreの構成で試験的に稼働させている。CatalogdとStateStoreの役割については,いつも参考にさせていただいているKernel023さんの参考リンクに詳しく説明されている。Catalogdサービスを動かしていればImpala経由で実行したDDLによる変更は,クラスタ内の他のImpaladにも反映されるようだ。なお,HueのImpala Query UIから『METASTOREカタログの更新』を実行するとInvalid method name: 'ResetCatalog' (code THRIFTAPPLICATION): Noneとエラーになる。クエリでinvalidate metadataと実行することは問題ない。 

現在,fluendからHDFSへ書き込んだ時間単位のログ(flush_intervalは数分置き)は,EXTERNAL TABLEでHiveで読めるようにしている。また,時間単位のログはDailyでHiveのDBディレクトリ直下に圧縮して保存している。いずれも,Hive経由で処理しているので,時間単位とDailyでの更新をImpalaへ別途通知する必要がある。 

Impalaに更新を通知するのにどうすればよいものかと思っていたが,結局以下のようにして現状対応することとした。

  • 時間単位のログについては,定期に1時間単位などでrefresh <table>を実行。invalidate metadataだと時間がかかるので,テーブル指定で変更のあるテーブルのみに適用する。
  • 最新の時間単位のログをImpalaクエリで処理する場合は,実行するクエリにrefresh <table>を加える。
  • Dailyでログを圧縮した際には,invalidate metadataを実行。

とりあえずはこれでしばらく様子を見てみる。

メインの開発環境がJavaなので,いつもの慣れたAPIでJDBC経由でクエリを実行したいと思っていたところ,Impalaの実行にはimpala-shell,ODBC,JDBC,Beeswax(Thrift),Impala Query UIのインターフェースがあるようだった。JDBC経由での実行については,以下にサンプルを公開してくれている方がいるので参考にさせていただいた。

https://github.com/onefoursix/Cloudera-Impala-JDBC-Example

参考

プログラミング Hive

プログラミング Hive

  • 作者: Edward Capriolo,Dean Wampler,Jason Rutherglen,佐藤直生,嶋内翔,Sky株式会社玉川竜司
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2013/06/15
  • メディア: 大型本
  • この商品を含むブログ (3件) を見る