presto集群安装&整合hive|mysql|jdbc

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

Presto是一个运行在多台服务器上的分布式系统。 完整安装包括一个coordinator(调度节点)和多个worker。 由客户端提交查询,从Presto命令行CLI提交到coordinator。 coordinator进行解析,分析并执行查询计划,然后分发处理队列到worker中。

目录:

  • 搭建前环境准备

  • 集群计划

  • 连接器

  • 安装步骤

  • 配置文件

  • 运行presto

  • 整合hive测试

  • 整合mysql测试

  • 整合jdbc测试

1.搭建前环境准备

  • CentOS 6.7

  • java8

  • Python3.4.4

  • hadoop2.6.4

2.集群计划


  • hd1(192.168.174.131) :调度节点(coordinator)

  • hd2(192.168.174.132):worker节点

  • hd3(192.168.174.133):worker节点

3.连接器


Presto支持从以下版本的Hadoop中读取Hive数据:支持以下文件类型:Text, SequenceFile, RCFile, ORC

Apache Hadoop 1.x  (hive-hadoop1)

Apache Hadoop 2.x  (hive-hadoop2)

Cloudera CDH 4       (hive-cdh4)

Cloudera CDH 5       (hive-cdh5)

此外,需要有远程的Hive元数据。 不支持本地或嵌入模式。 Presto不使用MapReduce,只需要HDFS

4.单机安装步骤


  • 下载 presto-server-0.100, ( 下载地址:https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.100/presto-server-0.100.tar.gz)或者:链接:http://pan.baidu.com/s/1qYTvTwg 密码:4xz6

  • 将 presto-server-0.100.tar.gz 上传至linux主机(hd1),解压后的文件目录结构如下(称为安装目录):Presto需要一个用于存储日志、本地元数据等的数据目录。 建议在安装目录的外面创建一个数据目录。这样方便Presto进行升级,如:/presto/data

wKioL1nCKw7QplhRAABREBpdcas515.png

5.配置文件


  • 在安装目录中创建一个etc目录, 在这个etc目录中放入以下配置文件:

1. config.properties Presto 服务配置

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

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

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

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

  • config.properties

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

1
2
3
4
5
6
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=18080
task.max-memory=1GB
discovery-server.enabled=true
discovery.uri=http://192.168.174.131:18080

1. coordinator:指定是否运维Presto实例作为一个coordinator(接收来自客户端的查询情切管理每个查询的执行过程)

2. node-scheduler.include-coordinator:是否允许在coordinator服务中进行调度工作对于大型的集群,在一个节点上的Presto server即作为coordinator又作为worke将会降低查询性能。因为如果一个服务器作为worker使用,那么大部分的资源都会被worker占用,那么就不会有足够的资源进行关键任务调度、管理和监控查询执行

3. http-server.http.port:指定HTTP server的端口。Presto 使用 HTTP进行内部和外部的所有通讯

4. task.max-memory=1GB:一个单独的任务使用的最大内存 (一个查询计划的某个执行部分会在一个特定的节点上执行)。 这个配置参数限制的GROUP BY语句中的Group的数目、JOIN关联中的右关联表的大小、ORDER BY语句中的行数和一个窗口函数中处理的行数。 该参数应该根据并发查询的数量和查询的复杂度进行调整。如果该参数设置的太低,很多查询将不能执行;但是如果设置的太高将会导致JVM把内存耗光

5. discovery-server.enabledPresto 通过Discovery 服务来找到集群中所有的节点。为了能够找到集群中所有的节点,每一个Presto实例都会在启动的时候将自己注册到discovery服务。Presto为了简化部署,并且也不想再增加一个新的服务进程,Presto coordinator 可以运行一个内嵌在coordinator 里面的Discovery 服务。这个内嵌的Discovery 服务和Presto共享HTTP server并且使用同样的端口

6. discovery.uriDiscovery serverURI。由于启用了Presto coordinator内嵌的Discovery 服务,因此这个uri就是Presto coordinatoruri。注意:这个URI一定不能以“/“结尾


  • node.properties

包含针对于每个节点的特定的配置信息。 一个节点就是在一台机器上安装的Presto实例,etc/node.properties配置文件至少包含如下配置信息

1
2
3
node.environment=test
node.id=bigdata_node_worker_hd1
node.data-dir=presto/data
  1. node.environment: 集群名称, 所有在同一个集群中的Presto节点必须拥有相同的集群名称

  2. node.id: 每个Presto节点的唯一标示。每个节点的node.id都必须是唯一的。在Presto进行重启或者升级过程中每个节点的node.id必须保持不变。如果在一个节点上安装多个Presto实例(例如:在同一台机器上安装多个Presto节点),那么每个Presto节点必须拥有唯一的node.id

  3. node.data-dir: 数据存储目录的位置(操作系统上的路径), Presto将会把日期和数据存储在这个目录下

  • jvm.config

包含一系列在启动JVM的时候需要使用的命令行选项。这份配置文件的格式是:一系列的选项,每行配置一个单独的选项。由于这些选项不在shell命令中使用。 因此即使将每个选项通过空格或者其他的分隔符分开,java程序也不会将这些选项分开,而是作为一个命令行选项处理,信息如下:

1
2
3
4
5
6
7
8
9
-server
-Xmx16G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=150M
  • log.properties

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

1
com.facebook.presto=DEBUG

配置日志等级,类似于log4j。四个等级:DEBUG,INFO,WARN,ERROR


Catalog Properties

通过在etc/catalog目录下创建catalog属性文件来完成catalogs的注册。 例如:可以先创建一个etc/catalog/jmx.properties文件,文件中的内容如下,完成在jmxcatalog上挂载一个jmxconnector

1
connector.name=jmx

在etc/catalog目录下创建hive.properties,信息如下:

1
2
3
4
connector.name=hive-hadoop2
hive.metastore.uri=thrift://192.169.168.131:9083
hive.config.resources=/root/apps/hadoop/etc/hadoop/core-site.xml,/root/apps/hadoop/etc/hadoop/hdfs-site.xml
hive.allow-drop-table=true

以上,是单机部署presto, 至此已经完成。


6.集群安装步骤


将hd1中的presto-server-0.100拷贝到hd2,hd3

1
2
scp -r /root/apps/presto-server-0.100 root@hd2:/root/apps/
scp -r root/apps/presto-server-0.100 root@hd3:/root/apps/
  • 修改hd2中的配置文件:

config.properties

1
2
3
4
5
coordinator=false
http-server.http.port=18080
task.max-memory=1GB
discovery-server.enabled=true
discovery.uri=http://192.168.174.131:18080

node.properties

1
2
3
node.environment=test
node.id=bigdata_node_worker_hd2
node.data-dir=presto/data
  • 修改hd3中的配置文件

config.properties

1
2
3
4
5
coordinator=false
http-server.http.port=18080
task.max-memory=1GB
discovery-server.enabled=true
discovery.uri=http://192.168.174.131:18080

node.properties

1
2
3
node.environment=test
node.id=bigdata_node_worker_hd3
node.data-dir=presto/data

到此,presto集群配置完毕。

7.运行presto


hd1,hd2,hd3presto-server-0.100/bin目录下依次启动presto:

1
./launcher start

Presto可以使用如下命令作为一个后台进程启动:

1
bin/launcher start

或者在前台运行可查看具体的日志

1
bin/launcher run

停止服务进程命令

1
bin/laucher stop

查看服务进程命令

1
bin/laucher status

查看进程: ps -aux|grep PrestoServer  或 jps

wKiom1nCMKaBde8RAAAqtPAOuJ8096.png


也可通过浏览器界面查看:http://192.168.174.131:18080

wKiom1nCMMHhMqHuAAA4Pn0l6ps910.png



8.整合hive测试


想要查询连接到hive中查询数据还需要先启动hivemetastore

启动方式:

1
2
3
4
bin/hive --service metastore  #或者后台启动:
bin/hive --service metastore 2>&1 >> /var/log.log &
#后台启动,关闭shell连接依然存在:
nohup bin/hive --service metastore 2>&1 >> /var/log.log &

如果启动失败,查看hive-site.xml中是否有metastore的如下配置,若没有,加上这段后再启动metasotre.

1
2
3
4
< property >
   < name >hive.metastore.uris</ name >
   < value >thrift://192.168.174.131:9083</ value >
  </ property >

然后下载 presto-cli-0.100-executable.jarPresto CLI为用户提供了一个用于查询的可交互终端窗口。CLI是一个 可执行JAR文件这也就意味着你可以像UNIX终端窗口一样来使用CLI https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.100/presto-cli-0.100-executable.jar文件下载后,重名名为 presto , 使用 chmod +x 命令设置可执行权限,执行命令:

下面命令的ip和端口和config.properties中的一致

1
./presto --server 192.168.174.131:18080 --catalog hive --schema default --debug

hive中查一下hive default库中的表, 结果如下图

wKiom1nCMVmh4FhJAACHY6bi1XI690.png

hive中查询hive default库中的表,如图:

wKiom1nCMXOT2neJAABfXxMaj8M522.png

查询user表信息:

wKiom1nCMZHhqQMmAACp-SPU2OI401.png


此时界面上也会有对应的记录:

wKiom1nCMazClnVKAADnqXNir2Y703.png




退出命令:quit或者exit

9.整合mysql测试


hive类似,在hd1etc/目录下新建文件:mysql.properties文件

1
2
3
4
connector.name=mysql
connection-url=jdbc:mysql://192.168.174.131:3306
connection-user=root
connection-password=123456

然后将mysql.properties分贝拷贝到hd2hd3/etc目录下,重新启动PrestoServer服务。

连接测试:

1
./presto --server localhost:18080 --catalog mysql --schema test --debug

wKiom1nCMfChtcinAAA_5znSvQ0940.pngwKiom1nCMgThVUbXAACMx78qtyU550.png

常用写法:

1
2
3
SHOW SCHEMAS FROM mysql;#查询数据库列表
SHOW TABLES FROM mysql.test;#查询指定数据库下的数据表
SELECT * FROM mysql.test.user;查询指定数据表数据

10.整合jdbc测试


代码连接测试,在pom.xml中引入依赖:

1
2
3
4
5
< dependency >
< groupId >com.facebook.presto</ groupId >
< artifactId >presto-jdbc</ artifactId >
< version >0.100</ version >
</ dependency >

main方法测试连接:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.presto.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
  
public class TestPrestoJdbc {
public static void main(String[] args) throws Exception {
Class.forName("com.facebook.presto.jdbc.PrestoDriver");
Connection connection = DriverManager.getConnection(
"jdbc:presto://192.168.174.131:18080/hive/default", "root",
null);
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("show tables");
while (rs.next()) {
System.out.println(rs.getString(1));
}
rs.close();
connection.close();
  
}
}

运行结果:

wKioL1nCMi7SvTNGAAAr8b3HoxI347.png

对比命令行:

wKiom1nCMnayfAcBAABckOfRpoc878.png

以上就是对presto的集群和搭建的使用,你学会了么j_0020.gif




本文转自 兴趣e族 51CTO博客,原文链接:http://blog.51cto.com/simplelife/1967220

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
39 4
|
2月前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
508 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
84 3
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
60 2
|
1月前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
105 2
|
24天前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
145 0
|
2月前
|
SQL Oracle 关系型数据库
安装最新 MySQL 8.0 数据库(教学用)
安装最新 MySQL 8.0 数据库(教学用)
136 4
|
2月前
|
Java 关系型数据库 MySQL
mysql5.7 jdbc驱动
遵循上述步骤,即可在Java项目中高效地集成MySQL 5.7 JDBC驱动,实现数据库的访问与管理。
312 1
|
2月前
|
Ubuntu 关系型数据库 MySQL
Linux系统MySQL安装
【10月更文挑战第19天】本文介绍了在 Linux 系统上安装 MySQL 的步骤,包括安装前准备、安装 MySQL、启动 MySQL 服务、配置 MySQL 以及验证安装。适用于 Ubuntu/Debian 和 CentOS/Fedora 系统,提供了详细的命令示例。
244 1

热门文章

最新文章