背景
presto又是facebook开源的一个分布式查询引擎查询效率比hive高很多。具体的说明可以看http://tech.meituan.com/presto.html,不错的实践说明。
单机部署
1.jdk安装1.8版本,并配置环境变量。
2.最好建一个presto用户,可选。
3.下载安装包 http://search.maven.org/remotecontent?filepath=com/facebook/presto/presto-server,这里我选择的是0.90
4.解压后,创建etc目录;并在目录中,创建后面的配置文件。
5.创建node.properties文件,内容如下:
node.environment=presto
node.id=11111111-1111-1111-1111-111111111111
node.data-dir=/data/presto-data
内容说明
(node.environment:环境名称。一个集群节点中的所有节点的名称应该保持一致)
(node.id:节点唯一标识的名称)
(node.data-dir:数据和日志存放路径)
6.创建jvm.config,内容如下:
-server
-Xmx8G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=150M
7.创建config.properties,内容如下:
coordinator=true
datasources=jmx,hive
node-scheduler.include-coordinator=true
http-server.http.port=8411
task.max-memory=1GB
discovery-server.enabled=true
discovery.uri=http://localhost:8411
内容说明
datasources:指定多个catalog names,通过逗号分割,coordinator与workers均含有JMX来读取Java相关配置信息,另外可以配置 hive等信息,当然coordinator最好不配置hive,减少协调器的负载
http-server.http.port:Presto通过Http协议进行交互,则配置该端口进行信息交互
task.max-memory:节点中任务使用最大的内存,该参数对查询操作有一定的约束
discovery-server.enabled:Presto使用 Discovery service来定位集群中所有的节点。启动实例后向Discovery service注册。coordinator运行在嵌入式的Discovery service
discovery.uri:Discovery server的URI,单机版配置自身就OK
8.创建log.properties,内容如下:
com.facebook.presto=DEBUG (可选)
9.etc路径下创建catalog目录
文件名称
jmx.properties
文件内容
connector.name=jmx
文件名称
hive.properties
文件内容
connector.name=hive-hadoop2
hive.metastore.uri=thrift://ip:port
如果不连接hive,可以自行调整7,9两步
集群部署
【discovery节点】
下载地址http://search.maven.org/remotecontent?filepath=io/airlift/discovery/discovery-server
环境准备类似单节点
discovery下新建etc路径
文件名称
config.properties
文件内容
http-server.http.port=8411
文件名称
jvm.config
文件内容
-server
-Xmx8G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
文件名称
node.properties
文件内容
node.environment=presto
node.id=dddddddd-dddd-dddd-dddd-dddddddddddd
node.data-dir=/data/presto-data
【coordinator】
文件名称
node.properties
文件内容
node.environment=presto
node.id=11111111-1111-1111-1111-111111111111
node.data-dir=/home/presto/presto-data
文件名称
config.properties
文件内容
coordinator=true
datasources=jmx
node-scheduler.include-coordinator=false
http-server.http.port=8411
task.max-memory=16GB
discovery-server.enabled=true
discovery.uri=http://discovery机器的ip:port
文件名称
jvm.config
文件内容
-server
-Xmx16G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=150M
文件名称
log.properties
文件内容
com.facebook.presto=DEBUG
【worker】
文件名称
config.properties
文件内容
coordinator=false
datasources=jmx,hive
http-server.http.port=8411
task.max-memory=16GB
discovery.uri=http://discovery机器的ip:port
hive等的连接,可以参考单节点
起停服务都是在bin目录下launcher start/stop
起discovery服务是,或单节点器服务时,会报discovery找不到,不影响使用。
启动客户端
下载客户端jar包 http://search.maven.org/remotecontent?filepath=com/facebook/presto/presto-cli
presto-cli-0.99-executable.jar --server localhost:8411 --catalog hive --schema default