Prestoをビルドした

Prestoは分散SQLエンジンと呼ばれるソフトウェア。
Facebookが開発元だが、OSSとして公開されている。
ライセンスはApache Licence 2.0。

従来は分散SQLエンジンとしてHadoop上で動くHiveというものがあったが、HiveはSQLクエリーを多段のMapReduceに変換して処理を実行するので、 処理が重たく、リアルタイムな解析には向かなかった。

そこで、リアルタイムにビックデータをSQLできるものが色々と出てきた。
有名なところではCloudera Impala、Apache Drill、Prestoなど。
あと、多段のMapReduceではなくDAGに変換してくれるApache Tezとかいうソフトウェアもあって、これと一緒にHiveを使えば処理が早くなるらしい。

機能的な違いはほとんど把握してないが、Prestoに関していえば、今をときめくTreasure DataがPrestoをめっちゃ推してる(ように感じる)。

ビルドについて

ビルド環境はCentOS7。

PrestoのビルドにはJava8とMaven(3.2.3+)とPython(2.4+)が必要。
Java7しか入ってなかったので、yumでJava8を入れる。(もちろん、yumで入れたJava7を消してから)

$ sudo yum install java-1.8.0-openjdk

Mavenも入ってなかったので、入れることに。 yumで入れると、Java7も一緒に入れられ、せっかく入れたJava8が見えなくなるというつらい事象が発生した。 そこで本家からバイナリを落としてくることに。

$ wget http://ftp.riken.jp/net/apache/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz # バイナリをダウンロード
$ tar zxvf apache-maven-3.3.3-bin.tar.gz # tarボールを解凍
$ sudo cp -R apache-maven-3.3.3 /srv/apache-maven-3.3.3 # ディレクトリは適当な場所に移動(もっと適切な場所があるかもしれない)
$ export PATH=/srv/apache-maven-3.3.3/bin:$PATH # Mavenのコマンドを使えるようにパスを通す

Pythonはもう入っていたので何もすることはなし。

続いて、gitで適当なディレクトリにソースコードを落としてくる。

$ git clone https://github.com/facebook/presto.git

できたディレクトリに入り、ビルドと一緒にテストも実行するならmvn clean install、テストはスキップするならmvn clean install -DskipTestsとコマンドを打てばビルドが始まる。
今回はテストはスキップした。

あとは全てMavenさんがよしなにやってくれる。
ビルドが終わるまで20分ちょっとかかるのでアニメでも見ながら過ごせば良い。