Presto入门搭建

Presto简介

presto是一个分布式SQL查询引擎,用于查询分布在一个或多个异构数据源上的大型数据集。
更多详细的介绍请移步去Presto官网

Presto的安装

准备

1.检查本机的jdk的版本,Presto要求jdk 1.8 151以上的版本
2.下载Presto的安装包,下载地址presto-server-0.224.tar.gz
3.有一个Presto的客户端,下载地址presto-cli-0.224-executable.jar

开始搭建(以下摘自官网)
  • 上传presto的安装包到服务器
  • 解压presto的安装包,重命名为prestoserver
  • 进入解压后的目录,创建一个etc文件夹
 cd prestoserver
 mkdir etc

解释:etc文件夹中要保持以下配置:

  • 节点属性:特定于每个节点的环境配置
  • JVM Config:Java 虚拟机的命令行选项
  • 配置属性: Presto服务器的配置
  • 目录属性: 连接器(数据源)的配置

1.创建node.properties

vim node.properties

在该文件下面输入如下内容:

node.environment=production
node.id=1
node.data-dir=/export/software/presto/data

解释:

  • node.enviroment:环境的名称,群集中的所有Presto节点必须具有相同的环境名称
  • node.id:此Presto安装的唯一标识符。对于每个节点,这必须是唯一的。在重新启动或升级Presto时,此标识符应保持一致。如果在一台计算机上运行多个Presto安装(即同一台计算机上的多个节点),则每个安装必须具有唯一标识符。
  • node.data-dir:数据目录的位置(文件系统路径)。Presto将在此处存储日志和其他数据

2.创建jvm.config
JVM配置文件etc/jvm.config包含用于启动java虚拟机的命令行选项列表。改文件格式是一个选项列表,每行一个。shell不会解释这些选项,英雌不应应用包含空格或其他特殊字符的选项。
以下为创建提供了一个很好的起点etc/jvm.config:

-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

因为OutOfMemoryError通常会使JVM处于不一致状态,所以我们编写堆转储(用于调试)并在发生这种情况时强制终止进程。
3.vim config.properties
config属性文件etc/config.properties包含Presto服务器的配置。每个Presto服务器都可以充当协调器和工作器,但是专用一台机器来执行协调工作可以在更大的集群上提供最佳性能。
以下是协调器的最小配置:

coordinator = true 
node-scheduler.include-coordinator = false 
http-server.http.port = 8080 
query.max-memory = 50GB 
query.max-memory-per-node = 1GB 
query.max-total-memory-per-node = 2GB 
discovery-server.enabled = true 
discovery.uri = http://example.net:8080  

worker的最小配置:

coordinator = false 
http-server.http.port = 8080 
query.max-memory = 50GB 
query.max-memory-per-node = 1GB 
query.max-total-memory-per-node = 2GB 
discovery.uri = http:/ /example.net:8080

或者,如果要设置单个机器进行测试,它将同时充当协调器和工作器,请使用此配置:

coordinator = true 
node-scheduler.include-coordinator = true 
http-server.http.port = 8080 
query.max-memory = 5GB 
query.max-memory-per-node = 1GB 
query.max-total-memory-per-node = 2GB 
discovery-server.enabled = true 
discovery.uri = http://example.net:8080

解释:

  • coordinator:允许此Presti实例充当协调器(接收来自此客户端的查询并管理查询执行)
  • node-scheduler.include-coordinator:循序在协调器上安排工作。对于较大的集群,协调器上的处理工作可能会影响查询性能,因为计算机的资源不可用于调度,管理和监视查询执行的关键任务。
  • http-server.http.port:指定HTTP服务器的端口。Presto使用HTTP进行内部和外部的所有通信。
  • query.max-memory:查询可能使用的最大分布式内存量
  • query.max-memory-per-node:查询可在任务一台计算机上使用的最大用户内存量。
  • query.max-total-memory-per-node:查询可在任何一台计算机上使用的最大用户和系统内存量,其中系统内存是读取器,写入程序和网络缓冲区等执行期间使用的内存。
  • disconvery-server.enabled:Presto使用Discovery服务查找群集中的所有节点。每个Presto实例都会在启动时使用Discovery服务注册自己。为了简化部署并避免运行其他服务,Presto协调器可以运行Discovery的嵌入式版本。它与Presto共享HTTP服务器,因此使用相同的端口。
  • discover.uri:Discovery服务器的URI。因为我们在Presto协调器中启用了Discovery的嵌入式版本,所以它应该是Presto协调器的URI。替换example.net:8080以匹配Presto协调器的主机和端口。此URI不得以斜杠结尾。

可能想设置以下属性:

  • jmx.rmiregistry.port:指定JMX RMI注册表的端口。JMX客户端应该连接到此端口。
  • jmx.rmiserver.port:指定JMX RMI服务器的端口。Presto导出许多对通过JMX进行监控有用的指标。

4.vim log.properties
可选的日志级别文件etc/log.properties允许为命名的记录器层次结构设置最小日志级别。每个记录器都有一个名称,通常是使用记录器的类的完全限定名称。记录器具有基于名称中的点的层次结构(如Java包)。例如,请考虑以下日志级别文件:

com.facebook.presto = INFO

这将最低级别设置为INFO两个 com.facebook.presto.servercom.facebook.presto.hive。默认的最低级别是INFO (因此上面的示例实际上并没有改变任何东西)。共有四个级别:DEBUGINFOWARNERROR

5.mkdir catalog
Presto通过连接器访问数据,连接器安装在目录中。连接器提供目录内的所有模式和表。例如,Hive连接器将每个Hive数据库映射到一个模式,因此如果Hive连接器作为hive目录安装,而Hive clicks在数据库中包含一个表web,那么该表将在Presto中被访问hive.web.clicks
通过在目录中创建目录属性文件来注册etc/catalog目录。例如,etc/catalog/jmx.properties使用以下内容创建以将jmx连接器安装为jmx目录:

connector.name = JMX

注意

以上就可以将整个搭建搭建完毕了,注意的就是node.properties中的node.id 属性不应该一致。discovery.uri这个属性我用了其中的一台机器的hostname:8080设定好了,别直接照搬官方的文档

接下来就是启动Presto,在三台服务器的Presto的根目录下使用
后台启动方式:

bin/launcher start

出现,如下样式即表明成功

started as 1936

前台启动方式:

bin/launcher run

启动之后,在浏览器输入对应的地址可以看到:

在这里插入图片描述
如果启动失败了log日志文件地址在node.properties 配置文件只中的node.data.dir目录里面寻找一个var的文件夹下去找

若想使用客户端的话,要额外下载一个jar包上文已经提到过了一次,这里再写一遍,下载presto-cli-0.224-executable.jar

将这个jar重新命名为presto并且赋予可执行权限chmod u+x presto
执行命令如下

./presto --server localhost:8080 --catalog hive --schema default

可以看到:
在这里插入图片描述
经验之谈:
据我的测试了解:
--catalog 所用的参数hive应该就是catalog文件夹里面的hive.properties
--schema 所用的参数default应该就是hive中的数据库名

发布了56 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/OldDirverHelpMe/article/details/100169573