lnasman
作者lnasman2020-07-13 16:43
行业架构师, 浪潮商用机器企业云创新中心

K1 Power Linux架构在某政府用户异构数据库整合(Presto)场景下的应用实践

字数 4353阅读 5697评论 1赞 1

随着我国社会信息化的飞速发展,特别是以IoT技术以及人工智能技术的飞速发展,行业信息化已经飞速进入到大数据时代,深挖数据价值已经成为政府行业用户布局核心竞争力的另一个重要战场。然而受到这个行业用户原有业务系统架构以及信息系统地理布局等影响,很难实现物理上统一的大数据分析数据库。

  • 行业用户对分析结果有严格的时效性要求,不满足时效性要求的分析结果,毫无意义。传统ETL整合分析思路无法满足数据分析的时效性要求
  • 受到海量的数据生成速度及各地区间网络传输带宽影响,海量数据只能存储在各地市的大数据系统中,无法做到省级单大数据库统一存储处理。

这种由于物理存放位置以及业务系统间隔离所产生的数据割裂为业务数据的全局分析带来非常不利的影响。为了解决上述问题,该用户计划采用数据库异构协同计算解决方案来解决上述问题,该解决方案的核心组件为开源异构数据库整合软件presto。在之前的项目开发测试阶段,用户在实际生产数据中采用X86服务器的测试时发现性能出现明显瓶颈。本项目计划通过采用K1 Power Linux服务器与X86服务器的性能对比分析看K1 Power Linux解决方案在该类型解决方案上的适用性。

1. 数据库异构协同计算平台(Presto)简介

Presto是Facebook开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节,Presto的架构由关系型数据库的架构演化而来。presto之所以能在各个内存计算数据库中脱颖而出,在于以下几点:

  • 清晰的架构,是一个能够独立运行的系统,不依赖于任何其他外部系统。presto自身提供了对集群的监控,可以根据监控信息完成调度。
  • 简单的数据结构,劣势存储,逻辑行,大部分数据都可以轻易的转化成presto所需要的这种数据结构。
  • 丰富的插件接口,完美对接外部存储系统,或者添加自定义的函数
  • 支持SQL操作

Presto的官网地址如下:https://prestodb.io/

Presto的架构如下图所示:

Presto应用系统架构图

Presto应用系统架构图

采用 Presto 方案具有如下技术优势:多数据源、支持 SQL 、扩展性(可以自己扩展新的 connector )、混合计算(同一种数据源的不同库或者表;将多个数据源进行合并)、高新更、流水线( pipeline )等。在本次项目中我们就整合了跨地市的 Hive 、 Hbase 、 Spark 、 MySQL 、 Inspur K-DB 、 Oracle 等多种数据源。具体细节如下表所示:

2. 对比测试的环境准备

为了更好地看出不同计算平台对业务系统业务指标支持方面的不同表现,在项目上线之初,我们有针对性地做了一次对比测试。对比测试的相关配置如下表所示:

软件环境方面,OpenPower服务器与X86服务器环境需要保持一致。具体指标如下:

操作系统:CentOS 7.6 (4.14.0-115.el7a.0.1)
JDK版本:OpenJDK 1.8 64bit
presto版本:v0.215
测试数据量:20亿条原始数据

3. Presto环境的编译与部署

1)安装OpenJDK
yum -y install java-1.8.0-openjdk

2)配置JAVA运行时环境:编辑/etc/profile文件
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.ppc64le
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:.
export PATH=$JAVA_HOME/bin:$PATH

3)下载配置编译环境
yum –y install python git

4) 下载 配置presto源代码
git clone https://github.com/prestosql/presto.git
cd presto
git checkout 0.215

5) 执行maven编译命令:
./mvnw clean install -DskipTests

4. 测试结果分享

单线程数据加载场景与多线程数据加载场景对比


测试结果分析:

通过上述测试我们发现异构协同计算在服务器资源使用上的分析结果如下:

  1. 单线程条件下,K1 power Linux的处理能力是X86服务器性能的约80%;

  2. 在多线程条件下,K1 power Linux 服务器总共有176个物流线程,X86 服务器只有48个物流线程。

因此在整机处理性能上看,K1 power Linux服务器的处理能力是X86服务器的2.73倍。

5. 测试过程中的系统调优

与presto方案本质上数据基于J2EE架构的分布式内存数据库解决方案。因此在系统调优上我们从JVM调优、服务器CPU运行模式调优、服务器CPU与内存亲和性调优、操作系统模块调优等方面进行调优工作的。并且上述调优方法同时实施在两个不同架构的服务器上。以查看调优效果。

5.1 JVM参数调优:

JVM的调优主要体现在对GC方式的调整上,我们在实际测试了几种GC方式后最终选择了G1GC。由于OpenPower服务器对比与X86服务器具有更多的可用物理线程,因此可以在GC线程设置方面比X86更加激进,而且效果更好。实际使用的GC参数如下:

-XX:+UseG1GC -XX:ParallelGCThreads=32 -XX:ConcGCThreads=24 -XX:+AlwaysPreTouch

5.2 CPU运行模式调优:

为了让CPU的工作更有效率,我们在本次测试中将CPU的运行模式调整为了Performance模式。采用Performance模式后可以使服务器在单线程低负载条件下始终运行在3.8GHz的高主频上,单线程性能提升十分明显。调整方法参照下面配置:
cpupower frequency-set -g performance

5.3 服务器CPU与内存亲和性调优:

在具有多CPU的numa架构计算机中,CPU与内存的亲和性问题一直是我们不能忽略的问题,通过numa绑定技术确实可以让应用运行的更有效率。具体操作可以参见” numactl”命令的用方法。

5.4 内存分配模块调优:

在默认状态下,Linux操作系统的内存分配算法是通过glibc模块来提供的。但是在实际应用过程中我们发现glibc的运行效率仍然有提升的空间。我们通过采用jemalloc内存分配模块替代glibc来进行操作系统内存分配、回收的管理,竟然意外地收获了20%+的性能提升。

6. 本次技术实践的技术总结

6.1 本次实践的客户业务意义

我们在使用任何技术的时候,在享受它的好处的同时,也将必然承受它所带来的局限。在分布式数据库及微服务架构、分布式系统大型起到的今天,如何拯救由于微服务化、分布式的应用碎片化带来的数据碎片化,Presto on K1 Power Linux解决方案为我们在异构数据库整合方面打开了一扇大门。

在行业前景方面,无论是在金融行业、政府行业、运营商行业还是互联网行业,只要是采用了多分支机构分布式部署应用架构的场景中,都具有非常广泛的应用前景。是一个非常值得推广和复制的解决方案。他将在以下两个方面解决用户的业务困扰:

多异构数据库整合分析:
用户生产环境中都存在大量的业务数据库,将用户的业务数据割裂开来。传统上只能通过ETL工具进行数据清洗整合,最后进行统一离线分析,速度慢,及时性差。采用Presto方案后,几乎可以实现准实时的数据抽取和及时分析,大大提高了分析类应用对业务的反应时间。大大提升了用户对数据的洞察力。

异地部署多数据库整合分析:
由于很多技术因素的限制,很多用户的业务系统在物理地域上是分布式部署的。这导致了用户数据无法实现统一的数据视图,为全网分析带来很大的技术鸿沟。采用了presto方案以后,可以将不同地域的数据库统一管理,形成全网统一的数据视图,可以有效地解决用户跨地域数据分析的业务痛点。

通过内存计算技术加速分析性能:
通过内存计算技术,可以大大提高数据分析的效率。将很多业务分析场景得到结果的时间周期从数小时减少到数分钟。这一点技术革新在很多对数据时效性敏感的业务场景下,将带来革命性质的变化。例如在公安缉查布控场景下,10分钟的延迟可能对用户带来的就是抓捕成功和罪犯潜逃的差距。在电信或互联网场景下,实时的产品推荐与事后的产品推荐可能带来的是产品销售额方面上的巨大差异。因此也具有十分重要的意义。

6.2 Open Power在Presto应用中为客户带来的业务价值

鉴于Presto数据库分布式、内存性、大并发的业务特点,OpenPower架构可以为Presto方案带来如下价值:

SMT4带来更大的业务并发能力:
单机最高176个物理线程扩展能力,在后续的实际应用中与同等价位X86服务器相比综合性能提升50%

更大的内存带宽带来更小的业务延迟:
同档次服务器内存带宽比X86服务器提升42.4%。在数据加载场景体现尤为明显。在后续的综合应用场景中,操作的系统延迟指标也始终大幅领先X86服务器。

更高的性能带来更好的总体拥有成本:
由于K1 Power Linux服务器单机性能对比X86的碾压式优势,可以在同等算力场景下使K1 Power Linux集群的服务器数量对比X86方案减少1/3。因此可以大幅降低用户的服务器采购成本、网络开销成本、机房空间成本以及服务器功耗空调散热功耗等成本。在大规模应用场景总体拥有成本优势十分明显。

6.3 政府行业用户后续的使用情况

经过与最终客户的并肩战斗和不懈努力,目前该解决方案在该行业用户已经实现了生产落地。经最终用户反馈,使用体验十分良好,经综合性的业务实践发现,其综合性能水平与传统X86服务器相比性能提升可达50%。总功耗降低26%。运维成本也大幅降低。随着该政府用户跨单位,跨部门数据分析整合业务的逐渐深入,在实现数据跨部门跨地域整合后,下一步目标是如何实现安全的跨部门跨地域数据整合。这涉及到了另外一个名为“安全多方可信计算(Secure Multi-Party Computation)”的专有领域。该领域简单讲就是要解决一个百万富翁问题:及有两个百万富翁广坤和赵四,他们想知道他们俩谁更有钱,但是却不想告诉对方自己有多少钱。在这种情况下,如何实现比较。

目前K1 Power Linux正在结合区块链技术进行系列技术探索。相信在不久的将来就会有惊喜提供给大家。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论1 条评论

#jerry8高级运维工程师, 龙盈智达(北京)科技有限公司
2020-08-07 13:51
Power小机和X86机器的价格相差多少?

lnasman@lnasman 不过本文采用的是OpenPower的服务器,这个服务器在价格上是相当哇塞的。整机性价比甚至还要高于X86服务器呢。

2020-08-11 16:47

lnasman@jerry8 单论价格的话确实有差距。不过通过提升使用效率,单台机器的成本和X86相比差距不大了。

2020-08-09 08:25
Ctrl+Enter 发表