facebook presto安装

来源:互联网 发布:淘宝网拍卖车辆提档 编辑:程序博客网 时间:2024/04/30 12:37

facebook presto是最近出来的一个交互式的分布式查询引擎,支持简单的SQL,据称比mapreduce快10倍,访问presto homepage可以深入了解presto

presto最好是用一个专门存储data的目录,这个目录存储log和local metadata,独立开来的data目录有利于更新

配置presto

node properties:包含针对于每个节点的configuration,也就是说每个节点的configuration都是个性化的

jvm config:包含针对java虚拟机的命令行的选项,一行一项,这些命令没有被解释,所以如果包含有空格或者特殊字符的话,就会报错OnOutOfMemoryError,然后退出java虚拟机,写个heap dump for debuging然后终止进程,presto编译每个查询为字节码所以会产生很多的classes文件,加入floatingdecimal-0.1.jar到presto的lib中,因为比如hive将float存成了text,但是如果用这个包,可以解析float从而提高性能

config properties:包含了对于presto server的configuration,每个prosto server能够作为both coordinator和worker,但是在一个较大的集群上用一个single machine去提供coordinator的工作会得到最好的性能,datasources是支持什么类型的catalog,比如hive 和jmx,http-server.http.port指定http的端口,对内也对外,presto-metastore.db.filename指定H2数据存放的metastore的文件地址(这还在开发中,理应是只有coordinator中才有,但是现在版本中worker中也有),task.max-memory指的是每个single task所用到的内存大小,这个option限制了group by,join的右支,order by,我的猜测是这些操作中都有同步点,所以要使用到内存来缓存。设置的低的话会影响运行的queries,设置的高会引起jvm的内存溢出,discovery-server.enabled用discovery service去找到集群中的node,每个instance在启动的时候带着discovery service一起注册,默认的coordinator会运行discovery service,discovery.uri就是ip+port,由于可以使用默认的coordinator来完成这个function直接将coordinator的ip+port指定

log级别:和java的log级别很相似,设置DEBUG就是把DEBUG的日志全部都输出

catalog properties:presto通过connectors接触数据,在catalogs中“挂载”的,connector提供在catalog中的所有的schema和table。举个例子,hive connector将hive database

映射到schema,所以如果hive connector被挂载,就可以访问hive中的table,catalogs被注册在/etc/catalog中,如果是jmx的connector要注册,就添加文件jmx.properties

如果要创建hive的mount,首先,在/etc/catalog中创建hive.properties


实际安装记录:

1,首先按照说的在PRESTO_HOME中建立etc目录,建立文件node.preperties

注意node.environment如果在一个集群中的应该有同一个名字,node.id必须是node唯一的,node.data-dir是data目录,用来存储logs和data

在我的机器中我设置为:

node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/home/casa/maintenance/presto/data

2,jvm config,首先在etc下建立jvm.config文件

注意jvm.config中如果你要处理float数据类型,请加入lib中的floatingdecimal-0.1.jar

在我的机器中的配置为:

-server
-Xmx16G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:PermSize=150M
-XX:MaxPermSize=150M
-XX:ReservedCodeCacheSize=150M
-Xbootclasspath/p:/home/casa/maintenance/presto/presto-server-0.52/lib/floatingdecimal-0.1.jar
3,config properties,首先在建立config.properties

注意config.properties,因为是单机版的,所以coordinator应该是true,第二个datasources应该是具体的connector,最后一个默认为你机器的ip和8080

在我的机器中的配置为:

coordinator=true
datasources=jmx
http-server.http.port=8080
presto-metastore.db.type=h2
presto-metastore.db.filename=var/db/MetaStore
task.max-memory=1GB
discovery-server.enabled=true
discovery.uri=http://10.11.1.174:8080

4,log.properties随你自己

在我的机器中的配置为:

#有四个选项DEBUG,INGO,WARN,ERROR
com.facebook.presto=DEBUG
5,catalog目录,首先在etc下建立catalog目录,然后根据你自己情况,增加connector,比如有java就可以增加jmx,所以对应的,jmx.properties要被建立在catalog

在我的机器中的配置为:

connector.name=jmx

上面步骤结束之后开始启动

启动server:PRESTO_HOME/bin/launcher start

启动client:1,首先你要下载可执行文件,presto-cli-0.52-executable.jar

                      2,重命名为presto,找个地方放起来

                      3,然后执行客户端:presto --server localhost:8080 --catalog jmx --schema default

原创粉丝点击