部署分布式SQL查询引擎框架(presto)

0. 背景

      在了解到公司已经使用多数据源的情况下,同时要满足bi报表(web 报表展示平台)的后台数据库的连接支持 ,所以 准备调研并搭建presto 服务框架

1.简介

     一.  Presto是一个facebook开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。presto的架构由关系型数据库的架构演化而来。 其本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询。Presto是一个OLAP的工具,擅长对海量数据进行复杂的分析;但是对于OLTP场景,并不是Presto所擅长,所以不要把Presto当做数据库来使用。 和大家熟悉的Mysql相比:首先Mysql是一个数据库,具有存储和计算分析能力,而Presto只有计算分析能力;其次数据量方面,Mysql作为传统单点关系型数据库不能满足当前大数据量的需求,于是有各种大数据的存储和分析工具产生,Presto就是这样一个可以满足大数据量分析计算需求的一个工具。

    二 .   presto需要从其他数据源获取数据来进行运算分析,它可以连接多种数据源,包括Hive、RDBMS(Mysql、Oracle、Tidb等)、Kafka、MongoDB、Redis等 ; 一条Presto查询可以将多个数据源的数据进行合并分析 .

    三.  .....

想具体了解presto相关的 特点和优势,请参考官网:  https://prestodb.io

2.部署搭建

   2.1  引用的参考: 

                   官网:  Deploying Presto — Presto 0.272 Documentation

                  安装博客:   Presto 安装部署 - 大数据小码农 - 博客园

    2.2   presto server 的安装  

                  这里的安装,我主要是参照上面的 安装博客来操作,使用的版本是 同博客中的版本一致,但是使用博客过程中一定要注意一些细节,不然服务启动可能不会成功

       2.2.1  下载安装相关的包

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

         注意: 我这里是的安装操作都是在 /usr/opt 目录下    

      2.2.2  安装  coordinator  server 

#coordinator server 192.168.40.182

tar -zxvf presto-server-0.233.1.tar.gz -C /usr/opt/

cd /usr/opt

mv presto-server-0.233.1 /usr/opt/presto-server-0.233

cd presto-0.233

#配置 presto 外部存储目录

mkidr -p /apps/storage_data/presto_data/

      2.2.3  创建 配置文件

mkdir /usr/opt/presto-server-0.233/etc

#2.在 /usr/opt/presto-server-0.233/etc 下创建 config.properties,jvm.properties,node.properties,log.properties 文件

vim config.properties

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

node-scheduler.include-coordinator=false #是否允许在coordinator上调度节点只负责调度时node-scheduler.include-coordinator设置为false,调度节点也作为worker时node-scheduler.include-coordinator设置为true

http-server.http.port=18085

query.max-memory=2GB

query.max-memory-per-node=512MB

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

discovery-server.enabled=true #Presto 通过Discovery 服务来找到集群中所有的节点,每一个Presto实例都会在启动的时候将自己注册到discovery服务; 注意:worker 节点不需要配

discovery-server.enabled discovery.uri=http://192.168.40.182:18085 #Discovery server的URI。由于启用了Presto coordinator内嵌的Discovery 服务,因此这个uri就是Presto coordinator的uri

vim jvm.config (Presto集群coordinator和worker的JVM配置是一致的)

-server -Xmx2G

-XX:+UseG1GC

-XX:G1HeapRegionSize=32M

-XX:+UseGCOverheadLimit

-XX:+ExplicitGCInvokesConcurrent

-XX:+HeapDumpOnOutOfMemoryError

-XX:+ExitOnOutOfMemoryError

-DHADOOP_USER_NAME=hive

vim node.properties

node.environment=production

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

node.data-dir=/apps/storage_data/presto_data

vim log.properties

com.facebook.presto=DEBUG

     2.2.4    配置 connector 

#1.在 /usr/opt/presto-server-0.233/etc 创建 catalog 目录

mkdir /usr/opt/presto-server-0.233/etc/catalog

#2.在 catalog 目录下 创建 hive connector

vim hive.properties

connector.name=hive-hadoop2 #注意 connector.name 只能是 hive-hadoop2

hive.metastore.uri=thrift://192.168.40.184:9083

hive.config.resources=/usr/hdp/3.0.1.0-187/hadoop/conf/core-site.xml,/usr/hdp/3.0.1.0-187/hadoop/conf/hdfs-site.xml

#3.在 catalog 目录下 创建 mysql connector

vim mysql.properties

connector.name=mysql

connection-url=jdbc:mysql://192.168.40.182:3306

connection-user=root

connection-password=root

   2.2.5  启动 presto  coordinator  server   

#调试启动

/usr/opt/presto-server-0.233/bin/launcher --verbose run

结果: 

以上就是 presto coordinator server 的 安装就完成了     ,下面就是安装  presto worker  server    ,也就是  上面的截图 红框中显示的  

2.2.6   安装  presto worker server  

     2.2.6 .1   将  /usr/opt/presto-server-0.233 /  文件目录拷贝到其他两台机器上的相应的目录下      

 scp    -r  /usr/opt/presto-server-0.233/      root@192.168.40.183:`pwd` 

 scp    -r  /usr/opt/presto-server-0.233/      root@192.168.40.184:`pwd` 

    2.2.6.2   修改 183 和  184 机器上的 关于 presto-server-0.233 目录的 etc/ 目录下的 配置文件  config.properties,node.properties

vim config.properties

coordinator=false

http-server.http.port=18085

query.max-memory=2GB

query.max-memory-per-node=512MB

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

discovery-server.enabled discovery.uri=http://192.168.40.182:18085

vim node.properties

node.environment=production

node.id=sm002 # 另一个节点为 sm003

node.data-dir=/apps/storage_data/presto_data

  2.2.6.3   并在 另外两台机器上(183.,184)配置 presto worker server 的 数据存储目录, 命令   :

mkdir -p /apps/storage_data/ presto_data

  2.2.6. 4   启动 presto  worker  server   

#调试启动

/usr/opt/presto-server-0.233/bin/launcher --verbose run

若 能看见上面截图中红框中的数字,那么说明 presto  server 的安装基本上是 已经完成了 ,下面就将 presto  server  转换为 后台启动 .

在后台命令行终止调试 启动的进程 , 然后 在presto 集群的每台机器上 还行下面的命令:

#后台启动 (日志在 数据目录 /apps/storage_data/presto_data)

/usr/opt/presto-server-0.233/bin/launcher start

启动之后,也会看到上面截图中的状态   

2.3  安装 presto client 

    注意 :这里只讲解 presto  的命令行客户端的安装 ,其他的安装,请参考官方文档  

  2.3.1   进入到 presto 安装目录的bin 目录下面 ,然后执行命令

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

2.3.2   下载完成后 进行重命名   ,并附上可执行权限: 

#注意 官方建议将 presto-cli-0.233.1-executable.jar 改名为 presto ,但是我 为了更好区分 ,这里改为 presto-cli

mv presto-cli-0.233.1-executable.jar presto-cli

chmod +x presto-cli

2.3.3    执行命令进入命令行客户端:  

./presto-cli  --server  192.168.40.182:18085

便会进入 presto 的命令行客户端了 

注意 :   

presto 是一个分布式 SQL 查询引擎,所以支持连接多个数据源,各种不同类型的数据仓库。所以对比于单纯的数据库就多了一些概念, 下面就列举常用的概念和数据库的概念映射:

   1.  catalogs  -> 配置的数据数据名称,不同的数据源连接

   2.  schemas ->  数据库 (database)

    3.   tables ->  数据库的表( tables) 

 在命令行里就能输入 相关的命令 了  ,  presto 的sql 命令  大部分和  关系型数据库的sql 和hive sql 都比较相似, 但有一部分也是不一样的 ,所以这里附上  ,一个关于  presto 的sql 的常用命令链接: 

     

presto 语法攻略:  presto 语法攻略_猴子饲养员的博客-CSDN博客_presto语法

3.相关问题以及解决办法

       关于 presto 的服务的搭建是相对比较简单的,但是有一点必须要注意的是  ,一定要仔细和小心 ;

4. 其他

     虽然 presto  能进行多 数据源 的数据关联join ,但对于其join 的结果也会受到 集群自身的限制,同时 考虑到 presto 的语法跟  hive 语法有一些不是很相同,所以没有继续研究相关的其性能以及语法上的差别.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值