CDH集群中部署Presto

       Presto是完全基于内存的并行计算以及分布式SQL交互式查询引擎。它可以共享Hive的元数据,然后直接访问HDFS中的数据。同Impala一样,作为Hadoop之上的SQL交互式查询引擎,通常比Hive要快5-10倍。Presto是一个运行在多台服务器上的分布式系统。完整安装包括一个coordinator和多个worker。

目录

一、准备工作

1、下载安装包

2、角色说明

二、解压等相关操作

三、准备Presto的配置文件

四、Presto服务的启动和停止

五、Presto集成Hive

六、测试


一、准备工作

1、下载安装包

       我们使用的安装包是presto-server-0.230.tar.gz,链接路径为:

扫描二维码关注公众号,回复: 11448991 查看本文章
https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.230/presto-server-0.230.tar.gz

2、角色说明

       由于小编的CDH集群是四个节点,那么此处也配置四个节点,其中master节点安装coordinator,slave节点安装worker。Presto服务的安装目录为:

/opt/cloudera/parcels/presto

二、解压等相关操作

       (1)将下载好的tar包上传到对应目录并解压

[root@cdh-master parcels]# pwd
/opt/cloudera/parcels
[root@cdh-master parcels]# tar -zxvf ./presto-server-0.230.tar.gz -C ./

       (2)将解压好的目录分发到其余三个节点,以slave01为例

scp -r ./presto-server-0.230 cdh-slave01:/opt/cloudera/parcels/

       (3)为所有节点的presto-server-0.230目录创建软连接

ln -s presto-server-0.230 presto

       (4)所有节点的/opt/cloudera/parcels/presto/bin/launcher文件中添加java环境变量

JAVA_HOME=/opt/modules/jdk1.8.0_231
PATH=$JAVA_HOME/bin:$PATH

       使用这种方式就可以直为Presto服务指定JAVA环境,而不会影响服务器上其它服务的JAVA环境。这里需要注意的是,此处或许对jdk的版本要求比严,jdk小版本尽量大于151

三、准备Presto的配置文件

       1、所有节点的/opt/cloudera/parcels/presto目录下创建etc目录,用于存放配置文件。

mkdir etc

       2、所有节点新建node.properties文件,内容如下(这里以master节点为例,salve节点需要更改node.id等内容):

node.environment=qgwlpresto
node.id=presto-cdh01
node.data-dir=/data/presto

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

       3、所有节点新建jvm.config文件,配置JVM参数,内容如下:

-server
-Xmx8G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=150M

       4、所有节点创建config.properties文件,这里需要注意的是master节点与slave节点的内容不一样。

       (1)master节点即coordinator节点的配置如下:

coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8089
query.max-memory=4GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://cdh-master:8089

       (2)slave节点即worker节点的配置如下:

coordinator=false
http-server.http.port=8089
query.max-memory=4GB
query.max-memory-per-node=1GB
discovery.uri=http://cdh-master:8089

       其中,coordinator指定是否将Presto实例作为一个coordinator(接收来自客户端的查询情切管理每个查询的执行过程)。node-scheduler.include-coordinator指是否允许在coordinator服务中进行调度工作。对于大型的集群,在一个节点上的Presto server即作为coordinator又作为worker将会降低查询性能。因为如果一个服务器作为worker使用,那么大部分的资源都不会被worker占用,那么就不会有足够的资源进行关键任务调度、管理和监控查询执行。http-server.http.port即指定HTTP server的端口。Presto使用HTTP进行内部和外部的所有通讯。discovery.uri是Discoveryserver的URI。由于启用了Prestocoordinator内嵌的Discovery服务,因此这个uri就是Prestocoordinator的uri。

       5、所有节点新建日志文件log.properties,内容如下:

com.facebook.presto=INFO

四、Presto服务的启动和停止

# 启动
/opt/cloudera/parcels/presto/bin/launcher start
# 停止
/opt/cloudera/parcels/presto/bin/launcher stop

       关于Presto的更多命令,可以通过如下命令查看:

/opt/cloudera/parcels/presto/bin/launcher --help

五、Presto集成Hive

       1、在所有节点的/opt/cloudera/parcels/presto/etc目录下新建catalog目录:

mkdir catalog

       2、所有节点在catalog目录下创建hive.properties,该文件与Hive服务集成使用,内容如下:

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

       3、修改presto的jvm.config,在配置文件中增加Presto访问HDFS的用户名,如下所示:

-server
-Xmx8G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=150M
-DHADOOP_USER_NAME=presto

       4、上述用户为presto,需要新建此用户。

useradd presto

       5、重启presto服务

/opt/cloudera/parcels/presto/bin/launcher restart

六、测试

       1、这里测试Presto与Hive的集成使用Presto提供的Presto CLI,该CLI是一个可执行的JAR文件,首先需要下载该文件:

https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.230/presto-cli-0.230-executable.jar

       2、将下载好的文件上传到/opt/cloudera/parcels/presto/bin目录下并修改文件名称:

mv presto-cli-0.230-executable.jar presto

       3、赋权

chmod +x presto

       4、执行如下命令访问Hive

./presto --server cdh-master:8089 --catalog=hive --schema=databaseName

       5、监控界面可以看到相关信息

      至此,本文就结束了,你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题~

猜你喜欢

转载自blog.csdn.net/gdkyxy2013/article/details/107023401