Presto安装与配置

一、Presto-Server安装

一、环境要求

  • linux或者MacOS
  • Java8 64位
  • Python 2.4+

二、Java8安装

  • 安装

    yum install java-1.8.0-openjdk* -y
    
  • 查看java版本

    java -version
    

三、下载解压Presto安装包

  • 下载安装包
    点击官网下载

  • 上传presto-server-0.245.1.tar到 hadoop01 的/export/server目录

  • 解压

    tar -xzvf presto-server-0.245.1.tar.gz
    mv presto-server-0.245.1 presto
    
  • 查看目录结构

    cd /export/server/presto
    
  • Presto需要一个用于存储日志等的data目录。建议在安装目录之外创建一个data目录,以便在升级Presto时可以保留此目录。

四、配置

  • 在安装目录中创建一个etc目录,此目录下将会包含以下配置文件:

    • node.properties: 每个节点的环境配置
    • jvm.config: JVM的命令行选项
    • config.properties: Presto Server的配置项
    • catalog/hive.properties: 数据源连接器的配置,此课程将使用hive数据源
  • 节点环境配置
    etc/node.properties,每个节点的特定配置。
    一个节点指的是服务器上Presto的单个已安装实例。

    node.environment=production
    node.id=f7c4bf3c-dbb4-4807-baae-9b7e41807bc8
    node.data-dir=/export/server/data
    

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

  • JVM虚拟机配置
    etc/jvm.config,包含用于启动Java虚拟机的命令行选项列表。文件的格式是选项列表,每行
    一个。不能使用空格或其他特殊字符。

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

    由于OutOfMemoryError将会导致JVM处于不一致状态,所以遇到这种错误的时候我们一般的处理措施就是记录下dump heap中的信息(用于debugging),然后强制终止进程。

  • Presto服务配置
    etc/config.properties,包含Presto服务器的配置。
    Presto服务氛围三种角色:coordinator、worker、coordinator&worker。每个Presto服务都可以充当coordinator和worker,但是独立出一台服务器专用于coordinator协调工作将在较大的群集上提供最佳性能。

    • coordinator配置

      coordinator=true
      node-scheduler.include-coordinator=false
      http-server.http.port=8090
      query.max-memory=4GB
      query.max-memory-per-node=1GB
      query.max-total-memory-per-node=2GB
      discovery-server.enabled=true
      discovery.uri=http://example.net:8090
      
    • worker配置

      coordinator=false
      http-server.http.port=8090
      query.max-memory=4GB
      query.max-memory-per-node=1GB
      query.max-total-memory-per-node=2GB
      discovery.uri=http://example.net:8090
      
    • coordinator&worker配置

      coordinator=true
      node-scheduler.include-coordinator=true
      http-server.http.port=8090
      query.max-memory=4GB
      query.max-memory-per-node=1GB
      query.max-total-memory-per-node=2GB
      discovery-server.enabled=true
      discovery.uri=http://192.168.88.80:8090
      
    • 配置项含义

      • coordinator:允许此Presto实例充当coordinator协调器角色(接受来自客户端的查询并管理查询执行)。
      • node-scheduler.include-coordinator:允许此Presto实例充当coordinator&worker角色。对于较大的群集,coordinator上的worker工作可能会影响查询性能,因为两者互相争抢计算机的资源会导致调度的关键任务受到影响。
      • http-server.http.port:指定HTTP服务器的端口。Presto使用HTTP进行内部和外部所有通信。
      • query.max-memory:单个query操作可以使用的最大集群内存量。
      • query.max-memory-per-node:单个query操作在单个节点上用户内存能用的最大值。
      • query.max-total-memory-per-node:单个query操作可在单个节点上使用的最大用户内存量和系统内存量,其中系统内存是读取器、写入器和网络缓冲区等在执行期间使用的内存。
      • discovery-server.enabled:Presto使用发现服务Discovery service来查找群集中的所有节点。每个Presto实例在启动时都会向Discovery服务注册。为了简化部署并避免运行其他服务,Presto协调器coordinator可以运行Discovery服务的嵌入式版本。它与Presto共享HTTP服务器,因此使用相同的端口。
      • discovery.uri:Discovery服务的URI地址。由于启用了Presto coordinator内嵌的Discovery 服务,因此这个uri就是Presto coordinator的uri。修改example.net:8090,根据你的实际环境设置该URI。此URI不得以“/“结尾。
  • 日志级别
    etc/log.properties
    在这个配置文件中允许你根据不同的日志结构设置不同的日志级别。
    Loggers通过名字中的“.“来表示层级和集成关系(像java里面的包)。

    com.facebook.presto=INFO
    

    这会将com.facebook.presto.server和com.facebook.presto.hive的日志级别都设置为INFO。
    共有四个级别:DEBUG,INFO,WARN和ERROR。

  • 连接器配置
    Presto通过catalogs中的连接器connectors访问数据。connector提供了对应catalog中的所有
    schema和table。比如,如果在catalog中配置了Hive connector,并且此Hive的’web’数据库中有一个’clicks’表,该表在Presto中就可以通过hive.web.clicks来访问。
    通过在etc/catalog目录中创建配置文件来注册connector。比如,通过创建etc/catalog/hive.properties,即可用来注册hive的connector:

connector.name=hive-hadoop2
hive.metastore.uri=thrift://192.168.88.80:9083
Presto连接器支持以下版本hive:
1.Apache Hive 1.x
2.Apache Hive 2.x
3.Cloudera CHD 4
4.Cloudera CHD 5
Presto的Hive连接器支持的文件类型:
1.ORC
2.Parquet
3.Avro
4.RCFile
5.SequenceFile
6.JSON
7.Text
  • 运行Presto
    在安装目录的bin/launcher文件,就是启动脚本。Presto可以使用如下命令作为一个后台进程
    启动:

    bin/launcher start
    

    另外,也可以在前台运行,日志和相关输出将会写入stdout/stderr (可以使用类似daemontools
    的工具捕捉这两个数据流):

    bin/launcher run
    

    运行bin/launcher --help,Presto将会列出支持的命令和命令行选项。另外可以通过运行时使
    用–verbose参数,来调试安装是否正确。
    访问web:http://192.168.88.80:8090/ui/
    在这里插入图片描述
    启动完之后,日志将会写在node.data-dir 配置目录的子目录var/log下,该目录下有如下三个文件:

  1. launcher.log:这个日志文件由launcher创建,并且server的stdout和stderr都被重定向到了这个日志文件中。这份日志文件中只会有很少的信息,包括:在server日志系统初始化的时候产生的日志和JVM产生的诊断和测试信息。
  2. server.log:这个是Presto使用的主要日志文件。一般情况下,该文件中将会包括server初始化失败时产生的相关信息。这份文件会被自动轮转和压缩。
  3. http-request.log:这是HTTP请求的日志文件,包括server收到的每个HTTP请求信息,这份文件会被自动轮转和压缩。

二、Presto-Cli安装

Presto CLI提供了基于终端的交互式命令程序,用于运行查询。Presto CLI是一个可执行的JAR
文件,这意味着它的行为类似于普通的UNIX可执行文件。
下载presto-cli-0.245.1-executable.jar
将其重命名为presto,使用chmod +x分配执行权限后,运行:

#上传presto-cli-0.245.1-executable.jar到/export/server/presto/bin
mv presto-cli-0.245.1-executable.jar presto
chmod +x presto
./presto --server localhost:8090 --catalog hive --schema default

在这里插入图片描述

三、Presto验证

创建数据库(Hive)

create database myhive;

查看数据库(Hive)

show databases;

四、Presto集群搭建

一、节点规划

在这里插入图片描述

二、分发配置文件

先在第二台和第三台服务器上创建对应的目录:

mkdir -p /export/server

在第一台执行复制命令:

scp -r presto root@hadoop02:/export/server
scp -r presto root@hadoop03:/export/server

三、配置

hadoop01节点作为coordinator节点,其余两个节点为Worker节点。

  • etc/config.properties(hadoop01-coordinator

    coordinator=true
    node-scheduler.include-coordinator=true
    http-server.http.port=8090
    query.max-memory=4GB
    query.max-memory-per-node=1GB
    discovery-server.enabled=true
    discovery.uri=http://192.168.88.80:8090
    
  • etc/jvm.config(hadoop01-coordinator

    -server
    -Xmx8G
    -XX:+UseG1GC
    -XX:G1HeapRegionSize=32M
    -XX:+UseGCOverheadLimit
    -XX:+ExplicitGCInvokesConcurrent
    -XX:+HeapDumpOnOutOfMemoryError
    -XX:+ExitOnOutOfMemoryError
    
  • etc/node.properties(hadoop01-coordinator

    node.environment=cdhpresto
    node.id=presto-cdh01
    node.data-dir=/export/server/data
    
  • etc/catalog/hive.properties(hadoop01-coordinator

    connector.name=hive-hadoop2
    hive.metastore.uri=thrift://192.168.88.80:9083
    
  • etc/config.properties(hadoop02/03-worker配置

    coordinator=false
    http-server.http.port=8090
    query.max-memory=4GB
    query.max-memory-per-node=1GB
    discovery.uri=http://192.168.88.80:8090
    
  • etc/jvm.config(hadoop02/03-worker配置

    -server
    -Xmx8G
    -XX:+UseG1GC
    -XX:G1HeapRegionSize=32M
    -XX:+UseGCOverheadLimit
    -XX:+ExplicitGCInvokesConcurrent
    -XX:+HeapDumpOnOutOfMemoryError
    -XX:+ExitOnOutOfMemoryError
    
  • etc/node.properties(hadoop02/03-worker配置

    node.environment=cdhpresto
    node.id=presto-cdh02
    node.data-dir=/export/server/data
    
  • etc/catalog/hive.properties(hadoop02/03-worker配置

    connector.name=hive-hadoop2
    hive.metastore.uri=thrift://192.168.88.80:9083
    

四、运行

  • 创建快捷启动脚本

    • 在用户根目录创建脚本文件:

      cd ~
      vim start_presto.sh
      
    • 在文件中写入:

      /export/server/presto/bin/launcher start
      
    • 分配执行权限:

      chmod +x start_presto.sh
      
    • 启动三台presto:

      ./start_presto.sh
      
    • 查看是否启动成功:

      ps -ef|grep presto
      

      在这里插入图片描述

  • 启动Presto客户端
    启动三台presto,然后通过CLI分别登录三台server进行测试。

  • 设置presto环境变量:

    vim /etc/profile
    
  • 在文件末尾写入:

    export PRESTO_HOME=/export/server/presto
    export PATH=$PATH:$PRESTO_HOME/bin
    
  • 执行生效:

    source /etc/profile
    
  • 启动presto-cli:

    presto --server 192.168.88.80:8090 --catalog hive --schema default
    
  • 测试SQL:

    use myhive;
    select * from employee;
    

    在这里插入图片描述

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值