Chinaunix首页 | 论坛 | 博客
  • 博客访问: 296561
  • 博文数量: 56
  • 博客积分: 3056
  • 博客等级: 中校
  • 技术积分: 662
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 12:37
个人简介

一不小心出了国

文章分类

全部博文(56)

文章存档

2015年(1)

2011年(1)

2010年(1)

2009年(5)

2008年(14)

2007年(34)

我的朋友

分类: 云计算

2015-06-13 07:03:16

    刚刚参加完这周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。

启动命令:

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


阅读(2640) | 评论(0) | 转发(0) |
0

上一篇:博客已升级,请注意变更地址

下一篇:没有了

给主人留下些什么吧!~~