连接器

最近更新时间:2019-08-05 18:00:40

Presto 是由Facebook 开发的一个分布式 SQL 查询引擎,它被设计为用来专门进行高速、实时的数据分析,适用于交互式分析查询,数据量支持 GB 到 PB 字节。它支持标准的 ANSI SQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数(window functions)。它采用 Java 实现。它的数据源包括 Hive、HBase、关系数据库,甚至专有数据存储。其架构图如下所示:

Presto 是一个运行在多台服务器上的分布式系统,采用了主从(Master-Slave)架构,包括一个主节点 Coordinator 和多个从节点 Worker。客户端 Presto CLI 负责提交查询到 Coordinator 节点;Coordinator 节点负责解析 SQL 语句、生成查询执行计划、管理 Worker 节点等;Worker 节点负责实际执行查询任务。

EMR 中 Presto 组件预置了 Hive、Mysql 和 Kafka 等连接器,本节将以 Hive 连接器为例说明 Presto 读取 Hive 的表信息进行查询的使用,EMR 集群机器配置了 presto-client 的相关环境变量,可直接切换 Hadoop 用户并使用 Presto 客户端工具。

1. 开发准备

  • 确认您已经开通了腾讯云,并且创建了一个 EMR 集群。在创建 EMR 集群的时候需要在软件配置界面选择 Presto 组件。
  • Presto 等相关软件安装在路径 EMR 云服务器的/usr/local/service/路径下。

2. 使用连接器操作 Hive

首先需要登录 EMR 集群中的任意机器,最好是登录到 Master 节点。登录 EMR 的方式请参考 登录 Linux 实例。这里我们可以选择使用 WebShell 登录。单击对应云服务器右侧的登录,进入登录界面,用户名默认为 root,密码为创建 EMR 时用户自己输入的密码。输入正确后,即可进入命令行界面。

在 EMR 命令行先使用以下指令切换到 Hadoop 用户,并进入 Presto 文件夹:

[root@172 ~]# su hadoop
[hadoop@172 ~]# cd /usr/local/service/presto

etc/config.properties配置文件中查看 uri 的值:

[hadoop@172 presto]$ vim etc/config.properties
http-server.http.port=$port
discovery.uri=http://$host:$port

其中 $host 为您的 host 地址;$port 为您的端口号。然后切换到 presto-client 文件夹中,并且使用 Presto 连接 Hive:

[hadoop@172 presto]# cd /usr/local/service/presto-client
[hadoop@172 presto-client]$ ./presto --server $host:$port --catalog hive --schema default

其中 --catalog 参数表示要操纵的数据库类型,--schema 表示数据库名,这里进入的是默认的 default 数据库。更多的参数信息,可以通过命令presto –h来查看,或者查看 官方文档
成功执行之后就可以进入 Presto 的界面,并且直接进入了指定的数据库。可以使用 Hive-SQL 来查看 Hive 数据库中的表:

presto:default> show tables;
     Table     
---------------
hive_from_cos
test  
(2 rows)

Query 20180702_140619_00006_c4qzg, FINISHED, 2 nodes
Splits: 2 total, 2 done (100.00%)
0:00 [3 rows, 86B] [17 rows/s, 508B/s]

其中的表 hive_from_cos 是在 Hive 开发指南中建立的表。
更多 Presto 操作请查看 官方文档