刚刚参加完这周Hortonwork在北美硅谷举办的的Hadoop summit 2015. 了解到 facebook 的开源项目Presto,据说性能比hive要高十倍以上,而且声称用了Presto的人都是不会再想回到hive,于是回来并马不停地的在测试集群上搭建起来。(转载请注明出处:http://fengshihua.cublog.cn)
一、准备工作
官方文档介绍比较简单:
环境要求:
1.Linux 或苹果系统,没说多少版本
2. JDK 1.8 64位
3.Python 2.4+
基于Apache或Hortonwork的hadoop1和2都可以,或者Cloudera的CDH4或5。
我的测试集群用的是 Hortonwork 的HDP 2.2 (GA) ,有13台服务器,其中1台单独做Namenode, 其他的12台做datanode, 服务器基本配置16GB内存,CPU 8 cores, 系统是Centos 6, 还在上面安装Spark和Storm, 其中包括hive都已经有了,唯一需要升级的是把JDK从1.7升级到1.8.
二、安装搭建
1. 下载 最新的 包 解压即可。
tar zxvf
2. 配置
需要在解压出来的目录下,手工建一个目录 etc, 并且创建如下几个文件
cd
mkdir etc
node.properties
node.environment=test # 取个环境名称,各个node需要保持一致
node.id=1 # 每台一个不同的ID号
node.data-dir=/var/log/presto # 日志,进程号等,发现Presto还把 etc 和plugin两个自己的目录软连接这下面
jvm.config
-server
-Xmx4G #根据自己服务器的内存大小来配
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
config.properties
有两个配置:
如果作为协调器(coordinator):
coordinator=true #协调器 ,其中拿一台就可以了
node-scheduler.include-coordinator=false # false 表示不作为worker
http-server.http.port=8888 #自定义端口号,我的8080已经被Spark和Storm给占了
task.max-memory=1GB
discovery-server.enabled=true
discovery.uri= #协调器的IP
作为worker:
coordinator=false
http-server.http.port=8888
task.max-memory=1GB
discovery.uri=
log.properties
com.facebook.presto=INFO
在etc下另外再建个目录 catalog, 官方文档介绍需要连接哪个应用会自动到这个下面找配置,下面是我配的hive (详细参考 /docs/current/connector.html )
hive.properties
connector.name=hive-hadoop2 #这里有4个选项,分别是
hive-hadoop1,hive-hadoop2,hive-cdh4,hive-cdh5,;前两个估计是通用的hadoop1和2,也包括hortonwork版本,后两个是Cloudera的hadoop1和2.
hive.metastore.uri=thrift://IP:9083 #Thrift服务起来的服务器IP
hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml #文档说这个一般不需配置,默认就到
/etc/hadoop/conf下找hadoop
hive.storage-format=RCBINARY #默认数据引擎
hive.force-local-scheduling=true #就近本机分裂数据,这个可以提高性能
三、 启动
启动之前,最好创建个普通用户比如, presto, 加到Hadoop 的group里。另外记得创建上面配置里提到的目录
/var/log/presto,将解压的presto安装目录和新创建的目录owner改为presto.先启动协调器(coordinator),再一台台起worker。
启动命令:
bin/launcher start
bin/launcher start
presto_PATH/bin/launcher start
到/var/log/presto 检查日志 。如果想将日志直接打印出来,可以用 presto_PATH/bin/launcher run.
四、 冒烟测试
服务都起来后,首先得去下载个命令行工具 https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.107/presto-cli-0.107-executable.jar, 重新命名成 presto, 然后将它放在 presto_PATH/bin下面,给它执行权限。然后创建了个一个脚本,也叫presto,将该脚本放到/usr/bin下,以后就可以直接输入prestor就可以用了,脚本如下
/usr/bin/presto
#!/bin/sh
/usr/local/presto/bin/presto --server localhost:8888 --catalog hive --schema default
测试:
$ presto
presto:default> help
Supported commands:
QUIT
EXPLAIN [ ( option [, ...] ) ]
options: FORMAT { TEXT | GRAPHVIZ }
TYPE { LOGICAL | DISTRIBUTED }
DESCRIBE
SHOW COLUMNS FROM
SHOW FUNCTIONS
SHOW CATALOGS
SHOW SCHEMAS
SHOW TABLES [LIKE ]
SHOW PARTITIONS FROM [WHERE ...] [ORDER BY ...] [LIMIT n]
USE [.]
presto:default> SELECT MAX(product_name) product_name,...., ROUND(AVG(EM_FNAL_VAL_DB))/100 EM_avg FROM ... WHERE product_name = '...' AND ... IS NOT NULL group by ... ORDER BY... DESC LIMIT 20;
....
....
Query 20150612_224702_00011_54bye, FINISHED, 11 nodes
Splits: 517 total, 517 done (100.00%)
0:10 [287M rows, 11.4GB] [29.5M rows/s, 1.17GB/s]
因为我的测试集群里已经通过Hive放了数据,所以直接测试并跟hive 比较,结果hive花了45秒的样子,Presto只用了8秒-13秒得样子,速度的确快了不少。
五、参考
官方网站:
官方安装文档: /docs/current/installation.html
(转载请注明出处:http://fengshihua.cublog.cn)
阅读(2678) | 评论(0) | 转发(0) |