参考文档:1. prosto部署与连接hive使用

                2.http://my.525.life/article?id=1510739741953 CDH目录结构

                    3.https://ilnba.iteye.com/blog/1711367    linux文件描述限制

 

环境准备

Presto 有以下几个基本要求: 

Linux 或者 Mac OS X 系统 

Java 8,64位


我的环境

操作系统:CentOS Linux release 7.3.1611 (Core)

Hadoop集群:CDH 5.15.2, Parcel

jdk版本:java version 1.8.0_111


Presto单节点安装配置

首先下载presto,本次我下载的最新的版0.218, https://repo1.maven.org/maven2/com/facebook/presto/presto-server/,后来启动报错需要jdk1.85以上,所以换成0.195,

1 wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.195/presto-server-0.195.tar.gz 
2 tar zxvf presto-server-0.195.tar.gz
3 mv presto-server-0.195 /opt/presto

配置Presto

在安装目录中创建一个etc的目录,在etc中配置一下配置信息:

JVM 配置:JVM的命令行选项

配置属性:Presto server的配置信息

Catalog属性:configuration forConnectors(数据源)的配置信息


Node Properties

vim etc/node.properties
#输入配置
node.environment=production
node.id=a001  #集群节点node.id不能相同
node.data-dir=/var/presto/data

JVM配置(Presto集群coordinator和worker的JVM配置是一致的)

vim  etc/jvm.config
#添加如下配置输入配置:
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

Config Properties

vim etc/config.properties
#输入配置:
coordinator=true #是否作为coordinator,worker节点为false
node-scheduler.include-coordinator=false  #是否允许在coordinator上调度节点只负责调度时node-scheduler.include-coordinator设置为false,调度节点也作为worker时node-scheduler.include-coordinator设置为true
http-server.http.port=8080 #指定HTTP server 端口。Presto通过HTTP协议进行所有的内部和外部通信
query.max-memory=50GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true          #Presto 通过Discovery 服务来找到集群中所有的节点
discovery.uri=http://cdh-1.digidite.com:8080  #coordinator的URL

日志级别

vim etc/log.properties
#输入配置:
com.facebook.presto=INFO

Catalog Properties

mkdir etc/catalog
vim  etc/catalog/hive.properties
#输入配置:
connector.name=hive-hadoop2
hive.metastore.uri=thrift://cdh-1:9083

启动运行Presto

后台启动: 

bin/launcher start

或者前台启动:

bin/launcher run

停止:

bin/launcher stop

查看进程:

jps

输出进程:

137442 PrestoServer

停止:

bin/launcher stop


启动完之后,日志将会写在/var/presto/data/var/log目录下:

launcher.log: 这个日志文件由launcher创建,并且server的stdout和stderr都被重定向到了这个日志文件中。 这份日志文件中只会有很少的信息,包括:在server日志系统初始化的时候产生的日志和JVM产生的诊断和测试信息。

server.log: 这个是Presto使用的主要日志文件。一般情况下,该文件中将会包括server初始化失败时产生的相关信息。这份文件会被自动轮转和压缩。

http-request.log: 这是HTTP请求的日志文件,包括server收到的每个HTTP请求信息,这份文件会被自动轮转和压缩。


连接hive测试验证

下载 presto-cli-0.100-executable.jar:Presto CLI为用户提供了一个用于查询的可交互终端窗口。

https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.195/presto-cli-0.195-executable.jar

 

mv presto-cli-0.195-executable.jar /opt/presto/presto

使用presto连接hive:

./presto --server cdh-1:8080 --catalog hive --schema hivedemo_1

.....

presto:test> show schemas from hive;

....

presto:hivedemo_1> show tables from hive.hivedemo_1;

....

 

在hive中查一下hive default库中的表 ,hive自带了一个thrift的客户端———-beeline ,打开beeline ,使用命令

beeline

连接hiveserver2,使用命令

!connect jdbc:hive2://cdh-1:10000

输入当前linux用户名和密码后,正常连接后会出现0: jdbc:hive2://cdh-1:10000>

这时可以尝试操作数据库,使用命令:

show tables;

结果如下

storm 集群部署 presto集群部署_maven

 

 

Presto多节点安装配置

集群节点分配:

cdh-1 (10.215.43.1):coordinator调度节点

cdh-2 (10.215.43.2):worker节点

cdh-3 (10.215.43.3):worker节点


节点部署

将cdh-1部署配置好的打包传到worker节点

scp cdh-1:/opt/presto.zip /opt/


配置修改

node properties

vim etc/node.properties

内容如下:

node.environment=production

node.id=a002    #每个节点需要不同

node.data-dir=/var/presto/data

 


Config Properties

vim etc/config.properties

内容如下:

coordinator=false   #work节点需要填写false

node-scheduler.include-coordinator=true

http-server.http.port=8080

query.max-memory=50GB

query.max-memory-per-node=1GB

discovery-server.enabled=true

discovery.uri=http://cdh-1:8080

作为work时,coordinator配置应为false

discovery.uri与coordinator调度节点的ip对应。

调度节点只负责调度时node-scheduler.include-coordinator设置为false

调度节点也作为worker时node-scheduler.include-coordinator设置为true


启用与使用

启动方式与单点的一样,每台都启动起来即可使用。


管理

 

presto提供了Web的管理界面,可以查看多节点的情况。 

根据端口来访问,比如8080,则访问 

http://10.215.43.1:8080/