暂无图片
暂无图片
6
暂无图片
暂无图片
暂无图片

初识VERTICA Eon模式

原创 背包客 2021-12-16
3177

前言

    随着商业智能的出现,产生了用于数据分析处理的数据库 (Analytic Database),其主要针对某些课题数据进行分析,用于支撑业务发展和管理决策。这类场景的特点是数据量大、数据密集、计算密集、算法复杂。但随着数据量的增涨、业务复杂性的增加,早期的数据仓库支撑能力和数据分析能力变得十分有限,便出现了MPP架构的数据分析型数据库。

EON模式

1、Enterprise模式

    VERTICA作为基于MPP架构产生的分布式分析型数据库,可以通过任务并行执行、分布式存储计算、横向扩展、shared Nothing架构等技术,满足海量数据的分析和复杂结构化查询的需求。
    Enterprise(企业)模式的VERTIVCA采用标准的shared-nothing架构,采用高效的网络数据交换算法,使得通过廉价的设备也能搭建出高性能的企业级分析型数据库集群。其最大的特点是存储容量大、计算速度快、任务并行执行、列式压缩存储

2、EON模式

    随着大数据时代的到来,一方面数据量呈爆炸式的增长,另一方面企业的经营决策下沉,更多的中、基层管理者通过大数据技术,参与到企业的经营管理中来。为了更好满足市场的迫切需求,新一代基于计算存储分离架构的数据库管理技术应运而生。

新建 BMP 图像  副本.bmp

    EON模式的VERTICA基于X86服务器+新一代MPP架构,在继承了传统MPP高性能并行计算优势的同时,新一代MPP数据库引入了成熟的分布式存储技术,采用了存储和计算分离的架构,使得集群的扩展性与灵活性获得了巨大提升。借助计算存储分离架构,有效解决了计算存储绑定架构在大规模数据量情况下,集群弹性扩展受到限制(基于哈希数据重分布需要消耗更大成本)的问题。
    1. 更高的吞吐能力:在存储计算分离模式下,增加节点即可提吞吐能力。
    2. 更快的故障恢复速度:当某节点需要故障恢复时,只需要从公共存储区进行重新订阅而不是恢复,无需REPLAY DELETE,恢复速度可由小时级降至分钟级。
    3. 更灵活的弹性扩展:添加节点时只需要从公共存储中获取数据即可,不需要进行数据重分布操作,可以更快的对集群进行扩容或缩容,达到弹性伸缩的目标。
    4. 工作负载隔离:不同的子集群响应不同任务的请求,从而优化查询工作负载。
    5. 快捷的数据共享:所有数据存储的公共存储中,由一个数据库进行管理,不同的子集群或应用需要访问时,只需要进行相应的权限分配即可。

3、总结

    大数据不仅仅对数据处理和分析查询的性能带来挑战,对故障恢复时效性、集群弹性伸缩能力、资源重利用的要求也越来越高。传统MPP架构数据库扩展性能不足,集群架构不易调整,因此吞吐量不能得到快速提升,尤其不擅长高并发小数据量查询,造成了传统MPP数据库不敢开放给更多的应用,不敢承担to C业务。
    而采用存储和计算分离架构的EON模式VERTICA,使得集群的扩展性与灵活性获得了巨大提升,集群规模能够轻松、快速的伸缩。同时,由于存储与计算分离,使得存储资源和计算资源可以根据需求,进行更灵活的划配,充分提高资源利用率,在相同集群规模下,其并发能力、任务吞吐量也有更大的提升。

4、展望

    对于所有MPP解决方案面临的“木桶效应”和并发限制问题。相信未来将推出更厉害的解决方案,譬如MPP+BATCH,慢的节点会分配到更少的任务——“MapReduce的推测执行机制”。

实战:基于MinIO的EON模式集群部署

1、背景

  • VERTICA EON模式采用计算和存储资源分离架构,简化了对可变工作负载的管理,可以灵活地将特定计算资源应用于不同的业务场景,为大数据场景下的市场需求提供了新的解决方案。目前EON模式支持的部署选项有:Amazon Webservices S3、Google cloud、Apache Hadoop HDFS、MinIO、Pure Storage。加上VERTICA许可证不区分部署选项,因此VERTICA用户可以根据需求不断地调整部署策略。

By Vertica Big Data Conference 2020
▲图片来自Vertica Big Data Conference 2020

  • MinIO是高性能基于Apache License v2.0开源协议的对象存储系统,兼容Amazon S3接口,主要用于海量数据存储、人工智能、大数据分析,单个对象最大可达5TB。

2、环境规划

  EON模式下的VERTICA使用一个公共存储(communal storage)用于存放data和catalog;同时各节点自行维护一个名为Depot的本地缓存用于存放最近访问过的shards数据(可关闭),以便更快地读取Query所需数据。

Vertica in Eon Mode (Depot)

  本实验使用docker模拟出4台CentOS主机,搭建基于MinIO作为共享存储的EON模式VERTICA社区版集群

IP Add 主机名 说明
192.xxx.xxx.10 docker 实验宿主机
172.xxx.xxx.101 vt01 VERTICA节点
172.xxx.xxx.102 vt02 VERTICA节点
172.xxx.xxx.103 vt03 VERTICA节点
172.xxx.xxx.15 minio 单节点minio集群

3、环境准备

3.1、配置docker网络

  为使用固定IP和便于宿主机之外的设备可以访问,自定义docker网络:

[root@docker ~]# docker vnet create --subnet=172.xxx.xxx.0/24 --gateway 172.xxx.xxx.2 vnet dfd1b4c217a928f27c909cd18e700e67e3290d163c6f83d6da14c1fe64697314 [root@docker ~]# [root@docker ~]# docker network ls NETWORK ID NAME DRIVER SCOPE b7c35ecec391 bridge bridge local 02690e842bfd host host local 684add5528e3 none null local dfd1b4c217a9 vnet bridge local [root@docker ~]#

说明:Docker在启动时会开启一个虚拟网桥设备docker0,默认地址为172.17.0.1/16,容器启动后都会被桥接到docker0上并自动分配到一个ip地址。

3.2、配置minio

  1. 拉取minio镜像

[root@docker ~]docker search minio [root@docker ~]docker pull minio/minio

  2. 启动minio

[root@docker ~]# mkdir -p /data/minio # 创建minio目录 [root@docker ~]# docker run -itd --name minio --restart=always \ --network vnet --ip 172.xxx.xxx.15 \ -e "MINIO_ACCESS_KEY=minio" \ -e "MINIO_SECRET_KEY=minio123456" \ -v /data/minio:/data \ -v /data/minio:/root/.minio \ minio/minio server /data [root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9f7bc1649168 minio/minio "/usr/bin/docker-ent…" 2 months ago Up 3 hours 9000/tcp minio

说明:至此单节点minio已部署完成。Access和Secret密钥分别为minio和minio123456。

  3. 访问minio

image.png

说明:如果涉及防火墙,请为minio开放9000端口。

  4. 创建目录
  在minio上创建VERTICA所需的共享存储目录,可以使用s3命令或维护界面。

[root@docker ~]# aws s3 mb --endpoint-url=http://172.xxx.xxx.15:9000 s3://vtbucket make_bucket: vtbucket [root@docker ~]# aws --endpoint-url http://172.xxx.xxx.15:9000 s3 ls |grep vtbucket 2021-10-16 08:17:30 vtbucket

3.3、创建VERTICA镜像

说明:最新VERTICA CE版本有一个正式的Docker镜像,带有预安装的VMart测试数据库。在此选择自己创建(便于部署集群模式)。

  1. 使用Dockerfile定制镜像
image.png
  2. 构建镜像imagebuild.sh
image.png

[root@docker build_dockerImage]# sh imagebuild.sh Using default tag: latest ...略... Successfully built 7bd143cc1844 Successfully tagged vertica11.0.1-2:latest Config vertica11.0.1-2:latest .... Commit Image vertica11.0.1-2:latest .... [root@docker build_dockerImage]#

说明:至此VERTICA镜像已构建完成,相关配置已满足VERTICA数据库创建要求。

3.4、启动VERTICA节点

image.png

4、创建数据库

说明:后续步骤可参照官方手册Installing Eon Mode On-Premises with Communal Storage on MinIO章节

4.1、安装VERTICA

  进入VERTICA节点进行install_vertica:

[root@vt01 ~]# /opt/vertica/sbin/install_vertica --license CE --accept-eula \ --hosts vt01,vt02,vt03 \ --dba-user-password-disabled \ --failure-threshold NONE \ --point-to-point --ignore-aws-instance-type

4.2、创建数据库

  在创建Eon模式本地数据库之前,必须创建一个授权文件,admintools将使用该文件向MinIO存储群集进行身份验证。

# auth_params.conf awsauth = MinIO_Access_Key:MinIO_Secret_Key awsendpoint = MinIOIp:MinIOPort # create_db [dbadmin@vt01 ~]$ admintools -t create_db -x auth_params.conf \ --communal-storage-location=s3://vtbucket \ --depot-path=/data --shard-count=3 \ -D /data \ -c /data \ -s vt01,vt02,vt03 -d eon4minio -p 'vertica'

image.png

5、总结

  最新VERTICA CE版本有一个正式的Docker镜像,带有预安装的VMart测试数据库,开箱即用,能够满足大多数测试场景。本实验通过自己生成docker镜像,部署基于minio的EON模式集群,用于解决官方镜像无法满足的实验场景需求。

最后修改时间:2021-12-22 11:08:44
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论