
正文
关于postgresql数仓的信息
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
华为数据库再下一城
华为在 IT 的底层架构,逐步搭建起自己的基础架构, 建立华为生态。华为对数据库的开发经历了长达 15年左右的时间。华为的数据库产品系列命名为GaussDB——高斯数据库,基于 PostgreSQL9.2 开发。
华为数据库产品类型,包括了事务型数据库OLTP、分析型数据库OLAP,同时还研发出混合负载数据库HTAP 产品。Oracle 的 OLTP数据库产品比较难替代。华为的 OLTP 数据库是通过与工商银行、招商银行等大公司合作,来不断完善的。
现在除了甲骨文和微软,亚马逊的 Aurora 数据库、阿里的飞天数据库、华为的 Gauss 数据库都是开源的。
2022年4月,中国邮政储蓄银行新一代个人业务分布式核心系统上线。该系统基于鲲鹏硬件底座、openGauss开源数据库与GaussDB分布式云数据库共同打造的全新个人业务核心系统。
华为鲲鹏处理器是基于ARM架构,华为全自研的一款处理器,它包括五个方面:通用计算、存储、传输、管理和AI计算。华为的关系型数据库 openGauss 是一款极其受欢迎的开源数据库,openGauss内核深度融合华为在数据库领域多年的经验,完美结合企业级场景需求。
华为GaussDB是一个企业级分布式数据库,将AI能力植入到数据库内核的架构和算法中,为用户提供更高性能、更高可用、更多算力支持的分布式数据库。GaussDB基于统一架构,支持关系型与非关系型数据库引擎,满足政企全场景的数据智能管理需求。
2022年4月,光大银行基于华为云GaussDB(DWS)建设的数仓平台,成为国内首家使用GaussDB产品实现数据仓库平台大集中的银行。
这次数仓平台迁移量达5000多亿条数据,自2021年9月开始,耗时六个月,3个月完成代码转译核对,3个月完成自动化比对的技术方案,。迁移完成后,华为云GaussDB(DWS)承载全行超过3.5万个批量作业,整体批量时间缩短了两个小时。
2020年,光大银行和华为软件技术有限公司签署合作备忘录,推动金融 科技 领域服务的数字化转型。2021年,光大银行入驻华为服务号,成为首家入驻华为服务号提供综合性金融服务的全国性股份制商业银行。
相关问答
Q1: 新一代HTAP数据库崛起,MySQL生态的最佳归宿?
俗话说,天下大势,合久必分、分久必合。
数据库领域同样如此。过去五十余年,数据库经历OLTP和OLAP两种需求漫长的融合-分离-再融合的过程。究其原因,数据库的发展始终与用户场景需求变迁紧密相关。如今,随着云计算和大数据的兴起,业务场景正在经历前所未有的变革,数据库领域也掀起了一股HTAP浪潮。
Gartner在多次报告中强调,HTAP是数据库领域最重要的发展趋势之一,也是用户数字化转型中重要的数据平台。业界甚至认为,HTAP的兴起代表着数据库大融合时代的开启。
那么,为什么数据库大厂和云服务巨头们均纷纷押宝HTAP?开源+多云为何是HTAP普及的助推剂?面对新一代HTAP数据的崛起,多年积累形成的MySQL生态终于找到最佳归宿?
放在几年前,HTAP可能还会被认为是数据库领域的小众产品,是否成气候还有待观察。
而随着数据资源、数据消费习惯和数据驱动型场景发生巨大变化,用户需求与传统数据库之间的供需矛盾日渐突出,使得HTAP这种具备“同时支持OLTP和OLAP、创新计算存储框架、去ETL”等特征的新时代数据库成为不可阻挡的趋势。
如今,几乎所有数据库大厂和云服务巨头都在布局HTAP。例如,OceanBase去年推出的 3.0版本中就正式宣布向HTAP数据库进军;今年5月,Google Cloud发布HTAP云端数据库AlloyDB,为PG用户提供了HTAP数据库服务;再加上Oracle MySQL Heatwave,甚至连SnowFlake也发布Unistore来“蹭”HTAP的热点。
如果细数近一年以来的HTAP新品,会发现几乎全部都建立在云端之上。新一代HTAP+云正在成为数据库市场重要的潮流。例如,PingCAP近日发布的TiDB 6.0,也是与云端紧密联系的新一代HTAP数据库。
事实上,PingCAP是HTAP数据库领域非常重要的一个引领者。早在TiDB 3.0起,PingCAP就正式转向HTAP,从OLTP主引擎+OLAP辅助能力,到OLTP引擎+外接分析引擎,再到OLTP引擎+融合分析引擎,PingCAP在HTAP领域稳打稳扎,一个版本上一个台阶。
如今,随着TiDB 6.0的发布,针对HTAP进行了更多成熟性改进,TPC-C 性能也较 5.0 版本提升达到 76.32%,TiDB 6.0还增强了多个企业级特性,以更好适合云时代用户对于HTAP数据库的需求。
固然,有人质疑当前HTAP是新瓶装旧酒,并无太多新意。但业界普遍形成共识:新一代HTAP与过去完全不同,开源+云孕育而出,很多都有AI加持,而且是为数据敏捷而生,拥有过去前所未有的创新活力与迭代速度,并逐渐形成数据库技术变革的新潮流。
PingCAP CTO 黄东旭也直言:“TiDB近年来的快速进化与迭代,得益于开源和云的助力。”
HTAP之所受到用户青睐,某种程度是因为用户对于数据敏捷性的极度渴求。
“在数字化时代,客户最为在乎的是如何快速走向市场。这需要数据敏捷性,而HTAP恰恰是数据敏捷的核心能力。”黄东旭如是说。
最近几年,“海量、实时、在线”的需求越来越广泛,大量采用 MySQL 和 PostgreSQL 开源数据库的新一代企业需要提升对于热数据的实时在线分析能力,这类需求遍布几乎所有的互联网企业以及从事线上业务的数字化转型企业。对于新鲜数据的实时分析能力直接决定了这些业务的生死存亡,传统的 OLTP+OLAP+ETL 的数据架构已经严重阻碍了消费者体验,这种诉求催生了 HTAP 的技术变革。
而真正帮助HTAP与用户需求完成对接的则是开源+云。众所周知,开源近年来在数据库领域的流行和影响力与日俱增,DB-Engines数据显示,全球383款数据库中开源数据库占据51.7%,六款开源数据库进入到前十,开源正在成为像HTAP这种新时代数据库的创新源泉。
以PingCAP的TiDB为例,其产品研发体系建立在开源体系和开源社区的基础上,实现了一年一个大版本、一个月一个小版本的迭代速度。黄东旭透露道:“开源是TiDB的第一个增长引擎,通过开源体系,开发者、贡献者、布道者和用户能够很好串联起来,形成飞轮效应,让产品能够走向加速迭代和创新的正向循环。”
据悉,TiDB每年会有超过 40% 的代码更新,而这些代码有很大一部分由外部贡献者所共享。TiDB开源项目一直在全球和中国开源项目活跃度中名列前茅。
如果说开源改变了HTAP产品的开发模式和迭代速度,那么云则能够为HTAP产品提供用户最为直接的需求反馈。众所周知,云数据库一改以往传统数据库部署、运维、扩展等难题,以云服务的方式让数据库使用更加简单;更加关键的是,随着云计算的普及,云上用户群体持续增加,来自云上用户群体的需求反馈无时无刻都在发生,对于数据库产品的进化与迭代至关重要。
“真正的产品迭代是如何缩短用户问题/需求的反馈时间。云无疑为数据库等基础软件提供了这样的价值,让产品可以更好地迭代。”黄东旭如是说。以TiDB为例,自去年五月全托管的数据库即服务(DBaaS)产品 TiDB Cloud 公测版发布以来,已经陆续登陆亚马逊云 科技 、谷歌云等全球知名云服务商的Marketplace,并在今年5月份正式全球商用;今年 6 月与阿里云合作上线阿里云云市场,成为为数不多的跨全球三朵云的数据库服务。
在众多数据库产品之中,MySQL凭借着开源、免费、适合互联网场景等优势,常年位居全球最受欢迎数据库的前三。根据Slintel网站的统计数据,在全球关系型数据库市场中,MySQL市场份额最高,达到43.04%。
过去二十年里,开源MySQL数据库对于各行各业影响至深,捕获了来自互联网、金融、零售、交通等多个行业用户的心,堪称“万人迷”。例如,在中国就有超过9成的金融机构都应用了MySQL数据库。
但任何数据库潮流都是“需求变化+技术变革+架构创新”融合的产物,MySQL是如此,HTAP亦不例外。如今,场景的数据规模、业务并发量、处理速度要求跟以往相比早已不是一个数量级。此时,MySQL数据库的局限性愈发突出,扩展性很难满足用户需求,想继续获得增长的企业不得不使用分库分表方案,但这又会造成数据架构的复杂性。
新一代HTAP数据库无需分库分表,且具备实时海量规模的OLTP和实时数据分析能力,还拥有极为出色的扩展性,与很多业务场景的海量交易实时数据展现、平稳运行的需求高度契合,HTAP凭借技术架构优势崛起已成必然。
“用户需求侧最大的变化就是很多用户需要借助热数据实现运营级别的实时分析,获得实时洞察以支持决策,这极大推动了新一代HTAP数据库的需求。”PingCAP副总裁刘松补充道。
虽然MySQL已经增加列存引擎Heatwave来获得HTAP能力,但主要解决规模化查询的问题,系统本身架构并未产生革命性变化,扩展能力、OLTP吞吐量依然有着很大局限。“智能新能源 汽车 跟传统燃油车在外表看几乎没区别。数据库也类似,像TiDB这种新一代HTAP数据库,从架构设计、应对场景和使用体验等角度,都与传统数据库有着极大的区别。”刘松形象比喻道。
事实上,与过去SAP HANA这种小众、昂贵的HTAP不同,新一代HTAP拥有极强的兼容性,像Google Cloud、PingCAP这些数据库厂商都借助新一代HTAP架构为采用 MySQL或者PG开源数据库的企业拓展 OLTP和OLAP的能力范围。
例如,Google Cloud发布的HTAP云端数据库AlloyDB,为单机版PG生态用户提供了最好选择,TiDB则成为MySQL生态的最佳归宿。PingCAP大量用户中有很多TiDB与MySQL混合部署的成功案例;得益于 TiDB 的开放性,TiDB 也可通过和其他数据服务产品“混搭”形成新的数据服务解决方案, 如通过同样是开源的大数据计算引擎 Flink 混搭形成实时数仓解决方案,扩展 HTAP 数据库的能力边界。
黄东旭则直言,HTAP数据库除了产品、技术之外,尤为需要关心用户体验,“HTAP应该让用户觉得好用,屏蔽掉数据库的复杂性。”据悉,PingCAP是2022 Gartner Peer Insights“Voice of the Customer” 云数据库领域唯一入选的中国数据库公司,客户总体评分达到 4.7 分(满分 5 分),在所有入选企业中位列第一。在参与Gartner Peer Insights评分的PingCAP用户中,像互联网、金融等重点行业用户均高度认可HTAP现代数据库理念。
总体来看,今年是HTAP的大年,各大厂商纷纷在市场中上新。随着新一代HTAP数据库产品的增多,整个市场对于HTAP数据库理念和产品的接受与采用将会提速。而随着新一代HTAP数据库持续完善,让广大MySQL生态用户群真正看到了大数据时代一条绝佳的迁移路径。
Q2: 大数据工程师进行数据平台建设 有哪些方案
【导语】数据平台其实在企业发展的进程中都是存在的,在进入到数据爆发式增加的大数据时代,传统的企业级数据库,在数据管理应用上,并不能完全满意各项需求。就企业自身而言,需求更加契合需求的数据平台建设方案,那么大数据工程师进行数据平台建设,有哪些方案呢?下面就来细细了解一下吧。
1、敏捷型数据集市
数据集市也是常见的一种方案,底层的数据产品与分析层绑定,使得应用层可以直接对底层数据产品中的数据进行拖拽式分析。数据集市,主要的优势在于对业务数据进行简单的、快速的整合,实现敏捷建模,并且大幅提升数据的处理速度。
2、常规数据仓库
数据仓库的重点,是对数据进行整合,同时也是对业务逻辑的一个梳理。数据仓库虽然也可以打包成SAAS那种Cube一类的东西来提升数据的读取性能,但是数据仓库的作用,更多的是为了解决公司的业务问题。
3、Hadoop分布式系统架构
当然,大规模分布式系统架构,Hadoop依然站在不可代替的关键位置上。雅虎、Facebook、百度、淘宝等国内外大企,最初都是基于Hadoop来展开的。
Hadoop生态体系庞大,企业基于Hadoop所能实现的需求,也不仅限于数据分析,也包括机器学习、数据挖掘、实时系统等。企业搭建大数据系统平台,Hadoop的大数据处理能力、高可靠性、高容错性、开源性以及低成本,都使得它成为首选。
4、MPP(大规模并行处理)架构
进入大数据时代以来,传统的主机计算模式已经不能满足需求了,分布式存储和分布式计算才是王道。大家所熟悉的Hadoop
MapReduce框架以及MPP计算框架,都是基于这一背景产生。
MPP架构的代表产品,就是Greenplum。Greenplum的数据库引擎是基于Postgresql的,并且通过Interconnnect神器实现了对同一个集群中多个Postgresql实例的高效协同和并行计算。
关于大数据工程师进行数据平台建设方案的有关内容,就给大家介绍到这里了,中国社会发展至今,大数据的应用正在逐渐普及,所以未来前景不可估量,希望想从事此行业的人员能够合理选择。
Q3: 5分钟搞定MySQL/PostgreSQL/Oracle到StarRocks数据迁移同步-CloudCanal实战
CloudCanal 2.1.0.x 版本开始支持 StarRocks 作为对端的数据迁移同步能力
本文通过 MySQL-StarRocks 的数据迁移同步案例简要介绍这个源端的能力。链路特点:
StarRocks 提供了多种导入方式。CloudCanal 采用了 StreamLoad 的方式进行导入,源端的消息会转成字节流,通过 HTTP 协议发往 StarRocks。
相比直接通过 SQL 写入的方式,StreamLoad 方式会有更好的性能,写入的数据直接经 FE 转发给 BE 处理。如果直接采用 SQL 写入,在 FE 侧,会有额外的 SQL 解析开销。
CloudCanal 提供了 StreamLoad 可配置的丰富参数,包括:
过快的写入会导致 StarRocks 来不及 compaction,从而产生异常。CloudCanal 提供了两个任务参数,支持在一批数据写入后自动停顿一段时间,避免这种问题。参数为:
CloudCanal 任务详情页,点击 参数修改 ,即可调整
StarRocks 作为实时数仓,采用 主键模型 或者 聚合模型 较多。CloudCanal默认采用 主键模型 ,能够实时同步源端的 INSERT / UPDATE / DELETE 。
基于 StreamLoad 的写入方式,实际写入对端的操作均为 INSERT。CloudCanal 同步时会自动将 UPDATE/DELETE 转成INSERT语句,并修改 __ops 值,StarRocks 会自动进行compaction。
StarRocks 不支持 \n 等特殊符号写入,CloudCanal 任务通过参数设置( enableEscape 参数) 开启自动转义。
对于高流量的场景,建议使用 4G 及以上的任务规格配置,并且对相关参数进行调优,调优建立在任务无 GC 问题、对端 StarRocks 没有 compaction 瓶颈的情况下。
本文简单介绍了如何使用 CloudCanal 进行MySQL到StarRocks 的数据迁移同步。各位读者朋友,如果你觉得还不错,请点赞、评论加转发吧。
默认任务参数配置下,如果导入数据过于频繁可能会任务异常,这时候可以调节上文提到的fullBatchWaitTimeMs和increBatchWaitTimeMs参数或者调整StarRocks的Server侧的合并策略。下图为StarRocks官方提供的常见问题FAQ
CloudCanal-免费好用的企业级数据同步工具,欢迎品鉴。
了解更多产品可以查看 官方网站 :
CloudCanal社区 :
Q4: Greenplum集群部署和架构优化,我总结了5000字的心得
最近对离线数仓体系进行了扩容和架构改造,也算是一波三折,出了很多小插曲,有一些改进点对我们来说也是真空地带,通过对比和模拟压测总算是得到了预期的结果,这方面尤其值得一提的是郭运凯同学的敬业,很多前置的工作,优化和应用压测的工作都是他完成的。
整体来说,整个事情的背景是因为服务器硬件过保,刚好借着过保服务器替换的机会来做集群架构的优化和改造。
1.集群架构改造的目标
在之前也总结过目前存在的一些潜在问题,也是本次部署架构改进的目标:
1)之前 的GP segment数量设计过度 ,因为资源限制,过多考虑了功能和性能,对于集群的稳定性和资源平衡性考虑有所欠缺,在每个物理机节点上部署了10个Primary,10个Mirror,一旦1个服务器节点不可用,整个集群几乎无法支撑业务。
2)GP集群 的存储资源和性能的平衡不够 ,GP存储基于RAID-5,如果出现坏盘,磁盘重构的代价比较高,而且重构期间如果再出现坏盘,就会非常被动,而且对于离线数仓的数据质量要求较高,存储容量相对不是很大,所以在存储容量和性能的综合之上,我们选择了RAID-10。
3)集 群的异常场景的恢复需要完善, 集群在异常情况下(如服务器异常宕机,数据节点不可用,服务器后续过保实现节点滚动替换)的故障恢复场景测试不够充分,导致在一些迁移和改造中,相对底气不足,存在一些知识盲区。
4)集群版本过 低 ,功能和性能上存在改进空间。毕竟这个集群是4年前的版本,底层的PG节点的版本也比较旧了,在功能上和性能上都有一定的期望,至少能够与时俱进。
5)操作系统版本升 级 ,之前的操作系统是基于CentOS6,至少需要适配CentOS 7 。
6)集群TPCH 压测验收 ,集群在完成部署之后,需要做一次整体的TPCH压测验收,如果存在明显的问题需要不断调整配置和架构,使得达到预期的性能目标。
此外在应用层面也有一些考虑,总而言之,是希望能够解决绝大多数的痛点问题,无论是在系统层面,还是应用层面,都能上一个台阶。
2.集群规划设计的选型和思考
明确了目标,就是拆分任务来规划设计了,在规划设计方面主要有如下的几个问题:
1)Greenplum的版本选择 ,目前有两个主要的版本类别,一个是开源版(Open Source distribution)和Pivotal官方版,它们的其中一个差异就是官方版需要注册,签署协议,在此基础上还有GPCC等工具可以用,而开源版本可以实现源码编译或者rpm安装,无法配置GPCC。综合来看,我们选择了 开源版本的6.16.2 ,这其中也询问了一些行业朋友,特意选择了几个涉及稳定性bug修复的版本。
2)数据集市的技术选型 ,在数据集市的技术选型方面起初我是比较坚持基于PostgreSQL的模式,而业务侧是希望对于一些较为复杂的逻辑能够通过GP去支撑,一来二去之后,加上我咨询了一些行业朋友的意见,是可以选择基于GP的方案,于是我们就抱着试一试的方式做了压测,所以数据仓库和和数据集市会是两个不同规模体量的GP集群来支撑。
3)GP的容量规划 ,因为之前的节点设计有些过度,所以在数量上我们做了缩减,每台服务器部署12个segment节点,比如一共12台服务器,其中有10台服务器是Segment节点,每台上面部署了6个Primary,6个Mirror,另外2台部署了Master和Standby,就是即(6+6)*10+2,整体的配置情况类似下面的模式。
4)部署架构方案选型 ,部署架构想起来比较容易,但是落实起来有很多的考虑细节,起初考虑GP的Master和Standby节点如果混用还是能够节省一些资源,所以设计的数据仓库和数据集市的部署架构是这样考虑的,但是从走入部署阶段之后,很快就发现这种交叉部署的模式是不可行的,或者说有一些复杂度。
除此之外,在单个GP集群的部署架构层面,还有4类方案考虑。
方案1 :Master,Standby和segment混合部署
方案2 :Master,Standby和segment独立部署,整个集群的节点数会少一些
方案3 :Segment独立部署,Master,Standby虚拟机部署
方案4 :最小化单节点集群部署(这是数据集市最保底的方案)
这方面存在较大的发挥空间,而且总体来说这种验证磨合的成本也相对比较高,实践给我上了一课, 越是想走捷径,越是会让你走一些弯路 ,而且有些时候的优化其实我也不知道改怎么往下走,感觉已经无路可走,所以上面这4种方案其实我们都做了相关的测试和验证。
3.集群架构的详细设计和实践
1)设计详细的部署架构图
在整体规划之上,我设计了如下的部署架构图,每个服务器节点有6个Primary,6个Mirror,服务器两两映射。
2)内核参数优化
按照官方文档的建议和具体的配置情况,我们对内核参数做了如下的配置:
vm.swappiness=10
vm.zone_reclaim_mode = 0
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.dirty_background_ratio = 0 # See System Memory
vm.dirty_ratio = 0
vm.dirty_background_bytes = 1610612736
vm.dirty_bytes = 4294967296
vm.min_free_kbytes = 3943084
vm.overcommit_memory=2
kernel.sem = 500 2048000 200 4096
4.集群部署步骤
1)首先是配置/etc/hosts,需要把所有节点的IP和主机名都整理出来。
2)配置用户,很常规的步骤
groupadd gpadmin
useradd gpadmin -g gpadmin
passwd gpadmin
3)配置sysctl.conf和资源配置
4)使用rpm模式安装
# yum install -y apr apr-util bzip2 krb5-devel zip
# rpm -ivh open-source-greenplum-db-6.16.2-rhel7-x86_64.rpm
5)配置两个host文件,也是为了后面进行统一部署方便,在此建议先开启gpadmin的sudo权限,可以通过gpssh处理一些较为复杂的批量操作
6)通过gpssh-exkeys来打通ssh信任关系,这里需要吐槽这个ssh互信,端口还得是22,否则处理起来很麻烦,需要修改/etc/ssh/sshd_config文件
gpssh-exkeys -f hostlist
7)较为复杂的一步是打包master的Greenplum-db-6.16.2软件,然后分发到各个segment机器中,整个过程涉及文件打包,批量传输和配置,可以借助gpscp和gpssh,比如gpscp传输文件,如下的命令会传输到/tmp目录下
gpscp -f /usr/local/greenplum-db/conf/hostlist /tmp/greenplum-db-6.16.2.tar.gz =:/tmp
或者说在每台服务器上面直接rpm -ivh安装也可以。
8)Master节点需要单独配置相关的目录,而Segment节点的目录可以提前规划好,比如我们把Primary和Mirror放在不同的分区。
mkdir -p /data1/gpdata/gpdatap1
mkdir -p /data1/gpdata/gpdatap2
mkdir -p /data2/gpdata/gpdatam1
mkdir -p /data2/gpdata/gpdatam2
9)整个过程里最关键的就是gpinitsystem_config配置了,因为Segment节点的ID配置和命名,端口区间都是根据一定的规则来动态生成的,所以对于目录的配置需要额外注意。
10)部署GP集群最关键的命令是
gpinitsystem -c gpinitsystem_config -s 【standby_hostname】
其中文件gpinitsystem_config的主要内容如下:
MASTER_HOSTNAME=xxxx
declare -a DATA_DIRECTORY=(/data1/gpdata/gpdatap1 /data1/gpdata/gpdatap2 /data1/gpdata/gpdatap3 /data1/gpdata/gpdatap4 /data1/gpdata/gpdatap5 /data1/gpdata/gpdatap6)
TRUSTED_SHELL=ssh
declare -a MIRROR_DATA_DIRECTORY=(/data2/gpdata/gpdatam1 /data2/gpdata/gpdatam2 /data2/gpdata/gpdatam3 /data2/gpdata/gpdatam4 /data2/gpdata/gpdatam5 /data2/gpdata/gpdatam6)
MACHINE_LIST_FILE=/usr/local/greenplum-db/conf/seg_hosts
整个过程大约5分钟~10分钟以内会完成,在部署过程中建议要查看后端的日志查看是否有异常,异常情况下的体验不是很好,可能会白等。
5.集群部署问题梳理
集群部署中还是有很多细节的问题,太基础的就不提了,基本上就是配置,目录权限等问题,我提另外几个:
1) 资源配置问题 ,如果/etc/security/limits.conf的资源配置不足会在安装时有如下的警告:
2) 网络问题 ,集群部署完成后可以正常操作,但是在查询数据的时候会抛出错误,比如SQL是这样的,看起来很简单:select count(*) from customer,但是会抛出如下的错误:
这个问题的主要原因还是和防火墙配置相关,其实不光需要配置INPUT的权限,还需要配置OUTPUT的权限。
对于数据节点可以开放略大的权限,如:
入口的配置:
-A INPUT -p all -s xxxxx -j ACCEPT
出口的配置:
-A OUTPUT -p all -s xxxxx -j ACCEPT
3)网络配置问题 ,这个问题比较诡异的是,报错和上面是一样的,但是在排除了防火墙配置后,select count(*) from customer;这样的语句是可以执行的,但是执行的等待时间较长,比如表lineitem这表比较大,过亿的数据量,,在10个物理节点时,查询响应时间是10秒,但是4个物理节点,查询响应时间是在90秒,总体删感觉说不过去。
为了排查网络问题,使用gpcheckperf等工具也做过测试,4节点和10节点的基础配置也是相同的。
gpcheckperf -f /usr/local/greenplum-db/conf/seg_hosts -r N -d /tmp
$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#127.0.0.1 test-dbs-gp-128-230
xxxxx.128.238 test-dbs-gp-svr-128-238
xxxxx.128.239 test-dbs-gp-svr-128-239
其中127.0.0.1的这个配置在segment和Master,Standby混部的情况是存在问题的,修正后就没问题了,这个关键的问题也是郭运凯同学发现的。
5.集群故障恢复的测试
集群的故障测试是本次架构设计中的重点内容,所以这一块也是跃跃欲试。
整体上我们包含两个场景,服务器宕机修复后的集群恢复和服务器不可用时的恢复方式。
第一种场景相对比较简单,就是让Segment节点重新加入集群,并且在集群层面将Primary和Mirror的角色互换,而第二种场景相对时间较长一些,主要原因是需要重构数据节点,这个代价基本就就是PG层面的数据恢复了,为了整个测试和恢复能够完整模拟,我们采用了类似的恢复方式,比如宕机修复使用了服务器重启来替代,而服务器不可用则使用了清理数据目录,类似于一台新配置机器的模式。
1)服务器宕机修复后集群恢复
select * from gp_segment_configuration where status!='u';
gprecoverseg -o ./recov
gprecoverseg -r
select * from gp_segment_configuration where status='u'
2)服务器不可用时集群恢复
重构数据节点的过程中,总体来看网络带宽还是使用很充分的。
select * from gp_segment_configuration where status='u'
select * from gp_segment_configuration where status='u' and role!=preferred_role;
gprecoverseg -r
select * from gp_segment_configuration where status='u' and role!=preferred_role;
经过测试,重启节点到数据修复,近50G数据耗时3分钟左右
6.集群优化问题梳理
1)部署架构优化和迭代
对于优化问题,是本次测试中尤其关注,而且争议较多的部分。
首先在做完初步选型后,数仓体系的部署相对是比较顺利的,采用的是第一套方案。
数据集市的集群部分因为节点相对较少,所以就选用了第二套方案
实际测试的过程,因为配置问题导致TPCH的结果没有达到预期。
所以这个阶段也产生了一些疑问和怀疑,一种就是折回第一种方案,但是节点数会少很多,要不就是第三种采用虚拟机的模式部署,最保底的方案则是单节点部署,当然这是最牵强的方案。
这个阶段确实很难,而在上面提到的修复了配置之后,集群好像突然开悟了一般,性能表现不错,很快就完成了100G和1T数据量的TPCH测试。
在后续的改造中,我们也尝试了第三套方案,基于虚拟机的模式,通过测试发现,远没有我们预期的那么理想,在同样的数据节点下,Master和Standby采用物理机和虚拟机,性能差异非常大,这个是出乎我们预料的。比如同样的SQL,方案3执行需要2秒,而方案2则需要80秒,这个差异我们对比了很多指标,最后我个人理解差异还是在网卡部分。
所以经过对比后,还是选择了方案2的混合部署模式。
2)SQL性能优化的分析
此外整个过程的TPCH也为集群的性能表现提供了参考。比如方案2的混合部署模式下,有一条SQL需要18秒,但是相比同类型的集群,可能就只需要2秒钟左右,这块显然是存在问题的。
在排除了系统配置,硬件配置的差异之后,经典的解决办法还是查看执行计划。
性能较差的SQL执行计划:
# explain analyze select count(*)from customer;
QUERY PLAN
Aggregate (cost=0.00..431.00 rows=1 width=8) (actual time=24792.916..24792.916 rows=1 loops=1)
- Gather Motion 36:1 (slice1; segments: 36) (cost=0.00..431.00 rows=1 width=1) (actual time=3.255..16489.394 rows=150000000 loops=1)
- Seq Scan on customer (cost=0.00..431.00 rows=1 width=1) (actual time=0.780..1267.878 rows=4172607 loops=1)
Planning time: 4.466 ms
(slice0) Executor memory: 680K bytes.
(slice1) Executor memory: 218K bytes avg x 36 workers, 218K bytes max (seg0).
Memory used: 2457600kB
Optimizer: Pivotal Optimizer (GPORCA)
Execution time: 24832.611 ms
(9 rows)
Time: 24892.500 ms
性能较好的SQL执行计划:
# explain analyze select count(*)from customer;
QUERY PLAN
Aggregate (cost=0.00..842.08 rows=1 width=8) (actual time=1519.311..1519.311 rows=1 loops=1)
- Gather Motion 36:1 (slice1; segments: 36) (cost=0.00..842.08 rows=1 width=8) (actual time=634.787..1519.214 rows=36 loops=1)
- Aggregate (cost=0.00..842.08 rows=1 width=8) (actual time=1473.296..1473.296 rows=1 loops=1)
- Seq Scan on customer (cost=0.00..834.33 rows=4166667 width=1) (actual time=0.758..438.319 rows=4172607 loops=1)
Planning time: 5.033 ms
(slice0) Executor memory: 176K bytes.
(slice1) Executor memory: 234K bytes avg x 36 workers, 234K bytes max (seg0).
Memory used: 2457600kB
Optimizer: Pivotal Optimizer (GPORCA)
Execution time: 1543.611 ms
(10 rows)
Time: 1549.324 ms
很明显执行计划是被误导了,而误导的因素则是基于统计信息,这个问题的修复很简单:
analyze customer;
但是深究原因,则是在压测时,先是使用了100G压测,压测完之后保留了原来的表结构,直接导入了1T的数据量,导致执行计划这块没有更新。
3)集群配置优化
此外也做了一些集群配置层面的优化,比如对缓存做了调整。
gpconfig -c statement_mem -m 2457600 -v 2457600
gpconfig -c gp_vmem_protect_limit -m 32000 -v 32000
7.集群优化数据
最后来感受下集群的性能:
1)10个物理节点,(6+6)*10+2
tpch_1t=# iming on
Timing is on.
tpch_1t=# select count(*)from customer;
count
-----------
150000000
(1 row)
Time: 1235.801 ms
tpch_1t=# select count(*)from lineitem;
count
------------
5999989709
(1 row)
Time: 10661.756 ms
2)6个物理节点,(6+6)*6
# select count(*)from customer;
count
-----------
150000000
(1 row)
Time: 1346.833 ms
# select count(*)from lineitem;
count
------------
5999989709
(1 row)
Time: 18145.092 ms
3)4个物理节点,(6+6)*4
# select count(*)from customer;
count
-----------
150000000
(1 row)
Time: 1531.621 ms
# select count(*)from lineitem;
count
------------
5999989709
(1 row)
Time: 25072.501 ms
4)TPCH在不通架构模式下的性能比对 ,有19个查询模型,有个别SQL逻辑过于复杂暂时忽略,也是郭运凯同学整理的列表。
在1T基准下的基准测试表现:
Q5: 数据平台建设的方案有哪几种?
1、常规数据仓库
数据仓库的重点,是对数据进行整合,同时也是对业务逻辑的一个梳理。数据仓库虽然也可以打包成SAAS那种Cube一类的东西来提升数据的读取性能,但是数据仓库的作用,更多的是为了解决公司的业务问题。
2、敏捷型数据集市
数据集市也是常见的一种方案,底层的数据产品与分析层绑定,使得应用层可以直接对底层数据产品中的数据进行拖拽式分析。数据集市,主要的优势在于对业务数据进行简单的、快速的整合,实现敏捷建模,并且大幅提升数据的处理速度。
3、MPP(大规模并行处理)架构
进入大数据时代以来,传统的主机计算模式已经不能满足需求了,分布式存储和分布式计算才是王道。大家所熟悉的Hadoop MapReduce框架以及MPP计算框架,都是基于这一背景产生。
MPP架构的代表产品,就是Greenplum。Greenplum的数据库引擎是基于Postgresql的,并且通过Interconnnect神器实现了对同一个集群中多个Postgresql实例的高效协同和并行计算。
4、Hadoop分布式系统架构
当然,大规模分布式系统架构,Hadoop依然站在不可代替的关键位置上。雅虎、Facebook、百度、淘宝等国内外大企,最初都是基于Hadoop来展开的。
Hadoop生态体系庞大,企业基于Hadoop所能实现的需求,也不仅限于数据分析,也包括机器学习、数据挖掘、实时系统等。企业搭建大数据系统平台,Hadoop的大数据处理能力、高可靠性、高容错性、开源性以及低成本,都使得它成为首选。
关于数据平台建设的方案有哪几种,环球青藤小编就和您分享到这里了。如果您对大数据工程有浓厚的兴趣,希望这篇文章可以为您提供帮助。如果您还想了解更多关于数据分析师、大数据工程师的技巧及素材等内容,可以点击本站的其他文章进行学习。






