Snova基础篇(一):生产环境搭建及运行测试数据

本节主要从snova基础环境构建入手,为snova用户提供直观操作感受。

目录:

  1. 腾讯云平台snova集群创建
  2. 控制台使用指南
  3. snova数据库访问方式
  4. 内表-外表创建,cos对象存储数据交互

基本概念:

名词

释义

集群

集群是Snova 的基本使用单位,一个集群通常由 2 个 master 节点和多个计算节点组成。 每个用户根据业务需求可在多地建立多个集群。

计算节点

集群的基本存储和计算单元,每个集群计算节点个数不少于 2 个,随着计算节点增加,可线性提升集群容量和性能。

节点规格

计算节点的资源配置,包括CPU 、内存、磁盘等 。不同 节点规格性能 和存储量 不同。

节点数量

每个集群的计算节点数量, 2 个起售,不同规格 的 节点对应不同 的 节点数量限制 。

MPP

Massively Parallel Processing,一种分布式 Shared Nothing 计算架构,通过多个无共享的节点同时并行计算以提升性能。

snova集群购买及部署流程:

1.腾讯云平台snova集群创建

登录腾讯云平台进入snova集群购买页面:

地址: https://buy.cloud.tencent.com/snova#/?region=ap-guangzhou

snova购买页面(一)

注意点:

  • 在创建集群之前,需要明确数据量,数据所在地域,以及访问集群的网络环境。
  • 网络选择:需要手动创建vpc私有网络并新建子网环境。
  • vpc操作可参考如下文档:https://cloud.tencent.com/product/vpc
  • 目前版本仅支持1.0.0
snova购买页面(一)

注意点:

  • Snova支持如下两种节点规格:规格选择需综合考虑计算能力和存储需求

计算密集型

规格名称以 nc 开始,特点是可以提供更好的 I/O 能力,带来更高的性能。

存储密集型

规格名称以 ns 开始,特点是可以提供更大、更实惠的存储空间,满足更高的存储需

  • Snova支持基于COS的外部表扩展,并可通过 gzip 实现外部存储上的数据压缩,不需要参与实时计算的数据可以存放到外部存储中以进一步降低存储成本。

节点规格

节点规格CPU核数

内存(G)

存储类型

存储空间 TB

状态

nc.large

4

16

SSD

0.16

已上线

  • 随后进入付款页面,完成付款即可。集群创建时间大概10分钟左右。集群部署完全自动化,可在控制台查看部署进度

2. 控制台使用指南

控制台页面

控制台包括:

  • 基础配置页面:包括集群的常用基本信息,名称,ID,节点类型,计费,创建时间,内外网地址及JDBC URL。
  • 性能监控页面:CPU,内存,读写IOPS,吞吐量,延时,连接数等。
  • 实时查询
  • 历史查询
  • 事件监控

3. 数据库连接及内外表创建

snova连接的三种方式:

  • (一)VPC内网下相同子网环境的CVM云服务器安装psql客户端访问Snova:跳板机方式
代码语言:javascript
复制
yum  install postgresql.x86_64  -y

执行登录命令:

代码语言:javascript
复制
psql -hxxxx -p 5436 -d postgres -Utestsnova

-h: snova内网地址 (控制台页面获取)

-p: 端口

-d: 数据库名称

-U: 数据库用户名

  • (二)控制台页面申请snova公网IP

通常我们使用pgAdmin作为客户端工具,它支持的操作系统包括Linux,Windows,Mac OS X。

windows环境下,下载安装包,安装完成后,输入snova公网ip和端口进行连接

客户端具体操作方法可参考如下文档:https://www.jianshu.com/p/e7fe45a10cee

  • (三)JDBC方式连接

4.snova内外表创建,腾讯云对象存储-cos数据交互,简单数据分析

对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。

snova与cos数据交互需要用到cos_ext扩展插件。cos_ext是访问cos文件的外部数据访问插件, 通过DDL定义外部表, 可以按照普通的数据表执行DML,实现对cos数据的操作。具备如下特性:

  • 只能读取本地域的cos数据,比如广州四区的集群只能读取广州地域的cos数据;
  • 只能读取用户自己的cos数据(这里用户是指创建集群的用户);
  • 只写外表只能用于INSERT语句,不能用于UPDATE/DELETE语句,不能用于SELECT查询语句;

具体实例如下:

  • (一)导入cos数据
  • 定义cos扩展及表
代码语言:javascript
复制
CREATE EXTENSION IF NOT EXISTS cos_ext; 

定义cos本地表和只读外表:

代码语言:javascript
复制
CREATE TABLE cos_local_tbl (c1 int, c2 text, c3 int) DISTRIBUTED BY (c1);
代码语言:javascript
复制
CREATE READABLE EXTERNAL TABLE cos_tbl (c1 int, c2 text, c3 int) LOCATION('cos://cos.ap-guangzhou.myqcloud.com/simple-bucket/from_cos/ secretKey=xxx secretId=xxx')
FORMAT 'csv';
//cos外表: 指定读取广州simple-bucket下的所有文件。

要点:

LOCATION:cos地址,通过腾讯云cos管理页面获取(存储桶域名+文件夹地址)

secretKey=xxx secretId=xxx' //通过腾讯云API密钥管理页面获取 https://console.cloud.tencent.com/cam/capi

接下来,构造测试数据并上传到cos文件夹下:

  • 创建测试数据文件test.csv,内容如下:

1,simple line 1,1

2,simple line 1,1

3,simple line 1,1

4,simple line 1,1

5,simple line 1,1

6,simple line 2,1

7,simple line 2,1

8,simple line 2,1

9,simple line 2,1

  • 上传到cos目录
  • 导入cos数据,对比数据结果
代码语言:javascript
复制
INSERT INTO cos_local_tbl SELECT * FROM cos_tbl;
代码语言:javascript
复制
SELECT count(1) FROM cos_local_tbl;
SELECT count(1) FROM cos_tbl;
  • (二)数据导出到cos

操作类似导入,具体实现如下:

代码语言:javascript
复制
CREATE EXTENSION IF NOT EXISTS cos_ext;  //定义cos扩展
代码语言:javascript
复制
CREATE TABLE cos_local_tbl (c1 int, c2 text, c3 int) DISTRIBUTED BY (c1); //定义本地表
代码语言:javascript
复制
CREATE WRITABLE EXTERNAL TABLE cos_tbl_wr (c1 int, c2 text, c3 int) LOCATION('cos://cos.ap-guangzhou.myqcloud.com/simple-bucket/to-cos/ secretKey=xxx secretId=xxx')
FORMAT 'csv';    
//定义只写外表
  • 同样构造测试数据,此处通过psql客户端插入数据:
代码语言:javascript
复制
insert into cos_local_tbl values
(1, 'simple line 1' , 1),
(2, 'simple line 2', 2), 
(3, 'simple line 3', 3) ,
(4, 'simple line 4', 4) , 
(5, 'simple line 5', 5) ,
(6, 'simple line 6', 6) , 
(7, 'simple line 7', 7) , 
(8, 'simple line 8', 8) , 
(9, 'simple line 9', 9);
  • 导出数据到cos
代码语言:javascript
复制
INSERT INTO cos_tbl_wr SELECT * FROM cos_local_tbl;

可通过cos页面文件夹下查看导出文件。

  • (三)简单的数据分析

简单思路:上传数据文件到cos目录下,定义cos扩展和只读外部表访问cos数据进行简单的数据分析。

将文件上传到 simple-bucket , for-dml 目录下,内容如下:

1,simple line 1,1

2,simple line 1,1

3,simple line 1,1

4,simple line 1,1

5,simple line 1,1

6,simple line 2,1

7,simple line 2,1

8,simple line 2,1

9,simple line 2,1

代码语言:javascript
复制
CREATE EXTENSION IF NOT EXISTS cos_ext;
代码语言:javascript
复制
CREATE READABLE EXTERNAL TABLE cos_tbl_dml (c1 int, c2 text, c3 int)
LOCATION('cos://cos.ap-guangzhou.myqcloud.com/simple-bucket/for-dml/ secretKey=xxx secretId=xxx')FORMAT ‘csv’;
代码语言:javascript
复制
SELECT c2, sum(c1) FROM cos_tbl GROUP BY c2; //求和分析

本节内容到此,未完待续。