专栏首页Snova最佳实践系列Snova基础篇(一):生产环境搭建及运行测试数据
原创

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:跳板机方式
yum  install postgresql.x86_64  -y

执行登录命令:

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扩展及表
CREATE EXTENSION IF NOT EXISTS cos_ext; 

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

CREATE TABLE cos_local_tbl (c1 int, c2 text, c3 int) DISTRIBUTED BY (c1);
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数据,对比数据结果
INSERT INTO cos_local_tbl SELECT * FROM cos_tbl;
SELECT count(1) FROM cos_local_tbl;
SELECT count(1) FROM cos_tbl;
  • (二)数据导出到cos

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

CREATE EXTENSION IF NOT EXISTS cos_ext;  //定义cos扩展
CREATE TABLE cos_local_tbl (c1 int, c2 text, c3 int) DISTRIBUTED BY (c1); //定义本地表
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客户端插入数据:
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
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

CREATE EXTENSION IF NOT EXISTS cos_ext;
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’;
SELECT c2, sum(c1) FROM cos_tbl GROUP BY c2; //求和分析

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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

相关文章

  • Snova运维篇(八):GP数据库访问管理及认证

    Master实例的pg_hba.conf文件控制对Greenplum数据库系统的客户端访问及认证。

    snova-最佳实践
  • snova运维篇(四):GP集群扩容

    扩容开始后,降低大规模操作的进程,重新分布表,移除扩展方案,运行健康检查,查看统计信息。

    snova-最佳实践
  • Snova运维篇(二):GP集群配置和高可用特性

    Greenplum数据的配置文件postgresql.conf位于数据库实例的数据目录之下。

    snova-最佳实践
  • 在不是Thread类的子类中,如何获取线程对象的名称呢?

    我想要获取main方法所在的线程对象的名称,该怎么办呢?   遇到这种情况,Thread类就提供了一个很好玩的方法:     public static Thr...

    黑泽君
  • 使用innobackup 2.4遇到的问题

    一 前言 Percona公司发布 innobackup 2.4 版本已经很久了,增加了新的特性比如支持非Innodb表备份,指定 --safe-slave-...

    用户1278550
  • Java异步编程——深入源码分析FutureTask

    之前通过源码详细分析了ThreadPoolExecutor《你真的懂ThreadPoolExecutor线程池技术吗?看了源码你会有全新的认识》。通过创建一个T...

    Zack说码
  • 用Electron创建跨平台应用(第三弹)开启系统通知

    需求: 我们需要创建一个动漫更新的系统通知, 当用户点击系统的通知, 就会打开相应的界面播放动漫, 这是一个Electron功能演示的文章, 所以并不涉及如何通...

    zhaoolee
  • Android Studio中获取versionCode一直是1

    我们在做应用更新功能时肯定回去获取已安装的应用的版本号,那么有些人就会遇到获取的版本号一直是1这个问题了 首先贴一下获取版本号的代码块:

    longzeqiu
  • CountDownLatch熟悉与使用场景

    CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。

    用户6182664
  • VR开发--Cardboard制作VR播放器

    首先,今天有了一个想法。所以我决定制作一个VR播放器。纯手工打造,24K金不敢说,100%真心。

    雷潮

扫码关注云+社区

领取腾讯云代金券