Presto 0.54を1台のサーバで起動する

Presto | Distributed SQL Query Engine for Big Data v0.54 を1台のサーバ上で動かす手順です。

Mac OS X でも動きます(と言うよりMac OS Xを想定しています)
JDK 7 が必要になるので、事前にインストールしておいてください。Oracle JDKMac OS X版)を使っていますが、OpenJDKでも動くはずです。

もし読むのが面倒なら、これを実行すればOKです:https://gist.github.com/frsyuki/8001572

githubからソースコードをcloneする

git clone https://github.com/facebook/presto.git
cd presto
git checkout v0.54

JDKのバージョンを7にする

export JAVA_HOME="$(/usr/libexec/java_home -v 1.7.0)"

presto-serverをビルドする

version="$(xpath pom.xml "/project/version/text()")"
pushd presto-server
mvn package assembly:assembly -DdescriptorId=bin -Dtest=skip -DfailIfNoTests=false
popd

他のコンポーネントを改変したい場合は、presto-server/ディレクトリではなくルートディレクトリでビルド(assembly:assembly)する必要があります。

これで presto-server/target/presto-server-0.54-SNAPSHOT.tar.gz ファイルができあがるので、presto-deploy/ ディレクトリに展開しておきます:

rm -rf presto-deploy
mkdir -p presto-deploy
pushd presto-deploy
tar zxvf "../presto-server/target/presto-server-$version.tar.gz"

設定ファイルを書いたりする

最終的には、presto-discovery, presto-coordinator, presto-worker の3つのプロセスを動かします。今回は、それぞれにディレクトリを作ることにします。

それぞれのディレクトリには etc/ ディレクトリを作り、設定ファイルを置いておく必要があります。ここにサンプルの設定を固めた物を置いておきました:
config.tar.gz

これを展開、presto-coordinator, presto-worker ディレクトリを作成します:

wget https://gist.github.com/frsyuki/8001572/raw/c4524795d31a23f37365b0ad850c08899614ab98/config.tar.gz
tar zxvf config.tar.gz
cp -a presto-server-$version/* presto-coordinator/
cp -a presto-server-$version/* presto-worker/
rm -rf presto-server-$version

discovery-server を配備する

Prestoを起動するために必要なコンポーネントである discovery-server は、Prestoとは完全に疎結合化されており、別プロジェクトからリリースされています。これをダウンロード & 展開します:

curl "http://search.maven.org/remotecontent?filepath=io/airlift/discovery/discovery-server/1.16/discovery-server-1.16.tar.gz" | tar zxvf -
mv discovery-server-*/* discovery-server/
rm -rf discovery-server-*

起動する

3つのプロセスを起動します:

cd discovery-server
./bin/launcher run
cd presto-coordinator
./bin/launcher run
cd presto-worker
./bin/launcher run

クライアントを起動する

これで走ります:

java -jar presto-cli-executable.jar --server http://127.0.0.1:8880/ --catalog native --schema default

SELECT 1 などが動きます。

Next step

サンプルの設定では jmx コネクタと native コネクタを有効化してあります。
HDFSからデータを読み出すには hive-hadoop1 または hive-cdh4 コネクタを有効化する必要があります。



Running Presto v0.54 on a single server

This is a procedure to run Presto | Distributed SQL Query Engine for Big Data v0.54 on a single server.

Presto runs on Mac OS X (rather I assume Mac OS X).
You need to install JDK 7 in advance. I used Oracle JDK (for Mac OS X) but OpenJDK should also work well.

If you don't have time to read this short article, you can simplly run this script: https://gist.github.com/frsyuki/8001572

Clone source code from Github

git clone https://github.com/facebook/presto.git
cd presto
git checkout v0.54

Set default java version to JDK 7

export JAVA_HOME="$(/usr/libexec/java_home -v 1.7.0)"

Build presto-server

version="$(xpath pom.xml "/project/version/text()")"
pushd presto-server
mvn package assembly:assembly -DdescriptorId=bin -Dtest=skip -DfailIfNoTests=false
popd

If you modify other components, you need to build (run assembly:assembly) on the root directory of presto instead of presto-server directory.

OK, I got presto-server/target/presto-server-0.54-SNAPSHOT.tar.gz file. Extract it to presto-deploy/ directory:

rm -rf presto-deploy
mkdir -p presto-deploy
pushd presto-deploy
tar zxvf "../presto-server/target/presto-server-$version.tar.gz"

Writing configuration files

Presto needs at least 3 processes: presto-discovery, presto-coordinator, and presto-worker. Here creates one directory for each processes.

Each directory needs ./etc/ directory that contains some config files. I uploaded tar.gz of the files here: config.tar.gz

Extract it and create presto-coordinator and presto-worker directories:

wget https://gist.github.com/frsyuki/8001572/raw/c4524795d31a23f37365b0ad850c08899614ab98/config.tar.gz
tar zxvf config.tar.gz
cp -a presto-server-$version/* presto-coordinator/
cp -a presto-server-$version/* presto-worker/
rm -rf presto-server-$version

Deploy discovery-server

Presto depends on a process called discovery-server but it's completely separated from Presto itself. Another OSS project releases it. Download it & extract:

curl "http://search.maven.org/remotecontent?filepath=io/airlift/discovery/discovery-server/1.16/discovery-server-1.16.tar.gz" | tar zxvf -
mv discovery-server-*/* discovery-server/
rm -rf discovery-server-*

Launch

I ran 3 processes:

./discovery-server/bin/launcher run
./presto-coordinator/bin/launcher run
./presto-worker/bin/launcher run

Run client

java -jar presto-cli-executable.jar --server http://127.0.0.1:8880/ --catalog native --schema default

That's it. You can run SQL like SELECT 1.

Next step

The sample configuration I uploaded enables jmx connector and native connector.
You need to enable hive-hadoop1 or hive-cdh4 connector to read data from HDFS.