数据仓库(⼗)---分布式SQL查询引擎---presto安装部署和连接hive使⽤在上⼀章已经了解了presto的简介,本章进⾏部署和使⽤。
官⽹教程
环境准备
Presto 有以下⼏个基本要求:
Linux 或者 Mac OS X 系统
Java 8,64位
我的环境
操作系统:CentOS release 6.6 (Final)
ps:查看系统版本使⽤命令
lsb_release -a
Hadoop集:CDH 5.13.0, Parcel
JDK 版本:java version 1.8.0_131
Presto单节点安装配置
实际使⽤中⼀般需要多节点安装配置,为了快速熟悉和尝试Presto,可以先尝试安装单节点的Presto服务。
所谓的单节点就是把Presto的coordinator和worker都部署在同⼀个节点上。
下载
使⽤命令创建⽬录
mkdir presto
使⽤命令解压压缩⽂件
tar -xf presto-server-0.
配置Presto
在安装⽬录中创建⼀个etc⽬录。 在这个etc⽬录中放⼊以下配置信息:
节点属性:每个节点的环境配置信息
JVM 配置:JVM的命令⾏选项
配置属性:Presto server的配置信息
Catalog属性:configuration forConnectors(数据源)的配置信息
使⽤命令
cd ./presto-server-0.195
mkdir etc
Node Properties
节点属性配置⽂件:etc/node.properties包含针对于每个节点的特定的配置信息。 ⼀个节点就是在⼀台机器上安装的Presto实例。 这份配置⽂件⼀般情况下是在Presto第⼀次安装的时候,由部署系统创建的。 ⼀个etc/node.properties配置⽂件⾄少包含如下配置信息:
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/presto/data
针对上⾯的配置信息描述如下:
node.id: 每个Presto节点的唯⼀标⽰。每个节点的node.id都必须是唯⼀的。在Presto进⾏重启或者升级过程中每个节点的node.id必须保持不变。如果在⼀个节点上安装多个Presto实例(例如:在同⼀台机器上安装多个Presto节点),那么每个Presto节点必须拥有唯⼀的node.id。
node.data-dir: 数据存储⽬录的位置(操作系统上的路径)。Presto将会把⽇期和数据存储在这个⽬录下。
使⽤命令
cd ./etc
vim node.properties
输⼊配置
node.id=a0001
node.data-dir=/home/zzq/var/presto/data
如图:
点击esc,输⼊:wq回车保存退出。
JVM配置
JVM配置⽂件,fig, 包含⼀系列在启动JVM的时候需要使⽤的命令⾏选项。这份配置⽂件的格式是:⼀系列的选项,每⾏配置⼀个单独的选项。由于这些选项不在shell命令中使⽤。 因此即使将每个选项通过空格或者其他的分隔符分开,java程序也不会将这些选项分开,⽽是作为⼀个命令⾏选项处理。(就像下⾯例⼦中的OnOutOfMemoryError选项)。
⼀个典型的fig配置⽂件如下:
-
server
-Xmx16G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=150M
由于OutOfMemoryError将会导致JVM处于不⼀致状态,所以遇到这种错误的时候⼀般的处理措施就是将dump headp中的信息(⽤于debugging),然后强制终⽌进程。
Presto会将查询编译成字节码⽂件,因此Presto会⽣成很多class,因此应该增⼤Perm区的⼤⼩(在Perm中主要存储class)并且要允许Jvm class unloading。
使⽤命令
fig
因为我的节点内存⽐较⼤为126G,所以可以设置的内存也⽐较⼤,我设置为32G。
输⼊配置
-server
-Xmx32G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=300M
如图
点击esc,输⼊:wq回车保存退出。
Config Properties
但是如果你⽤⼀台机器进⾏测试,那么这⼀台机器将会即作为coordinator,也作为worker。
对配置项解释如下:
coordinator:指定是否运维Presto实例作为⼀个coordinator(接收来⾃客户端的查询情切管理每个查询的执⾏过程)。
node-scheduler.include-coordinator:是否允许在coordinator服务中进⾏调度⼯作(即作为coordinator⼜作为worker。对于⼤型的集,在⼀个节点上的Presto server即作为coordinator⼜作为worker将会
降低查询性能。因为如果⼀个服务器作为worker使⽤,那么⼤部分的资源都会被worker占⽤,那么就不会有⾜够的资源进⾏关键任务调度、管理和监控查询执⾏。
http-server.http.port:指定HTTP server的端⼝。Presto 使⽤ HTTP进⾏内部和外部的所有通讯。
task.max-memory=1GB:⼀个单独的任务使⽤的最⼤内存 (⼀个查询计划的某个执⾏部分会在⼀个特定的节点上执⾏)。 这个配置参数限制的GROUP BY语句中的Group的数⽬、JOIN关联中的右关联表的⼤⼩、ORDER BY语句中的⾏数和⼀个窗⼝函数中处理的⾏数。 该参数应该根据并发查询的数量和查询的复杂度进⾏调整。如果该参数设置的太低,很多查询将不能执⾏;但是如果设置的太⾼将会导致JVM把内存耗光。
coordinator的uri。修改example:8080, 根据你的实际环境设置该URI。注意:这个URI⼀定不能
以“/“结尾。
使⽤命令
vim config.properties
⽇志级别
⽇志配置⽂件:etc/log.properties。在这个配置⽂件中允许你根据不同的⽇志结构设置不同的⽇志级别。每个logger都有⼀个名字(通常是使⽤logger的类的全标⽰类名). Loggers通过名字中的“.“来表⽰层级和集成关系。 (像java⾥⾯的包). 如下⾯的log配置信息: com.facebook.presto=INFO
This would set the minimum level to INFO for both com.facebook.presto.server and com.facebook.presto.hive. The default minimum level is INFO (thus the above example does not actually change anything). There are four levels: DEBUG, INFO, WARN and ERROR.
使⽤命令
vim log.properties
因为考虑到info级别的⽇志输出会占⽐较多的空间,这⾥只要ERROR级别的错误。
输⼊配置
com.facebook.presto=ERROR
如图:
点击esc,输⼊:wq回车保存退出。
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的注册。
例如:
如果要创建jmx数据源的连接器,可以创建⼀个etc/catalog/jmx.properties⽂件,⽂件中的内容如下,完成在jmxcatalog上挂载⼀个jmxconnector:
connector.name=jmx
如果要创建hive数据源的连接器,可以创建⼀个etc/catalog/hive.properties⽂件,⽂件中的内容如下,完成在hivecatalog上挂载⼀个hiveconnector:
connector.name=hive-hadoop2
参数说明
connector.name为连接器名称,hive的话需要加上版本号例如hive-hadoop2
⼀般配置在/etc/hive/l中。
CDH安装的⼀般都在/etc/hadoop/conf路径下。
如图:
更多信息可以参考
这⾥要连接hive,所以应该配置hive的连接器。
使⽤命令
mkdir catalog
cd ./catalog
vim hive.properties
输⼊配置
connector.name=hive-hadoop2
如图:
点击esc,输⼊:wq回车保存退出。
配置完毕
最终etc的⽬录中配置⽂件如图:
启动运⾏Presto
在安装⽬录的bin/launcher⽂件,就是启动脚本。Presto可以使⽤如下命令作为⼀个后台进程启动:
cd /home/zzq/presto/presto-server-0.195
bin/launcher start
另外,也可以在前台运⾏, ⽇志和相关输出将会写⼊stdout/stderr(可以使⽤类似daemontools的⼯具捕捉这两个数据流):
cd /home/zzq/presto/presto-server-0.195
bin/launcher run
停⽌
cd /home/zzq/presto/presto-server-0.195
bin/launcher stop
thriftPresto可以列出⽀持的命令和命令⾏选项。
cd /home/zzq/presto/presto-server-0.195
bin/launcher --help
另外可以查看服务进程命令
cd /home/zzq/presto/presto-server-0.195
bin/launcher status
查看进程: ps -aux|grep PrestoServer 或 jps
启动完之后,⽇志将会写在var/log⽬录下,该⽬录下有如下⽂件:
launcher.log: 这个⽇志⽂件由launcher创建,并且server的stdout和stderr都被重定向到了这个⽇志⽂件中。 这份⽇志⽂件中只会有很少的信息,包括:
在server⽇志系统初始化的时候产⽣的⽇志和JVM产⽣的诊断和测试信息。
server.log: 这个是Presto使⽤的主要⽇志⽂件。⼀般情况下,该⽂件中将会包括server初始化失败时产⽣的相关信息。这份⽂件会被⾃动轮转和压缩。
http-request.log: 这是HTTP请求的⽇志⽂件,包括server收到的每个HTTP请求信息,这份⽂件会被⾃动轮转和压缩。
连接hive测试验证
我这⾥是0.195版本,使⽤命令
wget /maven2/com/facebook/presto/presto-cli/0.195/presto-cli-0.195-executable.jar
⽂件下载后,重名名为 presto,使⽤命令
mv presto-cli-0.195-executable.jar presto
使⽤ chmod +x 命令设置可执⾏权限
chmod a+x presto

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。