CentOS 安装Presto

前言

Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。Presto支持在线数据查询,包括Hive, Cassandra, 关系数据库以及专有数据存储。 一条Presto查询可以将多个数据源的数据进行合并,可以跨越整个组织进行分析。

估计是中国人维护的,英文文档十分通俗易懂:https://prestodb.io/docs/current/index.html
实在无力的,可以看中文版的,大致内容不会差太多:http://prestodb.jd.com/docs/current/index.html

下载解压

目前最新版本(0.237):https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.237/presto-server-0.237.tar.gz

解压:

tar -xzvf presto-server-0.237.tar.gz

设置环境变量:

cd presto-server-0.237
export PRESTO_HOME=`pwd`

配置Presto

在安装目录中创建一个etc目录。 在这个etc目录中放入以下配置信息:

  • Node Properties
    节点属性配置文件:etc/node.properties包含针对于每个节点的特定的配置信息。 一个节点就是在一台机器上安装的Presto实例。 这份配置文件一般情况下是在Presto第一次安装的时候,由部署系统创建的。 一个etc/node.properties配置文件至少包含如下配置信息:

    node.environment=production
    node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
    node.data-dir=/var/presto/data
    

    node.environment: 集群名称。所有在同一个集群中的Presto节点必须拥有相同的集群名称。
    node.id: 每个Presto节点的唯一标示。每个节点的node.id都必须是唯一的。在Presto进行重启或者升级过程中每个节点的node.id必须保持不变。如果在一个节点上安装多个Presto实例(例如:在同一台机器上安装多个Presto节点),那么每个Presto节点必须拥有唯一的node.id。
    node.data-dir: 数据存储目录的位置(操作系统上的路径)。Presto将会把日志和数据存储在这个目录下。

  • JVM配置

    -server
    -Xmx16G
    -XX:+UseConcMarkSweepGC
    -XX:+ExplicitGCInvokesConcurrent
    -XX:+CMSClassUnloadingEnabled
    -XX:+AggressiveOpts
    -XX:+HeapDumpOnOutOfMemoryError
    -XX:OnOutOfMemoryError=kill -9 %p
    -XX:ReservedCodeCacheSize=150M
    
  • Config Properties
    Presto的配置文件:etc/config.properties包含了Presto server的所有配置信息。 每个Presto server既是一个coordinator也是一个worker。 但是在大型集群中,处于性能考虑,建议单独用一台机器作为 coordinator。

    一个coordinator的etc/config.properties应该至少包含以下信息:

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

    以下是最基本的worker配置:

    coordinator=false
    http-server.http.port=8080
    task.max-memory=1GB
    discovery.uri=http://example.net:8080
    

    但是如果你用一台机器进行测试,那么这一台机器将会即作为coordinator,也作为worker。配置文件将会如下所示:

    coordinator=true
    node-scheduler.include-coordinator=true
    http-server.http.port=8080
    task.max-memory=1GB
    discovery-server.enabled=true
    discovery.uri=http://example.net:8080
    

    对配置项解释如下:

    • 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:一个单独的任务使用的最大内存 (一个查询计划的某个执行部分会在一个特定的节点上执行)。 这个配置参数限制的GROUP BY语句中的Group的数目、JOIN关联中的右关联表的大小、ORDER BY语句中的行数和一个窗口函数中处理的行数。 该参数应该根据并发查询的数量和查询的复杂度进行调整。如果该参数设置的太低,很多查询将不能执行;但是如果设置的太高将会导致JVM把内存耗光。
    • discovery-server.enabled:Presto 通过Discovery 服务来找到集群中所有的节点。为了能够找到集群中所有的节点,每一个Presto实例都会在启动的时候将自己注册到discovery服务。Presto为了简化部署,并且也不想再增加一个新的服务进程,Presto coordinator 可以运行一个内嵌在coordinator 里面的Discovery 服务。这个内嵌的Discovery 服务和Presto共享HTTP server并且使用同样的端口。
    • discovery.uri:Discovery server的URI。由于启用了Presto coordinator内嵌的Discovery 服务,因此这个uri就是Presto coordinator的uri。修改example.net:8080,根据你的实际环境设置该URI。注意:这个URI一定不能以“/“结尾。
  • 日志级别

    com.facebook.presto=INFO
    
  • 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来访问这张表。
    详细配置信息参照:https://prestodb.io/docs/current/connector.html(英文)
    http://prestodb.jd.com/docs/current/connector.html(中文)

运行Presto

  • 后台进程启动:

    $PRESTO_HOME/bin/launcher start
    # 查看日志 node.data-dir配置的路径/var/log/server.log
    
  • 前台运行:

    $PRESTO_HOME/bin/launcher run
    
  • 帮助

    $PRESTO_HOME/bin/launcher-help
    

Presto客户端

下载地址:https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.237/presto-cli-0.237-executable.jar

  • 改名并赋予执行权限

    mv presto-cli-0.237-executable.jar presto
    chmod +x presto
    
  • 连接服务器

    presto --server <host>:<port>
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章