一、Presto简介
Presto是由Facebook开发的一款开源的分布式 SQL 查询引擎 ,数据量支持GB到PB字节,主要用来处理秒级查询的场景。Presto本身并不存储数据,不是一个标准的数据库,不能用来处理在线业务(OLTP),但是可以接入多种数据源,解析SQL,支持跨数据源的级联查询,而且基于内存运算,速度很快,实时性高。
因为presto全部的数据都是在内存中,限制了在内存中的数据集大小,比如多个大表的join,这些大表是不能完全放进内存的,所以presto不适合用在多个大表的join,这也是presto是取代不了hive的原因。
Presto 支持多种数据源,比如关系型数据库(mysql、postgreSQL、Oracle)、hive、Kafka等
Impala性能稍领先于Presto,但是Presto在数据源支持上非常丰富,包括Hive、图数据库、传统关系型数据库、Redis。
Presto 与 Hive 的区别
- Presto不允许用户插入自定义代码,但Hive允许。
- Presto使用ANSI SQL,而Hive使用HiveQL。
- Presto只能处理有限的数据量,因此对于较大的数据,建议使用Hive。
- Presto是常驻任务,接受请求立即执行,全内存并行计算;Hive需要用yarn做资源调度,接受查询需要先申请资源,启动进程,并且采用mapreduce计算模型,中间结果会经过磁盘。
- Presto具有高性能的查询能力,而Hive的性能相对较差。因此,对于需要高性能计算和实时流处理的场景,建议使用Spark;对于需要快速查询大型数据集的场景,建议使用Presto。
二、Presto下载
选一种即可
Presto官方网站:https://prestosql.io/ 这个是英文网址
(如果在中文网址下载很多查询会出现Query is gone (server restarted?)错误)
1、文件较大,可以使用wget安装 presto-server-0.285.1.tar.gz,可以在直接在想安装的路径下执行下载语句,也可以在根目录下指定安装到了自己需要的路径,这里安装到了opt/modules路径下
安装wget命令:yum install wget
进入/opt/modules
wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.271/presto-server-0.271.tar.gzhttps://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.271/presto-server-0.271.tar.gzhttps://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.271/presto-server-0.271.tar.gz
2、也可以在官网下载
- 解压并重命名
解压:tar -zxvf presto-server-0.271.tar.gz -C /opt/installs/
创建软连接 ln -s presto-server-0.271 presto
进入到该目录下:cd /opt/installs/presto
单机版安装
配置presto
- 创建配置文件储存目录
注意:官方的安装包默认没有etc配置文件目录,需要自行创建
配置etc
- Config 配置属性: Presto服务器的配置
- JVM配置: Java虚拟机的命令行选项
- node节点配置: 每个节点的环境配置
- hive配置
- MySQL配置
先进入到etc目录下
cd /opt/installs/presto/etc
-
配置Config
vim config.properties
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8090
query.max-memory=6GB
query.max-memory-per-node=2GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://bigdata01:8090
其中bigdata01为主机名
8090为端口
-
JVM配置文件(各节点配置相同即可)
vim jvm.config
-server
-Xmx3G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
-
node节点配置: 每个节点的环境配置
vim node.properties
node.environment=hudipresto
node.id=presto-node1
node.data-dir=/opt/installs/presto/data
node.data-dir为日志路径,会在该路径下产生var/log路径,在server.log中查看日志
-
配置hive相关
cd /opt/installs/presto/etc
mkdir catalog
cd ./catalog/
vim hive.properties
connector.name=hive-hadoop3
hive.metastore.uri=thrift://bigdata01:9083
hive.parquet.use-column-names=true
hive.config.resources=/opt/installs/hadoop/etc/hadoop/core-site.xml,/opt/installs/hadoop/etc/hadoop/hdfs-site.xml
1、此处connector.name应该为指定的版本,以便于presto使用对应的适配器
通过hadoop version(注意没有“-”)查看自己hadoop的版本
如果写connector.name=hive,会报错
ERROR main com.facebook.presto.server.PrestoServer No factory for connector hive
java.lang.IllegalArgumentException: No factory for connector hive2、hive.config.resources为hadoop中有关hive配置文件的路径
-
配置MySQL相关
vim mysql.properties
connector.name=mysql
connection-url=jdbc:mysql://bigdata01:3306
connection-user=root
connection-password=123456
bigdata01为主机名
root为用户名
123456为密码
启动Presto服务
cd /opt/installs
presto/bin/launcher start
查看进程(进程名:PrestoServer)
页面访问
ip:8090
安装Presto CLI命令行客户端
下载jar包(选一种即可)
1、
https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.271/presto-cli-0.271-executable.jar
2、 官网下载:Launch Presto: Local download, JDBC, Docker or on AWS Cloud
把jar包拷贝到bin目录下。重命名为presto
mv presto-cli-0.271-executable.jar presto
chmod +x presto
启动
./presto --server bigdata01:8090
show catalogs; show schemas from hive;