Presto 环境搭建

Presto 环境搭建

官网

https://prestodb.io/

中国官网

http://prestodb-china.com/

项目github

https://github.com/prestodb/presto

安装前准备

Linux or Mac OS X

Java 8, 64-bit

Python 2.4+

安装presto

下载presto-server-0.175.tar.gz包,下载地址:

 https://prestodb.io/docs/current/installation/deployment.html

解压:

tar xzvf presto-server-0.175.tar.gz
cd presto-server-0.175

Presto需要一个用于存储日志、本地元数据等的数据目录。建议在安装目录的外面创建一个数据目录。这样方便Presto进行升级。

配置Presto

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

node.properties :环境变量配置,每个节点特定配置

jvm.config :Java虚拟机的命令行选项

log.properties: 允许你根据不同的日志结构设置不同的日志级别

config.properties :Presto 服务配置

catalog目录 :每个连接者配置(data sources)

Node Properties 配置

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

node.environment=test
node.id=ffffffff-ffff-ffff-ffff-ffffffffff01
node.data-dir=/home/hadoop/software/presto/data

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

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

Config Properties 配置

Presto的配置文件:etc/config.properties包含了Presto server的所有配置信息。 每个Presto server既是一个coordinator也是一个worker。但是在大型集群中,处于性能考虑,建议单独用一台机器作为 coordinator。

coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8088
discovery-server.enabled=true
discovery.uri=http://192.168.1.235:8088

以下是最基本的worker配置:

coordinator=false
http-server.http.port=8088
discovery-server.enabled=true
discovery.uri=http://192.168.1.225:8088

对配置项解释如下:

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:8080,根据你的实际环境设置该URI。注意:这个URI一定不能以“/“结尾。

log.properties 配置

日志配置文件:etc/log.properties。在这个配置文件中允许你根据不同的日志结构设置不同的日志级别。每个logger都有一个名字(通常是使用logger的类的全标示类名). Loggers通过名字中的“.“来表示层级和集成关系。 (像java里面的包). 如下面的log配置信息:

com.facebook.presto=INFO

日志级别分为:DEBUG, INFO, WARN and ERROR。

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的注册。 例如:可以先创建一个etc/catalog/jmx.properties文件,文件中的内容如下,完成在jmxcatalog上挂载一个jmxconnector:

connector.name=jmx

在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 配置

hive.metastore.uri 需要在hive-site.xml 中添加如下配置:


 <property>
          <name>hive.metastore.local</name>
          <value>false</value>
    </property>
        
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://host:9083</value>
    </property>
    

hive用如下命令启动:


bin/hive --service metastore

运行 presto

在安装目录的bin/launcher文件,就是启动脚本。 Presto可以使用如下命令作为一个后台进程启动:


bin/launcher start

也可以在前台运行, 可查看具体的日志


bin/launcher run

停止服务进程命令


bin/laucher stop

查看进程:


ps -aux|grep PrestoServer  或   jps

presto 命令行接口

Presto CLI为用户提供了一个用于查询的可交互终端窗口。CLI是一个 可执行 JAR文件, 这也就意味着你可以像UNIX终端窗口一样来使用CLI。

下载 presto-cli-0.175-executable.jar ,重名名为 presto , 使用 chmod +x 命令设置可执行权限,然后执行:


./presto --server 192.168.1.235:8088 --catalog hive --schema default

备注

如果不想升级linux系统上的Java版本,可以解压jdk1.8的安装包,并在/bin/launcher脚本中添加 临时的java环境变量:

export JAVA_HOME="/opt/software/jdk1.8.0_131"
export PATH="$JAVA_HOME/bin:$PATH"

添加后需要在客户端先执行下上面两行命令。

##Queue Configuration ==query.queue-config-file==: Specifies the file to read the Queue Configuration from.


{
  "queues": {
    "user.${USER}": {
      "maxConcurrent": 5,
      "maxQueued": 20
    },
    "user_pipeline.${USER}": {
      "maxConcurrent": 1,
      "maxQueued": 10
    },
    "pipeline": {
      "maxConcurrent": 10,
      "maxQueued": 100
    },
    "admin": {
      "maxConcurrent": 100,
      "maxQueued": 100
    },
    "global": {
      "maxConcurrent": 100,
      "maxQueued": 1000
    }
  },
  "rules": [
    {
      "user": "bob",
      "queues": ["admin"]
    },
    {
      "source": ".*pipeline.*",
      "queues": [
        "user_pipeline.${USER}",
        "pipeline",
        "global"
      ]
    },
    {
      "queues": [
        "user.${USER}",
        "global"
      ]
    }
  ]
}

转载于:https://my.oschina.net/u/1779007/blog/898181

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值