re:dashでEMR上のHive・Prestoクエリを可視化する
BIツールには色々なものがありますが、今回はOSSのre:dashを使ってEMR上で実行するHive・Prestoクエリを可視化してみます。
re:dashとは
re:dashはOSSのPython製可視化ツールです。Web UIからRedshift・BigQuery・MySQL・Hiveなど様々なデータソースのクエリを可視化できます。(対応してるデータソースの数がすごく多いです)
今回はEMR上のHive・Prestoと接続して可視化を行ってみます。
環境
EMR立ち上げ
EMRの立ち上げに関しては割愛します、公式を参考にしてやれば大丈夫かと思います。今回はマスターノードをm3.xlarge1台・コアノードをm3.xlarge2台にして立ち上げました。
https://docs.aws.amazon.com/ja_jp/ElasticMapReduce/latest/DeveloperGuide/gsg-launch-cluster.html
注意点
アプリケーションにHive, Presto-Sandboxを入れるのを忘れないようにして下さい。 HiveServer2に関してはEMR4.7.1では勝手に立ち上がるので大丈夫です。
また、セキュリティグループでHiveとPrestoのポートをre:dashのインスタンスに対して解放しておきましょう。Hiveがデフォルト10000で、Prestoがデフォルト8889です。
re:dashのインスタンス立ち上げ
公式のセットアップ手順は以下です。
http://docs.redash.io/en/latest/setup.html
上のURLにAWSのセットアップ済みAMIが公開されているので、それを使ってインスタンスを立ち上げます。 今回はami-78967519を使いました。
インスタンスタイプはデモならt2.microで十分です。また、セキュリティグループで22,80,443ポートを開けておいて下さい。
依存関係インストール
AMIからインスタンスを作成した場合は特に依存関係のインストールはいらないと思っていたのですが、pythonでHiveと接続するpyHive周りで色々とエラーが出てしまったので依存関係を手動でインストールします。(AMIのバージョンによっては必要ないかもしれません。また、Hiveを使わない場合は必要ない手順だと思います)
$ sudo apt-get update $ sudo apt-get install libsasl2-dev python-dev libldap2-dev libssl-dev $ sudo apt-get install git $ sudo pip install git+https://github.com/dropbox/PyHive.git $ sudo pip install pyhive[hive]
※pyHiveをpipからインストールしたら
No module named TCLIService
エラーが出てしまったのでgitから直接インストールしています。
re:dashのアップデート
re:dashはかなりアップデートが頻繁で、AMIに入っているバージョンが少し古くなっているので最新版へのアップデートを行います。
公式がアップデート用のfabricスクリプトを提供してくれているので今回はそれを使います。詳しくは以下に記載してあります。
http://docs.redash.io/en/latest/upgrade.html
fabricを用いたアップデート手順
以下のfabfile.pyを使ってください。僕はローカルから実行しました。
$ pip install fabric requests $ fab -H {$hostname} -u {$username} -i {$sshkey(任意)} deploy_latest_release
アクセス
ここまでやったらhttp://[public ip]/login
にアクセスし、以下の画面が表示されることを確認します。
初期ではEmail,Passwordともadminでログインできます。
Hive・PrestoのData Sourcesへの追加
EMR上のHive・Prestoをデータソースに追加します。その他のデータソースに関してはhttp://docs.redash.io/en/latest/datasources.htmlをご覧ください。
http://[public ip]/data_sources
にアクセスし、「New Data Source」を選択します。
Typeから「Hive」「Presto」を選択し、必要項目を入力します。 HostにはEMRクラスタのマスタノードのIPを入力して下さい。
クエリの可視化
データソース選択
実際にクエリを可視化してみます。http://[public ip]/queries/new
にアクセスし、「Data Source」で先ほど登録したHiveデータソースを選択してみます。
Hiveに登録済みのテーブルがあれば画面左側に表示されます。
クエリ可視化
最後に実際にクエリを入力し、「Execute」を押します。 画面下にクエリ結果が出て来れば成功です。あとは「NEW VISUALIZATION」から適当に可視化してください。
クエリの最後に;が入っているとエラーになるので注意してください。それ以外の理由で上手くいかない時は/opt/redash/logs
を見てみましょう。OSSなのでコードとログを両方見れば何とかなるはずです。
終わり
以上です。最近可視化ツールも増えてきましたが、re:dashはクエリのスケジュール実行ができたりデータソースが多かったり、何よりOSSで面白いので是非触ってみてください。