【Facebook Presto:1】Presto 3Node で、動かす (Hive-CDH4 Plugin)

FaceBook のエンジニアが、公開している

Presto | Distributed SQL Query Engine for Big Data

を、試してみる事にします。

1Node は動いたので、3Nodeで構築してみることに。

環境

既に、Hadoop,HIVE のクラスタは、構築済です。
したがって、Hadoop,HIVE のNodeに共存する形になります。*1

Install

3Node しかないので、Discovery Service (discovery-server-1.16.tar.gz)
は、使用しません。前回( 2014-01-04 - Guutaraの日記)のNodeを
Discovery としても、使用します。
Presto には、Discovery Service の機能も入っていますので、Nodeが小さいうちは兼用で良いようです。


前回構築した、ディレクトリを再利用して作ります。その方が、楽なので。。

[root@data2 opt]# tar zcvf presto-server-mod-0.56.tar.gz presto-server-0.56

これを、2Nodeにコピーをして、opt配下に展開しておきます。

config

node.properties は、node.id を、一意にかえます。

[root@data3 opt]# vi presto-server-0.56/etc/node.properties 
[root@data3 opt]# cat presto-server-0.56/etc/node.properties 
node.environment=production
node.id=3fffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/presto/data
[root@data4 opt]# vi presto-server-0.56/etc/node.properties 
[root@data4 opt]# cat presto-server-0.56/etc/node.properties 
node.environment=production
node.id=4fffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/presto/data

config.properties は、どのノードも同じものになりました。

[root@data3 ~]# vi /opt/presto-server-0.56/etc/config.properties 
[root@data3 ~]# cat /opt/presto-server-0.56/etc/config.properties 
coordinator=false
datasources=jmx,hive
http-server.http.port=9090
presto-metastore.db.type=h2
presto-metastore.db.filename=var/db/MetaStore
task.max-memory=256GB
discovery.uri=http://data2.hadoop.local:9090
[root@data4 opt]# vi presto-server-0.56/etc/config.properties 
[root@data4 opt]# cat presto-server-0.56/etc/config.properties
coordinator=false
datasources=jmx,hive
http-server.http.port=9090
presto-metastore.db.type=h2
presto-metastore.db.filename=var/db/MetaStore
task.max-memory=256GB
discovery.uri=http://data2.hadoop.local:9090

Test (1Node,2Node,3Node,HIVE)

1〜3Nodeで、同じQueryを流してみました。
ついでに、HIVEも。。。

Nodeを追加すると、Prestoは、ほぼ、リニアに性能は向上しました。


HIVEは、同じNodeで動いているので、Node数などは、一緒の状態。
ただし、Prestoは、512mb しかメモリは割り当てられていないので、大分、不利ですけど。
それでも、2倍の性能はでました。

こんどは、JDBCで、試してみたいけど、
あまり、完成度があがってないようなので、もう少しまとうかなと、思ってます。。

以下、結果です。

Test Results


1Node
(0:35 [659K rows, 61.4MB] [18.9K rows/s, 1.76MB/s])

[root@data2 opt]# ~/presto  --server psdata2.hadoop.local:9090 --catalog hive --schema default
presto:default> select time from oracle_sysstat limit 5;
         time         
----------------------
 2013-10-31T08:36:28Z 
 2013-10-31T08:36:28Z 
 2013-10-31T08:36:28Z 
 2013-10-31T08:36:28Z 
 2013-10-31T08:36:28Z 
(5 rows)

Query 20140106_075412_00021_v8qy2, FINISHED, 1 node
Splits: 18 total, 2 done (11.11%)
0:35 [659K rows, 61.4MB] [18.9K rows/s, 1.76MB/s]

presto:default> 


2Node
(0:18 [659K rows, 61.4MB] [37.2K rows/s, 3.46MB/s])

presto:default> select time from oracle_sysstat limit 5;
         time         
----------------------
 2013-10-31T08:52:18Z 
 2013-10-31T08:52:18Z 
 2013-10-31T08:52:18Z 
 2013-10-31T08:52:18Z 
 2013-10-31T08:52:18Z 
(5 rows)

Query 20140106_075738_00023_v8qy2, FINISHED, 2 nodes
Splits: 18 total, 3 done (16.67%)
0:18 [659K rows, 61.4MB] [37.2K rows/s, 3.46MB/s]


3Node
(0:08 [731K rows, 58.8MB] [86.5K rows/s, 6.96MB/s])

presto:default> select time from oracle_sysstat limit 5;
         time         
----------------------
 2013-10-31T13:25:20Z 
 2013-10-31T13:25:20Z 
 2013-10-31T13:25:20Z 
 2013-10-31T13:25:20Z 
 2013-10-31T13:25:20Z 
(5 rows)

Query 20140106_103939_00052_v8qy2, FINISHED, 3 nodes
Splits: 18 total, 6 done (33.33%)
0:08 [731K rows, 58.8MB] [86.5K rows/s, 6.96MB/s]


HIVE
(Time taken: 17.035 seconds)

[root@data2 opt]# hive
Logging initialized using configuration in file:/etc/hive/conf-cdh4-ha-hive/hive-log4j.properties
Hive history file=/tmp/root/hive_job_log_aa84ad1a-5ef6-4d22-85f5-adc8092f310e_2034885544.txt
hive> select time from oracle_sysstat limit 5;
Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks is set to 0 since there's no reduce operator
Starting Job = job_201311121157_6297, Tracking URL = http://data4.hadoop.local:50030/jobdetails.jsp?jobid=job_201311121157_6297
Kill Command = /usr/lib/hadoop/bin/hadoop job  -kill job_201311121157_6297
Hadoop job information for Stage-1: number of mappers: 5; number of reducers: 0
2014-01-06 17:00:07,682 Stage-1 map = 0%,  reduce = 0%
2014-01-06 17:00:11,716 Stage-1 map = 80%,  reduce = 0%, Cumulative CPU 5.16 sec
2014-01-06 17:00:12,730 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 6.44 sec
2014-01-06 17:00:13,739 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 6.44 sec
2014-01-06 17:00:14,748 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 6.44 sec
2014-01-06 17:00:15,758 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 6.44 sec
MapReduce Total cumulative CPU time: 6 seconds 440 msec
Ended Job = job_201311121157_6297
MapReduce Jobs Launched: 
Job 0: Map: 5   Cumulative CPU: 6.44 sec   HDFS Read: 38476 HDFS Write: 525 SUCCESS
Total MapReduce CPU Time Spent: 6 seconds 440 msec
OK
2013-10-31T08:23:48Z
2013-10-31T08:23:48Z
2013-10-31T08:23:48Z
2013-10-31T08:23:48Z
2013-10-31T08:23:48Z
Time taken: 17.035 seconds

*1:実は、Spark,Sharkも、動いているんですがね。。