参考文档:1.https://blog.csdn.net/zzq900503/article/details/79403949 prosto部署与连接hive使用
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;
结果如下
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,则访问