HDInsight で Presto を動かしてみよう


Microsoft Japan Data Platform Tech Sales Team

高木 英朗

 

Presto とは?
Presto は、Facebook 社が開発した人気のあるビッグデータ用の高速な分散 SQL クエリエンジンです。前回記事の「HDInsight のインタラクティブ Hive (LLAP) とは?」でご紹介した Hive on Tez + LLAP と同様に、インタラクティブなレスポンス速度が期待できるエンジンです。どちらも目的は同じですが、Presto の利用に慣れている方は、HDInsight 上でもスキルをそのまま生かすことができます。
以下は Presto の概念図です。

From <https://prestodb.io/overview.html>


Presto には大きく、構文解析、実行計画を作成する Coordinator と処理を実行する Worker の役割があります。高速化する為に、すべてインメモリで処理を実行します。また、いろんなシステムに保存されたデータを利用することを想定してるため、ストレージを抽象化して、いろんなデータソースに対して容易に扱えるようにデザインされています。ストレージプラグインを Connector と呼びメタデータの取得、データのロケーション認識、データ自体へのアクセスを実行します。これにより、Hadoop の HDFS 以外のデータソース (SQL Server, MySQL, Redis, Kafka, Cassandra, etc) にもクエリを実行できるようになっています。


Presto on HDInsight の利用方法
それでは HDInsight 上に Presto 環境を作成して動かしてみましょう。HDInsight 環境のデプロイ方法はこれまでとほとんど同様ですが、以下の要件についてご注意ください。

  • HDI3.5 以上の Linux クラスターが必要
  • Worker Node が最低 4 ノード必要

Presto をインストールするにはデプロイの詳細設定において、以下の図のように Script Action を指定します。

  • [名前]: スクリプト アクションの表示名を入力します。
  • [バッシュ スクリプト URI]: https://raw.githubusercontent.com/hdinsight/presto-hdinsight/master/installpresto.sh
  • [ヘッド]: このオプションをオンにします。
  • [ワーカー]: このオプションをオンにします
  • [ZOOKEEPER]: このチェック ボックスをオフにします。
  • [パラメーター]: このフィールドは空のままにします。


上記を設定し、デプロイを実行します。

デプロイが完了したらすぐに Presto が使える環境となります。動作を確認するために、Head Node に SSH で接続し、以下のコマンドで Presto の CLI を起動します。

presto --schema default

Presto が起動したらサンプルテーブルに対してクエリを実行してみましょう。

presto:default> select count (*) from hivesampletable;



Presto の設定変更
Presto の設定変更を行う場合は、Head Node に SSH で接続し、以下のファイルを編集します。

/var/lib/presto/presto-hdinsight-master/appConfig-default.json

設定についてはこちらをご参照ください。
設定が変更したら Presto を再起動します。HDInsight の Presto は Slider を使って YARN で稼働していますので、以下のコマンドで再起動を実行します。

sudo slider stop presto1 --force
sudo slider destroy presto1 --force



Airpal の利用
Airpal は Presto 用の Web ベースのクエリ実行ツールです。Web ブラウザからクエリを実行することができて便利なため、こちらも必要に応じてインストールします。

スクリプトアクションを使って Airpal をインストールするために、Presto の Coordinator のアドレスを使うため、まずは Coordinator のアドレスを確認します。Head Node に SSH でログインし、以下のコマンドを実行します。

sudo slider registry --name presto1 --getexp presto

コマンドを実行すると以下の様な JSON 形式のレスポンスが得られますので、"value" フィールドの IP アドレスとポート番号の値をコピー(またはメモ)します。

{
  "coordinator_address" : [ {
    "value" : "192.168.1.4:9090",
    "level" : "application",
    "updatedTime" : "Fri Jun 30 04:12:54 UTC 2017"
  } ]
}

次に、こちらのテンプレートから、カスタムデプロイの画面を開きます。

必要情報を入力し、Prestoadress 欄に先ほどコピーしたアドレスおよびポート番号の値を貼りつけて [購入] をクリックします。これにより HDInsight クラスターのエッジノードが作成され、Airpal が利用可能になります。

HDInsight クラスタの管理画面から [アプリケーション] メニューにアクセスします。


インストール済みアプリから、 Airpal のポータルのリンクをクリックします。


Airpal の画面が起動します。画面の上段にクエリを記述して、Run を押下するとクエリが実行されて画面下に結果が表示されます。実行したクエリの履歴を見ることができたり、必要なクエリを保存しておくことができて便利ですので、お試しいただければと思います。



Power BI からの接続
ODBC コネクタを使うことで Power BI Desktop から Presto に接続することが可能です。

Simba の Presto 用の ODBC ドライバーは以下の URL からご確認頂けます。
https://powerbi.microsoft.com/ja-jp/documentation/powerbi-desktop-connect-using-generic-interfaces/#data-sources-accessible-through-odbc

Simba の Presto 用の ODBC ドライバーの使用方法は以下の URL からご確認頂けます。
http://www.simba.com/products/Presto/doc/ODBC_QuickstartGuide/content/quick_start/windows/connecting/powerbi.htm


関連記事

Comments (0)

Skip to main content