【Facebook Presto:1】Presto 3Node で、動かす (Hive-CDH4 Plugin)
FaceBook のエンジニアが、公開している
Presto | Distributed SQL Query Engine for Big Data
を、試してみる事にします。
1Node は動いたので、3Nodeで構築してみることに。
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も、動いているんですがね。。