Presto集成到Ambari介绍

在Ambari中集成Presto,能在Ambari UI中方便地安装部署Presto到集群,并能方便修改Presto相关配置。

Presto官方介绍文档

英文http://teradata.github.io/presto/docs/current/index.html

中文http://prestodb-china.com/docs/current/index.html#

ambari-presto-service的官方文档

https://prestodb.io/ambari-presto-service/

Presto在京东的实践

Presto在美团的应用

Presto使用

前提准备

Red Hat Enterprise Linux6.x 64-bit或者CentOS

已安装Ambari,并满足Ambari相关要求.

Presto 0.148版后需要安装Oracle JDK 1.8u60+,0.148之前版本需要JDK 1.8u40+。理解JDK配置了解Presto和Ambari JDK之间的关系。

禁用requiretty。在Red Hat Enterprise Linux6.x上能通过编辑/etc/sudoers文件,注释掉Defaults requiretty。

节点已安装wget。

添加Presto Service

下载文件

在官网下载Ambari集成包

确保Ambari已安装好HDP2.3,在ambari-server运行的服务器上创建如下目录/var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO

$ mkdir /var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO$ cd /var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO

将集成文件ambari-presto-1.2.tar.gz放于/var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO目录下。此处下载Teradata版本,或者此处下载0.148版集成包,上传集成文件到集群中,并解压:

$ tar -xvf /path/to/integration/package/ambari-presto-1.1.tar.gz -C /var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO$ mv /var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO/ambari-presto-1.1/* /var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO$ rm -rf /var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO/ambari-presto-1.1

最后,将所有集成文件添加可执行权限,并重启Ambari-server。

$ chmod -R +x /var/lib/ambari-server/resources/stacks/HDP/2.3/services/PRESTO/*$ ambari-server restart

上述包是默认集成presto0.161版,这里可修改到最新版本,并配置下载最新的rpm和cli包。

#修改presto版本$ cd/var/lib/ambari-server/resources/stacks/HDP/2.5/services/PRESTO$ makedistVERSION=0.168

#修改下载包的对应版本和路径$ cd/var/lib/ambari-server/resources/stacks/HDP/2.5/services/PRESTO/package/scripts修改:download.ini[download]presto_rpm_url=http://search.maven.org/remotecontent?filepath=com/facebook/presto/presto-server-rpm/0.168/presto-server-rpm-0.168.rpmpresto_cli_url=http://search.maven.org/remotecontent?filepath=com/facebook/presto/presto-cli/0.168/presto-cli-0.168-executable.jar为:[download]presto_rpm_url=http://dpnode08/presto/0.168/presto-server-rpm-0.168.rpmpresto_cli_url=http://dpnode08/presto/0.168/presto-cli-0.168-executable.jar

重启Ambari server后,在浏览器UI界面,点击Add Service,根据指示安装Presto。

添加服务

选择主节点安装Coordinator

分配Worker节点和客户端节点

自定义配置

自定义配置,主要配置discovery-uri.

主要配置信息有:

#配置Connector{'hive':['connector.name=hive-hadoop2','hive.metastore.uri=thrift://dpnode03:9083','hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml','hive.allow-drop-table=true','hive.storage-format=ORC'],'jmx':['connector.name=jmx']}​#配置JVM-server-Xmx16G-XX:+UseConcMarkSweepGC-XX:+ExplicitGCInvokesConcurrent-XX:+CMSClassUnloadingEnabled-XX:+AggressiveOpts-XX:+HeapDumpOnOutOfMemoryError-XX:OnOutOfMemoryError=kill-9%p-XX:ReservedCodeCacheSize=150M​#discovery.urihttp://dpnode02:8285

启动安装

启动安装

安装完成

运行客户端

$ presto-client

执行sql语句,然后在URI上查看相关运行情况。

访问URI

/var/log/presto 日志/usr/lib/presto 安装目录/var/lib/presto 数据目录/etc/presto     配置文件

拓扑

以下两步可在群集中的节点之间分配Presto进程。一旦选择了Presto的拓扑并完成安装过程,就不可能修改该拓扑。

Presto由协调器coordinator和工作进程worker组成。同一代码运行所有节点,因为为worker和coordinator安装了相同的PrestoRPM包。每个节点上的配置决定了特定节点的行为方式。 Presto可以以伪分布式模式运行,其中一个节点上的单个Presto进程充当coordinator和worker,或者可以以分布式模式运行,其中Presto coordinator在一个节点上运行,而Presto worker在其他节点上运行。

Presto的客户端组件是presto-cli可执行文件JAR。您应该将其放置在您希望通过此命令行访问Presto服务器的所有节点上。 presto-cli可执行文件JAR不需要与工作者或协调器共同定位,它可以自己安装。安装后,可以在/usr/ lib/presto/bin/presto-cli找到CLI。

不要将worker放置在与coordinator相同的节点上。这样的尝试将失败安装,因为集成软件将尝试安装RPM两次。为了安排Presto coordinator的工作,有效地将过程变成双工/协调器,请在配置中启用node-scheduler.include-coordinator。

伪分布式

在一个节点上安装Presto coordinator,不安装其他的worker。在配置页面启用node-scheduler.include-coordinator

分布式

在一个节点上安装Presto coordinator,在其他若干节点(非coordinator节点)上安装Presto worker。

Presto配置

没有缺省值并且需要输入的一个配置属性是discovery.uri。预期值为http://:8285。注意,它是http而不是https,端口是8285.如果更改http-server.http.port的值,请确保在disovery.uri中进行相应更改。

一些最常用的属性显示在“设置”选项卡中(默认情况下是打开的)。在“高级”选项卡中,通过打开正确的下拉列表并指定键和值来设置自定义属性。请注意,指定Presto无法识别的属性将导致安装失败,或者部分或所有服务器无法启动。

安装后,通过选择Presto服务,然后选择Configs选项卡,更改Presto配置。更改配置选项后,请确保重新启动Presto以使更改生效。

如果您运行的Ambari版本早于2.1(版本号小于2.1),则在设置以下内存相关配置时必须忽略内存后缀(GB):query.max-memory-per-node和query.max-memory。对于这两个属性,内存后缀由集成软件自动添加。对于您添加为自定义属性的所有其他内存相关配置,在指定值时必须包括内存后缀。

添加删除Connectors

要添加连接器,请修改connectors.to.add属性,其格式如下:{'connector1':['key1 = value1','key2 = value2'等],'connector2':['key3 = value3 ','key4 = value4']等}。请注意每个单个元素周围的单引号。此属性仅添加连接器,不会删除连接器。因此,如果添加connector1,保存配置,重新启动Presto,然后为此属性指定{},connector1不会被删除。如果在连接器设置中指定了不正确的值,例如将Hive连接器中的hive.metastore.uri设置为指向无效的主机名,则Presto将无法启动。

例如,要添加Hive和Kafka连接器,请将connectors.to.add属性设置为:

{'hive': ['connector.name=hive-cdh4', 'hive.metastore.uri=thrift://example.net:9083'],'kafka': ['connector.name=kafka', 'kafka.table-names=table1,table2', 'kafka.nodes=host1:port,host2:port']}

要删除连接器,请修改connectors.to.delete属性,格式如下:['connector1','connector2'等]。再次,注意每个元素周围的单引号。上述值将删除连接器connector1和connector2。请注意,tpch连接器不能删除,因为它用于在启动Presto之后。 tpch连接器的存在对系统的影响可以忽略不计。

例如,要删除Hive和Kafka连接器,请将connectors.to.delete属性设置为:['hive','kafka']。

HIVE连接器

针对不同的hadoop版本,Presto都有对应的hive connector:

hive-hadoop1: Apache Hadoop 1.x

hive-hadoop2: Apache Hadoop 2.x

hive-cdh4: Cloudera CDH 4

hive-cdh5: Cloudera CDH 5

创建一个包含有以下内容的文件:etc/catalog/hive.properties,从而在hivecatalog中挂载hive-cdh4的connector。根据你实际的hadoop版本和环境替换掉hive-cdh4和example.net:9083:

connector.name=hive-cdh4hive.metastore.uri=thrift://example.net:9083

HDFS Configuration

hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml

#创建新表时,表的文件存储格式hive.storage-format=ORC

Mysql连接器

connector.name=mysqlconnection-url=jdbc:mysql://example.net:3306connection-user=rootconnection-password=secret

/usr/lib/presto/bin/presto-cli --server dpnode02:8285 --catalog hive --schema default

JDK配置

在Ambari的安装过程中,用户可以选择Ambari将使用的JDK以及其控制的其他服务。此JDK可以在安装后随时通过在运行Ambari服务器进程的主机上运行ambari-server设置进行编辑,然后通过运行ambari-server restart以重新启动该进程,以使更改生效。

当选择要运行的JDK版本时,用户会看到三个选项:1.8,1.7或自定义JDK。如果选择1.8或1.7选项,Ambari将下载该主版本的JDK。但是,JDK的更新(次要)版本根据Ambari的版本而有所不同。例如,Ambari 2.2.0+将下载1.8u60,之前的版本将下载1.8u40。

当Ambari安装Presto时,使用的JDK将是Ambari配置的JDK(具体来说,是/etc/ambari-server/conf/ambari.properties中的java.home的值)。但是,与其他服务不同,一旦安装Presto,它将使用与安装的JDK相同的JDK,即使Ambari的JDK已重新配置。原因是在RPM安装期间,Presto的JDK设置在/etc/presto/env.sh中。要重新配置Presto的JDK,在Presto将运行的所有主机上编辑/etc/presto/env.sh

你可能感兴趣的:(Presto集成到Ambari介绍)