Presto 0.54を1台のサーバで起動する
Presto | Distributed SQL Query Engine for Big Data v0.54 を1台のサーバ上で動かす手順です。
Mac OS X でも動きます(と言うよりMac OS Xを想定しています)
JDK 7 が必要になるので、事前にインストールしておいてください。Oracle JDK(Mac 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
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.