Presto 环境部署文档

1. Presto简介 Facebook presto是什么,继Facebook创建了HIVE神器后的又一以SQL语言作为接口的分布式实时查询引擎,可以对PB级的数据进行快速的交互式查询。它支持标准的ANSI SQL.包含查询,聚合,JOIN以及窗口函数等。除了Facebook这个创造都在使用外,国内像京东,美团等也都有广泛的使用。对于英文不好的同学可以访问由京东创建的这个中文翻译站点:http://prestodb-china.com/,只是这个版本才0.100,现在最新版已到0.176。

2. Presto结构

Coordinator: 接入接口,解析SQL语句,生成查询计划,任务分发等。
Worker:负责与数据的读写交互以及执行查询计划

值得一提的是Presto以插件形式对数据存储层进行了抽象,它叫做连接器,如:Cassandra Connector,Hive Connector,MySQL Connector等,可以看出它不仅默认提供了Hadoop相关组件的连接器,还提供了Mysql, Postgresql等RDBMS的连接器,同时也可以方便的通过自定义连接器开发,达到适用于不同数据存储层的扩展目的。
Presto提供以下几种类型的使用接口:
Presto命令行
JDBC驱动

3.安装Presto 3.1 环境要求 Linux or Mac OS X Java 8, 64-bit 主机IPcoordinatorworker
10.0.10.82   true   true  
10.0.10.83   false   true  
10.0.10.85   false   true  
10.0.10.84   false   true  
10.0.10.86   false   true  
3.2 下载presto 下载presto-server-0.175.tar.gz包,下载地址: > https://prestodb.io/docs/current/installation/deployment.html 解压: $ tar xzvf presto-server-0.175.tar.gz $ ln -s presto-server-0.175 presto $ cd presto $ mkdir prestoData Presto需要一个用于存储日志、本地元数据等的数据目录。建议在安装目录的外面创建一个数据目录。这样方便Presto进行升级。

3.3 配置Presto 3.3.0 目录结构 在安装目录中创建一个etc目录(mkdir etc),所有的配置文件包含在 presto/etc/ 目录下目录结构如下。 presto/etc/ ├── catalog │ ├── hive.properties │ └── jmx.properties ├── config.properties ├── jvm.config ├── log.properties └── node.properties 在这个etc目录中放入以下配置信息: node.properties : 环境变量配置,每个节点特定配置 jvm.config : Java虚拟机的命令行选项 log.properties: 允许你根据不同的日志结构设置不同的日志级别 config.properties : Presto 服务配置 catalog目录 : 每个连接者配置(data sources) 3.3.1 Node Properties 配置 节点属性配置文件:etc/node.properties包含针对于每个节点的特定的配置信息。 一个节点就是在一台机器上安装的Presto实例。 这份配置文件一般情况下是在Presto第一次安装的时候,由部署系统创建的。 一个etc/node.properties配置文件至少包含如下配置信息: node.environment=test node.id=ffffffff-ffff-ffff-ffff-ffffffffff-01 node.data-dir=/opt/software/presto/prestoData 针对上面的配置信息描述如下: node.environment: 集群名称。所有在同一个集群中的Presto节点必须拥有相同的集群名称。 node.id: 每个Presto节点的唯一标示。每个节点的node.id都必须是唯一的。在Presto进行重启或者升级过程中每个节点的node.id必须保持不变。如果在一个节点上安装多个Presto实例(例如:在同一台机器上安装多个Presto节点),那么每个Presto节点必须拥有唯一的node.id。 node.data-dir: 数据存储目录的位置(操作系统上的路径)。Presto将会把日期和数据和日志存储在这个目录下。 3.3.2 JVM 配置 JVM配置文件,etc/jvm.config,包含一系列在启动JVM的时候需要使用的命令行选项。 这份配置文件的格式是:一系列的选项,每行配置一个单独的选项。由于这些选项不在shell命令中使用。 因此即使将每个选项通过空格或者其他的分隔符分开,java程序也不会将这些选项分开,而是作为一个命令行选项处理。 详细配置如下: -server -Xmx6G -XX:+UseConcMarkSweepGC -XX:+ExplicitGCInvokesConcurrent -XX:+CMSClassUnloadingEnabled -XX:+AggressiveOpts -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError=kill -9 %p -XX:ReservedCodeCacheSize=150M 3.3.3 Config Properties 配置 Presto的配置文件:etc/config.properties 包含了Presto server的所有配置信息。 每个Presto server既是一个coordinator也是一个worker。但是在大型集群中,处于性能考虑,建议单独用一台机器作为 coordinator。 coordinator=true node-scheduler.include-coordinator=true http-server.http.port=9098 discovery-server.enabled=true discovery.uri=http://10.0.10.82:9098 以下是最基本的worker配置: coordinator=false http-server.http.port=9098 discovery-server.enabled=true discovery.uri=http://10.0.10.82:9098 对配置项解释如下: coordinator: 指定是否运维Presto实例作为一个coordinator(接收来自客户端的查询情切管理每个查询的执行过程)。 node-scheduler.include-coordinator: 是否允许在coordinator服务中进行调度工作。对于大型的集群,在一个节点上的Presto server即作为coordinator又作为worke将会降低查询性能。因为如果一个服务器作为worker使用,那么大部分的资源都不会被worker占用,那么就不会有足够的资源进行关键任务调度、管理和监控查询执行。 http-server.http.port: 指定HTTP server的端口。Presto 使用 HTTP进行内部和外部的所有通讯。 task.max-memory=1GB: 一个单独的任务使用的最大内存(一个查询计划的某个执行部分会在一个特定的节点上执行)。 这个配置参数限制的GROUPBY语句中的Group的数目、JOIN关联中的右关联表的大小、ORDER BY语句中的行数和一个窗口函数中处理的行数。该参数应该根据并发查询的数量和查询的复杂度进行调整。如果该参数设置的太低,很多查询将不能执行;但是如果设置的太高将会导致JVM把内存耗光。 discovery-server.enabled: Presto 通过Discovery服务来找到集群中所有的节点。为了能够找到集群中所有的节点,每一个Presto实例都会在启动的时候将自己注册到discovery服务。Presto为了简化部署,并且也不想再增加一个新的服务进程,Prestocoordinator可以运行一个内嵌在coordinator 里面的Discovery 服务。这个内嵌的Discovery 服务和Presto共享HTTP server并且使用同样的端口。 discovery.uri: Discovery server的URI。由于启用了Presto coordinator内嵌的Discovery 服务,因此这个uri就是Prestocoordinator的uri。修改example.net:9098,根据你的实际环境设置该URI。注意:这个URI一定不能以“/“结尾。 3.3.4 log.properties 配置 日志配置文件:etc/log.properties。在这个配置文件中允许你根据不同的日志结构设置不同的日志级别。每个logger都有一个名字(通常是使用logger的类的全标示类名). Loggers通过名字中的“.“来表示层级和集成关���。 (像java里面的包). 如下面的log配置信息: com.facebook.presto=INFO 日志级别分为:DEBUG, INFO, WARN and ERROR。 3.3.5 Catalog Properties 配置 Presto通过connectors访问数据。这些connectors挂载在catalogs上。connector可以提供一个catalog中所有的schema和表。 例如: Hive connector 将每个hive的database都映射成为一个schema, 所以如果hive connector挂载到了名为hive的catalog, 并且在hive的web有一张名为clicks的表, 那么在Presto中可以通过hive.web.clicks来访问这张表。 通过在etc/catalog目录下创建catalog属性文件来完成catalogs的注册。 a.创建etc/catalog/jmx.properties文件,文件中的内容如下,完成在jmxcatalog上挂载一个jmxconnector: connector.name=jmx b.创建etc/catalog/hive.properties文件,包含信息如下: connector.name=hive-hadoop2 hive.metastore.uri=thrift://192.168.1.234:9083 hive.config.resources=/home/hadoop/software/jise/jise-server/conf/hdfs-site.xml/core-site.xml,/home/hadoop/software/jise/jise-server/conf/hdfs-site.xml/hdfs-site.xml hive.allow-drop-table=true 配置项解释: hive.metastore.uri 内容对应 hive-site.xml 中添加的hive.metastore.uris配置: <property> <name>hive.metastore.local</name> <value>false</value> </property> <property> <name>hive.metastore.uris</name> <value>thrift://192.168.1.234:9083</value> </property> hive.config.resources 对应hdfs 的 core-site.xml 和 hdfs-site.xml 文件

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13366.html