参考网址:

Presto的安装非常的简单,集成的是hive,也就是利用hive的元数据信息来处理,直接上步骤
(推荐看博客的同事一定要看看官网的信息,presto还在孵化的阶段,可能随着时间的推移改动比较大,所以强烈推荐看官网)
1.下载presto:
官网地址: https://prestodb.github.io/
下载地址页面: https://prestodb.github.io/docs/current/installation/deployment.html

案例下载版本:https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.216/presto-server-0.216.tar

架构图

ranger 集成hivekerberos presto hive 集成_hive


Presto服务的安装目录为/opt/cloudera/parcels/presto

1.在Presto官网下载presto-server-0.216.tar.gz安装包,下载地址:

wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.216/presto-server-0.216.tar.gz

将下载好的presto-server-0.216.tar.gz上传至Presto集群的所有服务器上

2.将presto-server-0.216.tar.gz压缩包解压至/opt/cloudera/parcels目录

tar -zxvf presto-server-0.216.tar.gz -C /opt/cloudera/parcels/

为presto-server-0.216创建persto软链接

ln -s presto-server-0.216 presto

3.在/opt/cloudera/parcels/presto/bin/launcher文件如下位置添加JAVA环境变量用whereis java,java -version,查看linux都有那些版本的java

/usr/bin/java下是 1.8.0_191版本,在 vim presto/bin/launcher 中增加一下内容:

ranger 集成hivekerberos presto hive 集成_cloudera_02


使用这种方式就可以直为Presto服务指定JAVA环境,而不会影响服务器上其它服务的JAVA环境完整的配置图(供参考):

ranger 集成hivekerberos presto hive 集成_hdfs_03


ranger 集成hivekerberos presto hive 集成_cloudera_04


ranger 集成hivekerberos presto hive 集成_hdfs_05


vim launcher.properties

ranger 集成hivekerberos presto hive 集成_cloudera_06

3.5准备Presto的配置文件并分发

1.在Presto集群所有节点创建/opt/cloudera/pracles/presto/etc目录
新建node.properties文件,内容如下:

[root@utility etc]# vi node.properties
node.environment=presto
node.id=presto-cdh1
node.data-dir=/data/disk1/presto

配置说明:

node.environment:集群名称。所有在同一个集群中的Presto节点必须拥有相同的集群名称。建议环境名称直接用presto。

node.id:每个Presto节点的唯一标示。每个节点的node.id都必须是唯一的。在Presto进行重启或者升级过程中每个节点的node.id必须保持不变。如果在一个节点上安装多个Presto实例(例如:在同一台机器上安装多个Presto节点),那么每个Presto节点必须拥有唯一的node.id。

node.data-dir:数据存储目录的位置(操作系统上的路径)。Presto将会把日期和数据存储在这个目录下。

将node.properties拷贝至Presto集群的所有节点

注意:这里拷贝了需要将Presto所有节点的node.id修改为对应节点的ID。

2.配置Presto的JVM参数,创建jvm.config文件,内容如下:
注意:我们集群有kerbose认证,故添加kerbose

-server
-Xms24G
-Xmx48G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=150M
-Djava.security.krb5.conf=/etc/krb5.conf
-Dparse-decimal-literals-as-double=true
-Dsun.security.krb5.debug=true

由于OutOfMemoryError将会导致JVM处于不一致状态,所以遇到这种错误的时候我们一般的处理措施就是将dump headp中的信息(用于debugging),然后强制终止进程。
Presto会将查询编译成字节码文件,因此Presto会生成很多class,因此我们我们应该增大Perm区的大小(在Perm中主要存储class)并且要允许Jvm class unloading。

3.新建日志文件log.properties,内容如下:

[root@utility etc]# vi log.properties
com.facebook.presto=INFO

将jvm.config和log.properties配置文件拷贝至Presto集群所有节点

4.创建config.properties文件

该配置文件包含了Presto Server的所有配置信息。每个Presto Server既是Coordinator也是一个Worker。在大型集群中,处于性能考虑,建议单独用一台服务器作为Coordinator。

coordinator节点的配置如下:

vim config.properties

coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=9999
#query.max-memory=20GB
#query.max-memory-per-node=8GB
query.max-memory-per-node=20GB
query.max-total-memory-per-node=25GB
query.max-memory=100GB
discovery-server.enabled=true
discovery.uri=http://10.18.100.116:9999  #coordinator机器IP

worker节点的配置如下:

[root@utility etc]# vi worker-config.properties
coordinator=false
http-server.http.port=9999
query.max-memory=4GB
query.max-memory-per-node=1GB
discovery.uri=http://10.18.100.116:999

此处:我们集群想要做高可用模式,防止一个coordinator挂掉,导致服务不可用,故将所有节点的coordinator均设置为true

vim config.properties

coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=9999
#query.max-memory=20GB
#query.max-memory-per-node=8GB
query.max-memory-per-node=20GB
query.max-total-memory-per-node=25GB
query.max-memory=100GB
discovery-server.enabled=true
discovery.uri=http://10.18.100.116:9999

注意:不管是worker节点还是coordinator节点,config.properties均一致。但是任需要指定一个discovery.uri

coordinator:指定是否运维Presto实例作为一个coordinator(接收来自客户端的查询情切管理每个查询的执行过程)。
node-scheduler.include-coordinator:是否允许在coordinator服务中进行调度工作。对于大型的集群,在一个节点上的Presto server即作为coordinator又作为worke将会降低查询性能。因为如果一个服务器作为worker使用,那么大部分的资源都不会被worker占用,那么就不会有足够的资源进行关键任务调度、管理和监控查询执行。
http-server.http.port:指定HTTP server的端口。Presto 使用 HTTP进行内部和外部的所有通讯。
discovery.uri:Discoveryserver的URI。由于启用了Prestocoordinator内嵌的Discovery 服务,因此这个uri就是Prestocoordinator的uri。修改example.net:9999,根据你的实际环境设置该URI。注意:这个URI一定不能以“/“结尾。
将coordinator-config.properties文件拷贝至utility节点,并重命名为config.properties
将worker-config.properties文件拷贝至Presto集群的worker节点,并重命名为config.properties

5、新建文件夹catalog

cd  catalog

ranger 集成hivekerberos presto hive 集成_hdfs_07


新建hive的连接配置:

vim hive.properties

配置如下:

connector.name=hive-hadoop2
hive.metastore.uri=thrift://zmbd-pm-server01:9083
hive.config.resources=/etc/hadoop/conf.cloudera.hdfs/core-site.xml,/etc/hadoop/conf.cloudera.hdfs/hdfs-site.xml

#kerberos config  this is can only for coordinator | sensen.chang add
hive.metastore.authentication.type=KERBEROS
hive.metastore.service.principal=hive/_HOST@FAYSON.COM
hive.metastore.client.principal=hive@FAYSON.COM
hive.metastore.client.keytab=/opt/cloudera/parcels/presto/etc/hive.keytab

#kerberos config  this is can only for presto work | sensen.chang add
hive.hdfs.authentication.type=KERBEROS
hive.hdfs.impersonation.enabled=true
hive.hdfs.presto.principal=hive@FAYSON.COM
hive.hdfs.presto.keytab=/opt/cloudera/parcels/presto/etc/hive.keytab

注:里面进行了kerbose认证,不需要的话请去掉

vim mysql.properties

connector.name=mysql
connection-url=jdbc:mysql://localhost:3306
connection-user=xxxx
connection-password=xxxx

(测试)启动
cd /usr/local/bigdata/presto-server-0.196/bin
./presto --server prestoMaster:18082 --catalog hive --schema default (这个的–server是根据config.properties文件中的discovery.uri 属性来定的)
presto在启动客户端之后
show schemas; == show databases;
use oneschema; == use onedatabase;
show tables;
如果table过多的话,就会不自动退出,点q就可以退出到客户端中